From 1ec8f312533a61c0145614eb7c20ba6fb732c0ee Mon Sep 17 00:00:00 2001 From: Hampus Date: Fri, 2 Oct 2026 18:17:41 +0200 Subject: [PATCH] refactor: simplify account standing and verification levels (#3130) --- deploy/self-hosting/.env.example | 3 - deploy/self-hosting/docker-compose.yml | 1 - fluxer_admin/openapi-admin.json | 366 +---- fluxer_admin/src/acl.rs | 8 - fluxer_admin/src/admin_flags.rs | 60 +- fluxer_admin/src/api/admin_api_keys.rs | 9 +- fluxer_admin/src/api/bulk.rs | 16 - fluxer_admin/src/api/generated.rs | 3 - fluxer_admin/src/api/types/common.rs | 6 - fluxer_admin/src/api/users.rs | 30 +- fluxer_admin/src/routes/message_actions.rs | 13 - fluxer_admin/src/routes/user_actions.rs | 21 - .../src/templates/layout_sidebar_nav.rs | 2 - .../src/templates/pages/audit_logs_table.rs | 14 +- .../src/templates/pages/bulk_actions.rs | 68 +- .../pages/guild_detail_tabs/settings.rs | 6 +- .../src/templates/pages/instance_config.rs | 2 +- .../pages/user_detail_tabs/account.rs | 18 - .../pages/user_detail_tabs/overview.rs | 26 - fluxer_admin/tests/api_deserialization.rs | 18 +- fluxer_admin/tests/csrf_legacy_cookie.rs | 3 - fluxer_admin/tests/htmx_acceptance.rs | 17 +- fluxer_admin/tests/notification_writes.rs | 3 - .../parity/fixtures/api/admin_user_me.json | 3 - .../parity/fixtures/api/lookup_user.json | 3 - .../parity/fixtures/api/search_users.json | 3 - .../tests/voice_restriction_writes.rs | 3 - .../src/ElasticsearchIndexDefinitions.ts | 2 - .../src/adapters/ElasticsearchUserAdapter.ts | 5 +- fluxer_api/pkgs/email/src/EmailService.ts | 13 - fluxer_api/pkgs/email/src/IEmailService.ts | 6 - fluxer_api/pkgs/email/src/TestEmailService.ts | 10 - .../email_i18n/EmailI18nLocaleFiles.test.ts | 1 - .../email/src/email_i18n/EmailI18nMessages.ts | 6 +- .../email_i18n/EmailI18nTypes.generated.ts | 1 - .../email/src/email_i18n/EmailI18nTypes.ts | 5 - .../pkgs/email/src/email_i18n/locales/ar.ts | 6 +- .../pkgs/email/src/email_i18n/locales/bg.ts | 6 +- .../pkgs/email/src/email_i18n/locales/cs.ts | 6 +- .../pkgs/email/src/email_i18n/locales/da.ts | 6 +- .../pkgs/email/src/email_i18n/locales/de.ts | 6 +- .../pkgs/email/src/email_i18n/locales/el.ts | 6 +- .../email/src/email_i18n/locales/en-GB.ts | 6 +- .../email/src/email_i18n/locales/es-419.ts | 6 +- .../email/src/email_i18n/locales/es-ES.ts | 6 +- .../pkgs/email/src/email_i18n/locales/fi.ts | 6 +- .../pkgs/email/src/email_i18n/locales/fr.ts | 6 +- .../pkgs/email/src/email_i18n/locales/he.ts | 6 +- .../pkgs/email/src/email_i18n/locales/hi.ts | 6 +- .../pkgs/email/src/email_i18n/locales/hr.ts | 6 +- .../pkgs/email/src/email_i18n/locales/hu.ts | 6 +- .../pkgs/email/src/email_i18n/locales/id.ts | 6 +- .../pkgs/email/src/email_i18n/locales/it.ts | 6 +- .../pkgs/email/src/email_i18n/locales/ja.ts | 6 +- .../pkgs/email/src/email_i18n/locales/ko.ts | 6 +- .../pkgs/email/src/email_i18n/locales/lt.ts | 6 +- .../pkgs/email/src/email_i18n/locales/nl.ts | 6 +- .../pkgs/email/src/email_i18n/locales/no.ts | 6 +- .../pkgs/email/src/email_i18n/locales/pl.ts | 6 +- .../email/src/email_i18n/locales/pt-BR.ts | 6 +- .../pkgs/email/src/email_i18n/locales/ro.ts | 6 +- .../pkgs/email/src/email_i18n/locales/ru.ts | 6 +- .../email/src/email_i18n/locales/sv-SE.ts | 6 +- .../pkgs/email/src/email_i18n/locales/th.ts | 6 +- .../pkgs/email/src/email_i18n/locales/tr.ts | 6 +- .../pkgs/email/src/email_i18n/locales/uk.ts | 6 +- .../pkgs/email/src/email_i18n/locales/vi.ts | 6 +- .../email/src/email_i18n/locales/zh-CN.ts | 6 +- .../email/src/email_i18n/locales/zh-TW.ts | 6 +- .../src/email_i18n/weblate/locales/ar.json | 6 +- .../src/email_i18n/weblate/locales/bg.json | 6 +- .../src/email_i18n/weblate/locales/cs.json | 6 +- .../src/email_i18n/weblate/locales/da.json | 6 +- .../src/email_i18n/weblate/locales/de.json | 6 +- .../src/email_i18n/weblate/locales/el.json | 6 +- .../src/email_i18n/weblate/locales/en-GB.json | 6 +- .../email_i18n/weblate/locales/es-419.json | 6 +- .../src/email_i18n/weblate/locales/es-ES.json | 6 +- .../src/email_i18n/weblate/locales/fi.json | 6 +- .../src/email_i18n/weblate/locales/fr.json | 6 +- .../src/email_i18n/weblate/locales/he.json | 6 +- .../src/email_i18n/weblate/locales/hi.json | 6 +- .../src/email_i18n/weblate/locales/hr.json | 6 +- .../src/email_i18n/weblate/locales/hu.json | 6 +- .../src/email_i18n/weblate/locales/id.json | 6 +- .../src/email_i18n/weblate/locales/it.json | 6 +- .../src/email_i18n/weblate/locales/ja.json | 6 +- .../src/email_i18n/weblate/locales/ko.json | 6 +- .../src/email_i18n/weblate/locales/lt.json | 6 +- .../src/email_i18n/weblate/locales/nl.json | 6 +- .../src/email_i18n/weblate/locales/no.json | 6 +- .../src/email_i18n/weblate/locales/pl.json | 6 +- .../src/email_i18n/weblate/locales/pt-BR.json | 6 +- .../src/email_i18n/weblate/locales/ro.json | 6 +- .../src/email_i18n/weblate/locales/ru.json | 6 +- .../src/email_i18n/weblate/locales/sv-SE.json | 6 +- .../src/email_i18n/weblate/locales/th.json | 6 +- .../src/email_i18n/weblate/locales/tr.json | 6 +- .../src/email_i18n/weblate/locales/uk.json | 6 +- .../src/email_i18n/weblate/locales/vi.json | 6 +- .../src/email_i18n/weblate/locales/zh-CN.json | 6 +- .../src/email_i18n/weblate/locales/zh-TW.json | 6 +- .../src/email_i18n/weblate/messages.json | 6 +- fluxer_api/src/api/Config.test.ts | 38 - fluxer_api/src/api/Config.ts | 1 - .../admin/controllers/BulkAdminController.ts | 16 +- .../admin/controllers/UserAdminController.ts | 99 -- fluxer_api/src/api/admin/models/UserTypes.ts | 4 - .../api/admin/services/AdminUserBanService.ts | 21 +- .../admin/services/AdminUserProfileService.ts | 21 +- .../services/AdminUserSecurityService.ts | 182 +-- .../guild/AdminGuildMembershipService.ts | 1 + .../tests/AdminSearchFieldCoverage.test.ts | 20 +- .../tests/AdminStaffNotifications.test.ts | 24 - .../tests/AdminUserChangeLogAndFlags.test.ts | 109 +- .../UserWriteAdminAuditCases.ts | 64 +- fluxer_api/src/api/app/APILifecycle.ts | 10 - fluxer_api/src/api/app/ControllerRegistry.ts | 3 - fluxer_api/src/api/auth/AuthController.ts | 10 +- fluxer_api/src/api/auth/AuthEmail.ts | 34 +- fluxer_api/src/api/auth/AuthPhone.ts | 147 -- fluxer_api/src/api/auth/AuthRegistration.ts | 2 - fluxer_api/src/api/auth/AuthUtility.ts | 16 +- .../src/api/auth/PhoneVerificationClient.ts | 250 ---- .../src/api/auth/services/SsoService.ts | 3 - .../src/api/auth/tests/AuthTestUtils.ts | 1 - .../tests/BouncedEmailRecoveryFlow.test.ts | 6 +- .../api/auth/tests/CaptchaChallenge.test.ts | 86 +- .../api/auth/tests/EmailChangeFlow.test.ts | 76 +- .../api/auth/tests/EmailRevertFlow.test.ts | 2 - .../EmailVerificationSuspiciousFlags.test.ts | 62 - .../src/api/auth/tests/OriginHandoff.test.ts | 14 - .../tests/PhoneVerificationClient.test.ts | 215 --- .../SecurityFlagsSuspiciousActivity.test.ts | 113 -- .../api/auth/tests/UnclaimedClaimFlow.test.ts | 1 - .../src/api/bluesky/BlueskyOAuthController.ts | 2 + .../controllers/ChannelFollowController.ts | 2 + .../channel/controllers/MessageController.ts | 2 + .../group_dm/GroupDmOperationsService.ts | 8 + .../interaction/MessageReactionService.ts | 2 + .../services/message/MessageEditService.ts | 6 +- .../services/message/MessageSendService.ts | 2 + fluxer_api/src/api/config/APIConfig.ts | 1 - .../api/connection/ConnectionController.ts | 3 + .../src/api/database/types/UserTypes.ts | 6 - fluxer_api/src/api/gif/GifController.test.ts | 1 - .../guild/controllers/GuildBaseController.ts | 2 + .../guild/services/GuildDiscoveryService.ts | 6 +- .../api/guild/services/GuildMemberService.ts | 1 + .../services/data/GuildOperationsService.ts | 14 +- .../member/GuildMemberOperationsService.ts | 7 + .../tests/GuildPhoneVerificationLevel.test.ts | 94 -- .../guild/tests/GuildTemplateImport.test.ts | 2 +- .../activity/AccountChangeEvents.ts | 5 - .../activity/Contract.generated.ts | 42 +- .../activity/tests/ActivityEvents.test.ts | 9 +- .../src/api/instance/InstanceController.ts | 2 +- .../api/instance/SingleCommunityService.ts | 1 + fluxer_api/src/api/invite/InviteService.ts | 2 + .../src/api/middleware/AuthMiddleware.ts | 14 - .../api/middleware/ContentFilterMiddleware.ts | 1 - .../src/api/middleware/ServiceMiddleware.ts | 6 +- .../tests/ContentFilterMiddleware.test.ts | 3 +- fluxer_api/src/api/models/Guild.ts | 6 +- fluxer_api/src/api/models/User.ts | 6 - .../src/api/oauth/ApplicationService.ts | 15 +- .../api/oauth/OAuth2ApplicationsController.ts | 16 +- fluxer_api/src/api/oauth/OAuth2Controller.ts | 16 +- .../src/api/oauth/OAuth2RequestService.ts | 1 + fluxer_api/src/api/openapi/openapi.json | 470 +----- .../rate_limit_configs/AuthRateLimitConfig.ts | 8 - .../rate_limit_configs/UserRateLimitConfig.ts | 8 - .../WebhookRateLimitConfig.ts | 4 - .../src/api/rpc/RpcSessionStartService.ts | 39 +- .../api/search/guild/GuildSearchSerializer.ts | 2 +- .../meilisearch/MeilisearchDomainAdapters.ts | 3 - .../MeilisearchIndexDefinitions.ts | 1 - .../api/search/user/UserSearchSerializer.ts | 1 - .../stripe/services/AgeVerificationService.ts | 10 +- .../stripe/services/StripePremiumService.ts | 1 + .../src/api/test/TestHarnessController.ts | 43 +- .../api/test/search/InMemorySearchProvider.ts | 6 - fluxer_api/src/api/user/AccountLimit.ts | 23 + .../src/api/user/NewConversationLimit.ts | 10 +- fluxer_api/src/api/user/UserHelpers.test.ts | 202 +-- fluxer_api/src/api/user/UserHelpers.ts | 166 --- fluxer_api/src/api/user/UserMappers.ts | 9 +- .../user/controllers/UserAccountController.ts | 79 +- .../user/controllers/UserAuthController.ts | 82 +- .../entrance_sound/EntranceSoundController.ts | 5 + .../repositories/IUserAccountRepository.ts | 3 +- .../repositories/UserAccountRepository.ts | 8 +- .../api/user/repositories/UserRepository.ts | 8 +- .../account/UserAccountRepository.ts | 27 +- .../account/crud/UserDataRepository.ts | 21 +- .../api/user/services/AccountStateApplier.ts | 59 +- .../user/services/CustomStatusValidator.ts | 4 +- .../api/user/services/EmailChangeService.ts | 23 +- .../services/UserAccountLifecycleService.ts | 96 +- .../services/UserAccountProfileService.ts | 1 - .../services/UserAccountRequestService.ts | 62 +- .../api/user/services/UserAccountService.ts | 11 - fluxer_api/src/api/user/services/UserAuth.ts | 7 +- .../user/services/UserAuthRequestService.ts | 81 -- .../api/user/services/UserChannelService.ts | 2 + .../services/UserContactChangeLogService.ts | 7 +- .../api/user/services/UserDeletionService.ts | 1 - .../src/api/user/tests/AccountLimit.test.ts | 134 ++ .../user/tests/NewConversationLimit.test.ts | 2 +- .../api/user/tests/PhoneGateEscape.test.ts | 147 -- ...omizationEmailVerificationRequired.test.ts | 1 - .../SuspiciousFlagsCompareAndSet.test.ts | 41 - .../api/utils/GuildVerificationUtils.test.ts | 56 +- .../src/api/utils/GuildVerificationUtils.ts | 10 - fluxer_api/src/api/voice/VoiceService.ts | 6 - .../src/api/webhook/SmsWebhookForwarder.ts | 57 - .../src/api/webhook/WebhookController.ts | 2 + .../api/webhook/tests/ChannelFollow.test.ts | 16 + .../webhook/tests/SmsWebhookForwarder.test.ts | 51 - .../src/api/worker/AccountActionConsumer.ts | 9 +- fluxer_api/src/api/worker/WorkerLaneConfig.ts | 1 - .../src/api/worker/WorkerTaskRegistry.ts | 2 - .../tasks/ApplicationProcessDeletion.ts | 5 +- .../src/api/worker/tasks/HarvestUserData.ts | 1 - .../BulkUpdateSuspiciousActivityFlags.ts | 90 -- .../tests/AccountActionConsumer.test.ts | 186 +-- ...kUpdateSuspiciousActivityFlagsTask.test.ts | 214 --- fluxer_app/package.json | 1 - .../components/alerts/DmActionErrorModal.tsx | 1 + .../app/components/layout/AppLayout.tsx | 2 - .../components/layout/RequiredActionGate.tsx | 42 - .../nagbars/EmailVerificationNagbar.tsx | 49 +- .../src/features/app/constants/Endpoints.ts | 5 - .../src/features/app/state/RuntimeConfig.ts | 6 +- .../components/modals/RequiredActionFlow.ts | 161 --- .../modals/RequiredActionModal.module.css | 234 --- .../components/modals/RequiredActionModal.tsx | 946 ------------ .../RequiredActionDescriptors.ts | 638 --------- .../required_action/RequiredActionEmail.tsx | 463 ------ .../RequiredActionEscapeCopy.ts | 80 -- .../required_action/RequiredActionPhone.tsx | 481 ------- .../required_action/RequiredActionShared.tsx | 549 ------- .../required_action/RequiredActionTypes.ts | 79 - .../auth/components/pages/EmailRevertPage.tsx | 4 +- .../src/features/auth/state/AuthFlow.ts | 3 - .../channel/components/MessageActionUtils.tsx | 2 + .../components/VerificationBarrier.tsx | 3 - .../GroupDmRecipientErrorModalUtils.tsx | 6 +- .../components/barriers/BarrierComponents.tsx | 50 +- .../DeveloperToolsContextMenu.tsx | 5 +- .../developer_tools/DeveloperOptionLabels.ts | 46 - .../developer_tools/MockingMenu.tsx | 109 +- .../developer_tools/OptionPresets.ts | 61 +- .../developer_tools/ResetOptions.ts | 7 - .../components/channel_view/DMChannelView.tsx | 4 + .../channel_view/GuildChannelView.tsx | 12 +- .../channel_tabs/ChannelWebhooksTab.tsx | 2 + .../devtools/state/DeveloperOptions.ts | 25 +- .../commands/DiscoveryJoinCommands.tsx | 7 +- .../features/gateway/events/GatewayReady.ts | 4 - .../modals/guild_tabs/GuildModerationTab.tsx | 27 +- .../features/guild/state/GuildVerification.ts | 9 - .../audit_log/AuditLogGuildMessages.ts | 2 +- .../audit_log/AuditLogGuildPresentation.ts | 4 +- .../audit_log/AuditLogSharedMessages.ts | 4 - .../src/features/i18n/locales/ar/messages.po | 1269 ++++------------ .../locales/auto-i18n-reviewed-unchanged.json | 76 +- .../src/features/i18n/locales/bg/messages.po | 1269 ++++------------ .../src/features/i18n/locales/cs/messages.po | 1269 ++++------------ .../src/features/i18n/locales/da/messages.po | 1269 ++++------------ .../src/features/i18n/locales/de/messages.po | 1269 ++++------------ .../src/features/i18n/locales/el/messages.po | 1269 ++++------------ .../features/i18n/locales/en-GB/messages.po | 1271 ++++------------- .../features/i18n/locales/en-US/messages.po | 1269 ++++------------ .../features/i18n/locales/es-419/messages.po | 1269 ++++------------ .../features/i18n/locales/es-ES/messages.po | 1269 ++++------------ .../src/features/i18n/locales/fi/messages.po | 1269 ++++------------ .../src/features/i18n/locales/fr/messages.po | 1269 ++++------------ .../src/features/i18n/locales/he/messages.po | 1269 ++++------------ .../src/features/i18n/locales/hi/messages.po | 1269 ++++------------ .../src/features/i18n/locales/hr/messages.po | 1269 ++++------------ .../src/features/i18n/locales/hu/messages.po | 1269 ++++------------ .../src/features/i18n/locales/id/messages.po | 1269 ++++------------ .../src/features/i18n/locales/it/messages.po | 1269 ++++------------ .../src/features/i18n/locales/ja/messages.po | 1269 ++++------------ .../src/features/i18n/locales/ko/messages.po | 1269 ++++------------ .../src/features/i18n/locales/lt/messages.po | 1269 ++++------------ .../src/features/i18n/locales/nl/messages.po | 1269 ++++------------ .../src/features/i18n/locales/no/messages.po | 1269 ++++------------ .../src/features/i18n/locales/pl/messages.po | 1269 ++++------------ .../features/i18n/locales/pt-BR/messages.po | 1269 ++++------------ .../src/features/i18n/locales/ro/messages.po | 1269 ++++------------ .../src/features/i18n/locales/ru/messages.po | 1269 ++++------------ .../features/i18n/locales/sv-SE/messages.po | 1269 ++++------------ .../src/features/i18n/locales/th/messages.po | 1269 ++++------------ .../src/features/i18n/locales/tr/messages.po | 1269 ++++------------ .../src/features/i18n/locales/uk/messages.po | 1269 ++++------------ .../src/features/i18n/locales/vi/messages.po | 1269 ++++------------ .../features/i18n/locales/zh-CN/messages.po | 1269 ++++------------ .../features/i18n/locales/zh-TW/messages.po | 1269 ++++------------ .../invite/commands/InviteCommands.tsx | 13 +- .../messaging/commands/MessageCommands.tsx | 9 +- .../messaging/commands/ReactionCommands.tsx | 9 +- .../components/modals/ForwardModal.tsx | 6 + .../features/messaging/state/MessageQueue.tsx | 6 +- .../features/user/commands/UserCommands.ts | 134 -- .../modals/BouncedEmailChangeModal.tsx | 219 +++ .../modals/CustomStatusBottomSheet.tsx | 3 + .../components/modals/CustomStatusModal.tsx | 3 + .../modals/PhoneAddModal.module.css | 81 -- .../user/components/modals/PhoneAddModal.tsx | 462 ------ .../components/modals/tabs/MyProfileTab.tsx | 13 +- .../modals/tabs/hooks/useEntranceSound.ts | 6 +- fluxer_app/src/features/user/models/User.ts | 49 +- .../src/features/user/state/CountryCode.ts | 21 - fluxer_app/src/features/user/state/Users.ts | 3 +- .../features/user/utils/AccountLimitUtils.ts | 38 + .../VoiceEngineV2AppScreenShareWiring.test.ts | 2 +- fluxer_app/src/media/data/CountryCodes.ts | 281 ---- fluxer_docs/astro.config.ts | 1 - fluxer_docs/scripts/VerifyDocsCoverage.ts | 16 +- fluxer_docs/scripts/VerifyDocsStyle.ts | 9 +- .../src/content/docs/admin-api/api-keys.mdx | 4 +- .../src/content/docs/admin-api/bulk-jobs.mdx | 21 +- .../src/content/docs/admin-api/index.mdx | 13 +- .../src/content/docs/admin-api/instance.mdx | 2 +- .../src/content/docs/admin-api/jobs.mdx | 2 +- .../src/content/docs/admin-api/users.mdx | 230 +-- .../src/content/docs/authentication.md | 19 +- .../src/content/docs/gateway/commands.md | 2 +- .../content/docs/http-api/applications.mdx | 2 +- .../content/docs/http-api/authentication.mdx | 12 +- .../src/content/docs/http-api/channels.mdx | 1 + .../src/content/docs/http-api/connections.mdx | 5 +- .../src/content/docs/http-api/discovery.mdx | 9 +- .../content/docs/http-api/entrance-sounds.mdx | 2 + .../src/content/docs/http-api/errors.md | 80 +- .../src/content/docs/http-api/gifs.mdx | 5 - .../content/docs/http-api/guild-members.mdx | 1 + .../src/content/docs/http-api/guilds.mdx | 8 +- .../src/content/docs/http-api/index.md | 3 +- .../src/content/docs/http-api/instance.mdx | 4 +- .../src/content/docs/http-api/invites.mdx | 1 + .../src/content/docs/http-api/memes.mdx | 7 - .../src/content/docs/http-api/messages.mdx | 11 +- .../src/content/docs/http-api/oauth2.mdx | 2 +- .../src/content/docs/http-api/read-states.mdx | 4 +- .../src/content/docs/http-api/reports.mdx | 3 - .../src/content/docs/http-api/search.mdx | 1 - .../src/content/docs/http-api/themes.mdx | 1 - .../src/content/docs/http-api/unfurl.mdx | 2 +- .../src/content/docs/http-api/users.mdx | 101 +- .../content/docs/http-api/users/content.mdx | 2 +- .../docs/http-api/users/current-user.mdx | 11 +- .../docs/http-api/users/data-harvest.mdx | 2 +- .../http-api/users/email-and-password.mdx | 14 +- .../src/content/docs/http-api/users/mfa.mdx | 2 +- .../src/content/docs/http-api/users/notes.mdx | 2 +- .../http-api/users/phone-verification.mdx | 320 ----- .../docs/http-api/users/private-channels.mdx | 3 +- .../http-api/users/push-notifications.mdx | 2 +- .../docs/http-api/users/relationships.mdx | 2 +- .../docs/http-api/users/settings-protobuf.md | 1 - .../content/docs/http-api/users/settings.mdx | 5 +- .../src/content/docs/http-api/webhooks.mdx | 18 +- .../content/docs/operator/configuration.mdx | 6 +- .../src/content/docs/topics/captcha.md | 2 - .../src/content/docs/topics/rate-limits.md | 8 +- fluxer_users/src/shard_impl.rs | 14 +- fluxer_users/src/types.rs | 4 - packages/config/src/MasterConfig.ts | 1 - .../__tests__/EnvironmentOverrides.test.ts | 9 - .../src/config_loader/EnvironmentOverrides.ts | 1 - packages/constants/src/AdminACLs.ts | 4 - packages/constants/src/ApiErrorCodes.ts | 19 +- packages/constants/src/GuildConstants.test.ts | 31 +- packages/constants/src/GuildConstants.ts | 9 +- packages/constants/src/UserConstants.ts | 56 +- .../constants/src/ValidationErrorCodes.ts | 1 - .../errors/src/__tests__/DomainErrors.test.ts | 26 +- .../GuildPhoneVerificationRequiredError.ts | 12 - .../domains/auth/InvalidPhoneNumberError.ts | 12 - .../auth/InvalidPhoneVerificationCodeError.ts | 12 - .../src/domains/auth/PhoneAlreadyUsedError.ts | 12 - .../auth/PhoneCountryNotSupportedError.ts | 12 - .../PhoneInboundVerificationRequiredError.ts | 12 - .../auth/PhoneLookupUnavailableError.ts | 12 - .../auth/PhoneNumberNotInServiceError.ts | 12 - .../domains/auth/PhoneNumberNotMobileError.ts | 12 - .../auth/PhoneVerificationNeedsReviewError.ts | 12 - .../auth/PhoneVerificationRequiredError.ts | 12 - .../auth/SmsVerificationUnavailableError.ts | 10 - .../core/InvalidSuspiciousFlagsFormatError.ts | 12 - .../core/UnknownSuspiciousFlagError.ts | 10 - .../AccountLimitedError.ts} | 6 +- .../user/AccountSuspiciousActivityError.ts | 17 - .../user/PhoneGateEscapeUnavailableError.ts | 12 - packages/errors/src/i18n/ErrorCodeMappings.ts | 20 +- packages/errors/src/i18n/ErrorI18n.test.ts | 65 +- packages/errors/src/i18n/ErrorI18nMessages.ts | 25 +- packages/errors/src/i18n/locales/ar.ts | 19 +- packages/errors/src/i18n/locales/bg.ts | 19 +- packages/errors/src/i18n/locales/cs.ts | 19 +- packages/errors/src/i18n/locales/da.ts | 19 +- packages/errors/src/i18n/locales/de.ts | 19 +- packages/errors/src/i18n/locales/el.ts | 19 +- packages/errors/src/i18n/locales/en-GB.ts | 19 +- packages/errors/src/i18n/locales/es-419.ts | 19 +- packages/errors/src/i18n/locales/es-ES.ts | 19 +- packages/errors/src/i18n/locales/fi.ts | 19 +- packages/errors/src/i18n/locales/fr.ts | 19 +- packages/errors/src/i18n/locales/he.ts | 19 +- packages/errors/src/i18n/locales/hi.ts | 19 +- packages/errors/src/i18n/locales/hr.ts | 19 +- packages/errors/src/i18n/locales/hu.ts | 19 +- packages/errors/src/i18n/locales/id.ts | 19 +- packages/errors/src/i18n/locales/it.ts | 19 +- packages/errors/src/i18n/locales/ja.ts | 19 +- packages/errors/src/i18n/locales/ko.ts | 19 +- packages/errors/src/i18n/locales/lt.ts | 19 +- packages/errors/src/i18n/locales/nl.ts | 19 +- packages/errors/src/i18n/locales/no.ts | 19 +- packages/errors/src/i18n/locales/pl.ts | 19 +- packages/errors/src/i18n/locales/pt-BR.ts | 19 +- packages/errors/src/i18n/locales/ro.ts | 19 +- packages/errors/src/i18n/locales/ru.ts | 19 +- packages/errors/src/i18n/locales/sv-SE.ts | 19 +- packages/errors/src/i18n/locales/th.ts | 19 +- packages/errors/src/i18n/locales/tr.ts | 19 +- packages/errors/src/i18n/locales/uk.ts | 19 +- packages/errors/src/i18n/locales/vi.ts | 19 +- packages/errors/src/i18n/locales/zh-CN.ts | 19 +- packages/errors/src/i18n/locales/zh-TW.ts | 19 +- .../errors/src/i18n/weblate/locales/ar.json | 19 +- .../errors/src/i18n/weblate/locales/bg.json | 19 +- .../errors/src/i18n/weblate/locales/cs.json | 19 +- .../errors/src/i18n/weblate/locales/da.json | 19 +- .../errors/src/i18n/weblate/locales/de.json | 19 +- .../errors/src/i18n/weblate/locales/el.json | 19 +- .../src/i18n/weblate/locales/en-GB.json | 19 +- .../src/i18n/weblate/locales/es-419.json | 19 +- .../src/i18n/weblate/locales/es-ES.json | 19 +- .../errors/src/i18n/weblate/locales/fi.json | 19 +- .../errors/src/i18n/weblate/locales/fr.json | 19 +- .../errors/src/i18n/weblate/locales/he.json | 19 +- .../errors/src/i18n/weblate/locales/hi.json | 19 +- .../errors/src/i18n/weblate/locales/hr.json | 19 +- .../errors/src/i18n/weblate/locales/hu.json | 19 +- .../errors/src/i18n/weblate/locales/id.json | 19 +- .../errors/src/i18n/weblate/locales/it.json | 19 +- .../errors/src/i18n/weblate/locales/ja.json | 19 +- .../errors/src/i18n/weblate/locales/ko.json | 19 +- .../errors/src/i18n/weblate/locales/lt.json | 19 +- .../errors/src/i18n/weblate/locales/nl.json | 19 +- .../errors/src/i18n/weblate/locales/no.json | 19 +- .../errors/src/i18n/weblate/locales/pl.json | 19 +- .../src/i18n/weblate/locales/pt-BR.json | 19 +- .../errors/src/i18n/weblate/locales/ro.json | 19 +- .../errors/src/i18n/weblate/locales/ru.json | 19 +- .../src/i18n/weblate/locales/sv-SE.json | 19 +- .../errors/src/i18n/weblate/locales/th.json | 19 +- .../errors/src/i18n/weblate/locales/tr.json | 19 +- .../errors/src/i18n/weblate/locales/uk.json | 19 +- .../errors/src/i18n/weblate/locales/vi.json | 19 +- .../src/i18n/weblate/locales/zh-CN.json | 19 +- .../src/i18n/weblate/locales/zh-TW.json | 19 +- .../errors/src/i18n/weblate/messages.json | 19 +- packages/openapi/src/OpenAPITypes.ts | 1 - .../openapi/src/extractors/RouteExtractor.ts | 2 - .../__tests__/RouteDiscovery.test.ts | 1 - .../src/generator/OpenAPIOperationBuilder.ts | 2 +- .../user/preferences/v1/preferences.proto | 2 +- .../contracts/search/SearchDocumentTypes.ts | 2 - .../src/domains/admin/AdminBulkSchemas.ts | 7 - .../src/domains/admin/AdminGuildSchemas.ts | 4 +- .../src/domains/admin/AdminUserSchemas.ts | 70 - .../src/domains/admin/CaptchaSchemas.test.ts | 2 +- .../schema/src/domains/auth/AuthSchemas.ts | 62 +- .../src/domains/guild/GuildRequestSchemas.ts | 4 +- .../src/domains/instance/InstanceSchemas.ts | 4 +- .../src/domains/user/UserResponseSchemas.ts | 44 +- .../user/preferences/v1/preferences_pb.ts | 7 +- .../schema/src/primitives/GuildValidators.ts | 8 +- .../schema/src/primitives/UserValidators.ts | 8 - .../primitives/tests/GuildValidators.test.ts | 17 + .../primitives/tests/UserValidators.test.ts | 35 - pnpm-lock.yaml | 11 - pnpm-workspace.yaml | 1 - 488 files changed, 10390 insertions(+), 47117 deletions(-) delete mode 100644 fluxer_api/src/api/auth/AuthPhone.ts delete mode 100644 fluxer_api/src/api/auth/PhoneVerificationClient.ts delete mode 100644 fluxer_api/src/api/auth/tests/EmailVerificationSuspiciousFlags.test.ts delete mode 100644 fluxer_api/src/api/auth/tests/PhoneVerificationClient.test.ts delete mode 100644 fluxer_api/src/api/auth/tests/SecurityFlagsSuspiciousActivity.test.ts delete mode 100644 fluxer_api/src/api/guild/tests/GuildPhoneVerificationLevel.test.ts create mode 100644 fluxer_api/src/api/user/AccountLimit.ts create mode 100644 fluxer_api/src/api/user/tests/AccountLimit.test.ts delete mode 100644 fluxer_api/src/api/user/tests/PhoneGateEscape.test.ts delete mode 100644 fluxer_api/src/api/user/tests/SuspiciousFlagsCompareAndSet.test.ts delete mode 100644 fluxer_api/src/api/webhook/SmsWebhookForwarder.ts delete mode 100644 fluxer_api/src/api/webhook/tests/SmsWebhookForwarder.test.ts delete mode 100644 fluxer_api/src/api/worker/tasks/admin_bulk/BulkUpdateSuspiciousActivityFlags.ts delete mode 100644 fluxer_api/src/api/worker/tests/BulkUpdateSuspiciousActivityFlagsTask.test.ts delete mode 100644 fluxer_app/src/features/app/components/layout/RequiredActionGate.tsx delete mode 100644 fluxer_app/src/features/auth/components/modals/RequiredActionFlow.ts delete mode 100644 fluxer_app/src/features/auth/components/modals/RequiredActionModal.module.css delete mode 100644 fluxer_app/src/features/auth/components/modals/RequiredActionModal.tsx delete mode 100644 fluxer_app/src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts delete mode 100644 fluxer_app/src/features/auth/components/modals/required_action/RequiredActionEmail.tsx delete mode 100644 fluxer_app/src/features/auth/components/modals/required_action/RequiredActionEscapeCopy.ts delete mode 100644 fluxer_app/src/features/auth/components/modals/required_action/RequiredActionPhone.tsx delete mode 100644 fluxer_app/src/features/auth/components/modals/required_action/RequiredActionShared.tsx delete mode 100644 fluxer_app/src/features/auth/components/modals/required_action/RequiredActionTypes.ts create mode 100644 fluxer_app/src/features/user/components/modals/BouncedEmailChangeModal.tsx delete mode 100644 fluxer_app/src/features/user/components/modals/PhoneAddModal.module.css delete mode 100644 fluxer_app/src/features/user/components/modals/PhoneAddModal.tsx delete mode 100644 fluxer_app/src/features/user/state/CountryCode.ts create mode 100644 fluxer_app/src/features/user/utils/AccountLimitUtils.ts delete mode 100644 fluxer_app/src/media/data/CountryCodes.ts delete mode 100644 fluxer_docs/src/content/docs/http-api/users/phone-verification.mdx delete mode 100644 packages/errors/src/domains/auth/GuildPhoneVerificationRequiredError.ts delete mode 100644 packages/errors/src/domains/auth/InvalidPhoneNumberError.ts delete mode 100644 packages/errors/src/domains/auth/InvalidPhoneVerificationCodeError.ts delete mode 100644 packages/errors/src/domains/auth/PhoneAlreadyUsedError.ts delete mode 100644 packages/errors/src/domains/auth/PhoneCountryNotSupportedError.ts delete mode 100644 packages/errors/src/domains/auth/PhoneInboundVerificationRequiredError.ts delete mode 100644 packages/errors/src/domains/auth/PhoneLookupUnavailableError.ts delete mode 100644 packages/errors/src/domains/auth/PhoneNumberNotInServiceError.ts delete mode 100644 packages/errors/src/domains/auth/PhoneNumberNotMobileError.ts delete mode 100644 packages/errors/src/domains/auth/PhoneVerificationNeedsReviewError.ts delete mode 100644 packages/errors/src/domains/auth/PhoneVerificationRequiredError.ts delete mode 100644 packages/errors/src/domains/auth/SmsVerificationUnavailableError.ts delete mode 100644 packages/errors/src/domains/core/InvalidSuspiciousFlagsFormatError.ts delete mode 100644 packages/errors/src/domains/core/UnknownSuspiciousFlagError.ts rename packages/errors/src/domains/{auth/PhoneAddNotEligibleError.ts => user/AccountLimitedError.ts} (63%) delete mode 100644 packages/errors/src/domains/user/AccountSuspiciousActivityError.ts delete mode 100644 packages/errors/src/domains/user/PhoneGateEscapeUnavailableError.ts diff --git a/deploy/self-hosting/.env.example b/deploy/self-hosting/.env.example index 941e3a567..d533e9f6f 100644 --- a/deploy/self-hosting/.env.example +++ b/deploy/self-hosting/.env.example @@ -160,9 +160,6 @@ MEILI_MASTER_KEY=CHANGE_ME # api.pwnedpasswords.com. #FLUXER_BREACHED_PASSWORD_CHECK_ENABLED=false #FLUXER_BLOCKLIST_FEEDS_ENABLED=false -# Phone verification needs your own responder on the rpc.phone.v1 NATS -# subjects. Off unless turned on. -#FLUXER_PHONE_VERIFICATION_ENABLED=false # A local path, or an s3:// URL read with the S3 credentials of this file. #FLUXER_GEOIP_DB_PATH= diff --git a/deploy/self-hosting/docker-compose.yml b/deploy/self-hosting/docker-compose.yml index fbede9bf2..abc0f4941 100644 --- a/deploy/self-hosting/docker-compose.yml +++ b/deploy/self-hosting/docker-compose.yml @@ -33,7 +33,6 @@ x-fluxer-env: &fluxer-env FLUXER_APP_ORIGIN_ALIASES: ${FLUXER_APP_ORIGIN_ALIASES:-} FLUXER_BREACHED_PASSWORD_CHECK_ENABLED: ${FLUXER_BREACHED_PASSWORD_CHECK_ENABLED:-} FLUXER_BLOCKLIST_FEEDS_ENABLED: ${FLUXER_BLOCKLIST_FEEDS_ENABLED:-} - FLUXER_PHONE_VERIFICATION_ENABLED: ${FLUXER_PHONE_VERIFICATION_ENABLED:-} FLUXER_GEOIP_DB_PATH: ${FLUXER_GEOIP_DB_PATH:-} FLUXER_API_ENDPOINT: ${FLUXER_API_ENDPOINT:-} diff --git a/fluxer_admin/openapi-admin.json b/fluxer_admin/openapi-admin.json index c6b2fe3bb..75fa66a13 100644 --- a/fluxer_admin/openapi-admin.json +++ b/fluxer_admin/openapi-admin.json @@ -1683,7 +1683,7 @@ "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, - "description": "Enqueue one background administrative job. The `task` discriminator selects both the body variant and the ACL evaluated for the request: `update_user_flags` needs bulk:update:user_flags, `update_suspicious_activity_flags` needs bulk:update:suspicious_activity, `update_guild_features` needs bulk:update:guild_features, `add_guild_members` needs bulk:add:guild_members, `schedule_user_deletion` needs bulk:delete:users, and `delete_user_messages` needs bulk:delete:user_messages. Returns a job_id immediately; observe progress at /admin/jobs/:job_id.", + "description": "Enqueue one background administrative job. The `task` discriminator selects both the body variant and the ACL evaluated for the request: `update_user_flags` needs bulk:update:user_flags, `update_guild_features` needs bulk:update:guild_features, `add_guild_members` needs bulk:add:guild_members, `schedule_user_deletion` needs bulk:delete:users, and `delete_user_messages` needs bulk:delete:user_messages. Returns a job_id immediately; observe progress at /admin/jobs/:job_id.", "security": [{"adminApiKey": []}], "requestBody": { "required": true, @@ -7190,74 +7190,6 @@ ] } }, - "/admin/users/{user_id}/phone-verification": { - "put": { - "operationId": "update_admin_user_phone_verification", - "summary": "Update user phone verification flag", - "tags": ["Admin"], - "responses": { - "200": { - "description": "Success", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}} - }, - "400": { - "description": "Bad Request - The request was malformed or contained invalid data", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "401": { - "description": "Unauthorized - Authentication is required or the token is invalid", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "403": { - "description": "Forbidden - You do not have permission to perform this action", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "429": { - "description": "Too Many Requests - You are being rate limited", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, - "headers": { - "Retry-After": { - "description": "Number of seconds to wait before retrying (only on 429)", - "schema": {"type": "integer"} - }, - "X-RateLimit-Limit": { - "description": "The number of requests that can be made in the current window", - "schema": {"type": "integer"} - }, - "X-RateLimit-Remaining": { - "description": "The number of remaining requests that can be made", - "schema": {"type": "integer"} - }, - "X-RateLimit-Reset": { - "description": "Unix timestamp when the rate limit resets", - "schema": {"type": "integer"} - } - } - }, - "500": { - "description": "Internal Server Error - An unexpected error occurred", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - } - }, - "description": "Set whether a user is treated as having completed phone verification. This is the only supported path for clearing the irreversible user-facing phone verification flag. Requires USER_UPDATE_PHONE permission.", - "security": [{"adminApiKey": []}], - "parameters": [ - { - "name": "user_id", - "in": "path", - "required": true, - "schema": {"description": "The ID of the user", "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]}, - "description": "The ID of the user" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": {"schema": {"$ref": "#/components/schemas/AdminUserPhoneVerificationRequest"}} - } - } - } - }, "/admin/users/{user_id}/premium-flags": { "patch": { "operationId": "update_admin_user_premium_flags", @@ -7851,142 +7783,6 @@ ] } }, - "/admin/users/{user_id}/suspicious-activity-disablement": { - "put": { - "operationId": "disable_admin_user_suspicious", - "summary": "Disable user for suspicious activity", - "tags": ["Admin"], - "responses": { - "200": { - "description": "Success", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}} - }, - "400": { - "description": "Bad Request - The request was malformed or contained invalid data", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "401": { - "description": "Unauthorized - Authentication is required or the token is invalid", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "403": { - "description": "Forbidden - You do not have permission to perform this action", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "429": { - "description": "Too Many Requests - You are being rate limited", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, - "headers": { - "Retry-After": { - "description": "Number of seconds to wait before retrying (only on 429)", - "schema": {"type": "integer"} - }, - "X-RateLimit-Limit": { - "description": "The number of requests that can be made in the current window", - "schema": {"type": "integer"} - }, - "X-RateLimit-Remaining": { - "description": "The number of remaining requests that can be made", - "schema": {"type": "integer"} - }, - "X-RateLimit-Reset": { - "description": "Unix timestamp when the rate limit resets", - "schema": {"type": "integer"} - } - } - }, - "500": { - "description": "Internal Server Error - An unexpected error occurred", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - } - }, - "description": "Disable user account due to suspicious activity or abuse. Account is locked pending review. User cannot access services. Emails the user unless notify_user is false. Creates audit log entry. Requires USER_DISABLE_SUSPICIOUS permission.", - "security": [{"adminApiKey": []}], - "parameters": [ - { - "name": "user_id", - "in": "path", - "required": true, - "schema": {"description": "The ID of the user", "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]}, - "description": "The ID of the user" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": {"schema": {"$ref": "#/components/schemas/AdminUserSuspiciousDisableRequest"}} - } - } - } - }, - "/admin/users/{user_id}/suspicious-activity-flags": { - "put": { - "operationId": "update_admin_user_suspicious_activity_flags", - "summary": "Update suspicious activity flags", - "tags": ["Admin"], - "responses": { - "200": { - "description": "Success", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMutationResponse"}}} - }, - "400": { - "description": "Bad Request - The request was malformed or contained invalid data", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "401": { - "description": "Unauthorized - Authentication is required or the token is invalid", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "403": { - "description": "Forbidden - You do not have permission to perform this action", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "429": { - "description": "Too Many Requests - You are being rate limited", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, - "headers": { - "Retry-After": { - "description": "Number of seconds to wait before retrying (only on 429)", - "schema": {"type": "integer"} - }, - "X-RateLimit-Limit": { - "description": "The number of requests that can be made in the current window", - "schema": {"type": "integer"} - }, - "X-RateLimit-Remaining": { - "description": "The number of remaining requests that can be made", - "schema": {"type": "integer"} - }, - "X-RateLimit-Reset": { - "description": "Unix timestamp when the rate limit resets", - "schema": {"type": "integer"} - } - } - }, - "500": { - "description": "Internal Server Error - An unexpected error occurred", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - } - }, - "description": "Flag user as suspicious for account abuse, fraud, or policy violations. Enables enforcement actions and rate limiting. Creates audit log entry. Requires USER_UPDATE_SUSPICIOUS_ACTIVITY permission.", - "security": [{"adminApiKey": []}], - "parameters": [ - { - "name": "user_id", - "in": "path", - "required": true, - "schema": {"description": "The ID of the user", "allOf": [{"$ref": "#/components/schemas/SnowflakeType"}]}, - "description": "The ID of the user" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": {"schema": {"$ref": "#/components/schemas/AdminUserSuspiciousActivityFlagsRequest"}} - } - } - } - }, "/admin/users/{user_id}/system-status": { "put": { "operationId": "set_admin_user_system_status", @@ -9506,31 +9302,6 @@ }, "required": ["system"] }, - "AdminUserSuspiciousActivityFlagsRequest": { - "type": "object", - "properties": { - "flags": { - "description": "Bitmask of suspicious activity flags", - "allOf": [{"$ref": "#/components/schemas/SuspiciousActivityFlags"}] - } - }, - "required": ["flags"] - }, - "AdminUserSuspiciousDisableRequest": { - "type": "object", - "properties": { - "flags": { - "description": "Bitmask of suspicious activity flags that triggered the disable", - "allOf": [{"$ref": "#/components/schemas/SuspiciousActivityFlags"}] - }, - "notify_user": { - "default": true, - "description": "Whether to email the user that the account was disabled", - "type": "boolean" - } - }, - "required": ["flags"] - }, "AdminStorePurchaseListResponse": { "type": "object", "properties": { @@ -9685,16 +9456,6 @@ } } }, - "AdminUserPhoneVerificationRequest": { - "type": "object", - "properties": { - "has_verified_phone": { - "type": "boolean", - "description": "Whether the user should be treated as having completed phone verification" - } - }, - "required": ["has_verified_phone"] - }, "DeleteAllUserMessagesResponse": { "type": "object", "properties": { @@ -10110,7 +9871,7 @@ "type": "object", "properties": { "acls": { - "maxItems": 108, + "maxItems": 104, "type": "array", "items": {"$ref": "#/components/schemas/AdminAclType"}, "description": "List of access control permissions to assign" @@ -12436,37 +12197,6 @@ }, "required": ["user_ids", "task"] }, - { - "type": "object", - "properties": { - "user_ids": { - "maxItems": 1000, - "type": "array", - "items": {"$ref": "#/components/schemas/SnowflakeType"}, - "description": "List of user IDs to update" - }, - "add_flags": { - "default": [], - "description": "Suspicious activity flag names to add to all specified users", - "maxItems": 32, - "type": "array", - "items": {"type": "string"} - }, - "remove_flags": { - "default": [], - "description": "Suspicious activity flag names to remove from all specified users", - "maxItems": 32, - "type": "array", - "items": {"type": "string"} - }, - "task": { - "type": "string", - "enum": ["update_suspicious_activity_flags"], - "description": "Adds and removes verification requirements on every targeted user" - } - }, - "required": ["user_ids", "task"] - }, { "type": "object", "properties": { @@ -12999,7 +12729,7 @@ }, "acls": { "description": "Replacement list of access control permissions for the key", - "maxItems": 108, + "maxItems": 104, "type": "array", "items": {"$ref": "#/components/schemas/AdminAclType"} } @@ -13017,7 +12747,7 @@ "type": "string" }, "acls": { - "maxItems": 108, + "maxItems": 104, "type": "array", "items": {"type": "string"}, "description": "List of access control permissions for the key" @@ -13047,7 +12777,7 @@ "maximum": 365 }, "acls": { - "maxItems": 108, + "maxItems": 104, "type": "array", "items": {"$ref": "#/components/schemas/AdminAclType"}, "description": "List of access control permissions for the key" @@ -13068,7 +12798,7 @@ "type": "string" }, "acls": { - "maxItems": 108, + "maxItems": 104, "type": "array", "items": {"type": "string"}, "description": "List of access control permissions for the key" @@ -13081,7 +12811,7 @@ "type": "object", "properties": { "acls": { - "maxItems": 108, + "maxItems": 104, "type": "array", "items": {"type": "string", "minLength": 1, "maxLength": 64}, "description": "Every admin access control permission the admin API recognises" @@ -13135,7 +12865,6 @@ "bulk:delete:users", "bulk:delete:user_messages", "bulk:update:guild_features", - "bulk:update:suspicious_activity", "bulk:update:user_flags", "csam:submit_ncmec", "discovery:remove", @@ -13171,7 +12900,6 @@ "system_dm:send", "user:cancel:bulk_message_deletion", "user:delete", - "user:disable:suspicious", "user:list:dm_channels", "user:list:guilds", "user:list:relationships", @@ -13188,9 +12916,7 @@ "user:update:email", "user:update:flags", "user:update:mfa", - "user:update:phone", "user:update:profile", - "user:update:suspicious_activity", "user:update:traits", "user:update:username", "voice:region:create", @@ -13637,11 +13363,6 @@ }, {"name": "SPAMMER", "value": "64", "description": "User is flagged as a spammer"}, {"name": "DELETED", "value": "17179869184", "description": "User account has been deleted"}, - { - "name": "DISABLED_SUSPICIOUS_ACTIVITY", - "value": "34359738368", - "description": "User account disabled due to suspicious activity" - }, {"name": "SELF_DELETED", "value": "68719476736", "description": "User account was self-deleted"}, {"name": "DISABLED", "value": "274877906944", "description": "User account is disabled"}, {"name": "HAS_SESSION_STARTED", "value": "549755813888", "description": "User has started a session"}, @@ -13652,6 +13373,7 @@ "value": "562949953421312", "description": "User is verified as not underage" }, + {"name": "ACCOUNT_LIMITED", "value": "1125899906842624", "description": "User account is limited"}, { "name": "HAS_DISMISSED_PREMIUM_ONBOARDING", "value": "2251799813685248", @@ -13669,14 +13391,9 @@ "description": "User has verified their age as an adult via credit card verification" }, { - "name": "FORCE_INBOUND_PHONE_VERIFICATION", - "value": "2305843009213693952", - "description": "User is forced through inbound phone verification, for debugging" - }, - { - "name": "NOT_SUSPICIOUS", + "name": "LIMIT_EXEMPT", "value": "4611686018427387904", - "description": "User is permanently exempt from automatic suspicious-activity flagging" + "description": "User is permanently exempt from account limitation" } ] }, @@ -15019,15 +14736,14 @@ "GuildVerificationLevel": { "description": "Required verification level for members", "type": "integer", - "enum": [0, 1, 2, 3, 4], + "enum": [0, 1, 2, 3], "format": "int32", - "x-enumNames": ["NONE", "LOW", "MEDIUM", "HIGH", "VERY_HIGH"], + "x-enumNames": ["NONE", "LOW", "MEDIUM", "HIGH"], "x-enumDescriptions": [ "Unrestricted", "Must have verified email", "Registered for more than 5 minutes", - "Member of the server for more than 10 minutes", - "Must have a verified phone number" + "Member of the server for more than 10 minutes" ] }, "GuildOperations": { @@ -15109,15 +14825,14 @@ "minimum": 0, "maximum": 2147483647, "format": "int32", - "x-enumNames": ["NONE", "LOW", "MEDIUM", "HIGH", "VERY_HIGH"], + "x-enumNames": ["NONE", "LOW", "MEDIUM", "HIGH"], "x-enumDescriptions": [ "Unrestricted", "Must have verified email", "Registered for more than 5 minutes", - "Member of the server for more than 10 minutes", - "Must have a verified phone number" + "Member of the server for more than 10 minutes" ], - "enum": [0, 1, 2, 3, 4] + "enum": [0, 1, 2, 3] }, "PurgeGuildAssetErrorSchema": { "type": "object", @@ -15887,7 +15602,6 @@ "email": {"nullable": true, "type": "string"}, "email_verified": {"type": "boolean"}, "email_bounced": {"type": "boolean"}, - "has_verified_phone": {"type": "boolean"}, "date_of_birth": {"nullable": true, "type": "string"}, "locale": {"nullable": true, "type": "string"}, "premium_type": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]}, @@ -15895,11 +15609,6 @@ "premium_until": {"nullable": true, "type": "string"}, "premium_grace_ends_at": {"nullable": true, "type": "string"}, "premium_lifetime_sequence": {"nullable": true, "allOf": [{"$ref": "#/components/schemas/Int32Type"}]}, - "suspicious_activity_flags": {"allOf": [{"$ref": "#/components/schemas/SuspiciousActivityFlags"}]}, - "phone_verification_deferred": { - "type": "boolean", - "description": "Whether a stored phone requirement is deferred and not enforced" - }, "temp_banned_until": {"nullable": true, "type": "string"}, "pending_deletion_at": {"nullable": true, "type": "string"}, "pending_bulk_message_deletion_at": {"nullable": true, "type": "string"}, @@ -15920,7 +15629,7 @@ "description": "ISO 8601 timestamp when the pending deletion was scheduled", "type": "string" }, - "acls": {"maxItems": 108, "type": "array", "items": {"type": "string"}}, + "acls": {"maxItems": 104, "type": "array", "items": {"type": "string"}}, "traits": {"maxItems": 100, "type": "array", "items": {"type": "string"}}, "has_totp": {"type": "boolean"}, "authenticator_types": {"maxItems": 10, "type": "array", "items": {"$ref": "#/components/schemas/Int32Type"}}, @@ -15946,7 +15655,6 @@ "email", "email_verified", "email_bounced", - "has_verified_phone", "date_of_birth", "locale", "premium_type", @@ -15954,8 +15662,6 @@ "premium_until", "premium_grace_ends_at", "premium_lifetime_sequence", - "suspicious_activity_flags", - "phone_verification_deferred", "temp_banned_until", "pending_deletion_at", "pending_bulk_message_deletion_at", @@ -15975,44 +15681,6 @@ ], "additionalProperties": false }, - "SuspiciousActivityFlags": { - "type": "integer", - "minimum": 0, - "maximum": 2147483647, - "description": "Suspicious activity indicators", - "format": "int32", - "x-bitflagValues": [ - {"name": "REQUIRE_VERIFIED_EMAIL", "value": "1", "description": "Requires verified email address"}, - {"name": "REQUIRE_REVERIFIED_EMAIL", "value": "2", "description": "Requires re-verified email address"}, - {"name": "REQUIRE_VERIFIED_PHONE", "value": "4", "description": "Requires verified phone number"}, - {"name": "REQUIRE_REVERIFIED_PHONE", "value": "8", "description": "Requires re-verified phone number"}, - { - "name": "REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE", - "value": "16", - "description": "Requires verified email or verified phone" - }, - { - "name": "REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE", - "value": "32", - "description": "Requires re-verified email or re-verified phone" - }, - { - "name": "REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE", - "value": "64", - "description": "Requires verified email or re-verified phone" - }, - { - "name": "REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE", - "value": "128", - "description": "Requires re-verified email or re-verified phone" - }, - { - "name": "REQUIRE_INBOUND_PHONE_VERIFICATION", - "value": "256", - "description": "Requires inbound SMS verification (user must text code to platform number)" - } - ] - }, "PremiumFlags": { "type": "integer", "minimum": 0, diff --git a/fluxer_admin/src/acl.rs b/fluxer_admin/src/acl.rs index d2b8bf3b1..99d77154c 100644 --- a/fluxer_admin/src/acl.rs +++ b/fluxer_admin/src/acl.rs @@ -42,7 +42,6 @@ pub const BULK_ADD_GUILD_MEMBERS: &str = "bulk:add:guild_members"; pub const BULK_DELETE_USERS: &str = "bulk:delete:users"; pub const BULK_DELETE_USER_MESSAGES: &str = "bulk:delete:user_messages"; pub const BULK_UPDATE_GUILD_FEATURES: &str = "bulk:update:guild_features"; -pub const BULK_UPDATE_SUSPICIOUS_ACTIVITY: &str = "bulk:update:suspicious_activity"; pub const BULK_UPDATE_USER_FLAGS: &str = "bulk:update:user_flags"; pub const CSAM_SUBMIT_NCMEC: &str = "csam:submit_ncmec"; pub const DISCOVERY_REMOVE: &str = "discovery:remove"; @@ -78,7 +77,6 @@ pub const REPORT_VIEW_REPORTER_PII: &str = "report:view:reporter_pii"; pub const SYSTEM_DM_SEND: &str = "system_dm:send"; pub const USER_CANCEL_BULK_MESSAGE_DELETION: &str = "user:cancel:bulk_message_deletion"; pub const USER_DELETE: &str = "user:delete"; -pub const USER_DISABLE_SUSPICIOUS: &str = "user:disable:suspicious"; pub const USER_LIST_DM_CHANNELS: &str = "user:list:dm_channels"; pub const USER_LIST_GUILDS: &str = "user:list:guilds"; pub const USER_LIST_RELATIONSHIPS: &str = "user:list:relationships"; @@ -95,9 +93,7 @@ pub const USER_UPDATE_DOB: &str = "user:update:dob"; pub const USER_UPDATE_EMAIL: &str = "user:update:email"; pub const USER_UPDATE_FLAGS: &str = "user:update:flags"; pub const USER_UPDATE_MFA: &str = "user:update:mfa"; -pub const USER_UPDATE_PHONE: &str = "user:update:phone"; pub const USER_UPDATE_PROFILE: &str = "user:update:profile"; -pub const USER_UPDATE_SUSPICIOUS_ACTIVITY: &str = "user:update:suspicious_activity"; pub const USER_UPDATE_TRAITS: &str = "user:update:traits"; pub const USER_UPDATE_USERNAME: &str = "user:update:username"; pub const VOICE_REGION_CREATE: &str = "voice:region:create"; @@ -151,7 +147,6 @@ pub const ALL_ACLS: &[&str] = &[ BULK_DELETE_USERS, BULK_DELETE_USER_MESSAGES, BULK_UPDATE_GUILD_FEATURES, - BULK_UPDATE_SUSPICIOUS_ACTIVITY, BULK_UPDATE_USER_FLAGS, CSAM_SUBMIT_NCMEC, DISCOVERY_REMOVE, @@ -187,7 +182,6 @@ pub const ALL_ACLS: &[&str] = &[ SYSTEM_DM_SEND, USER_CANCEL_BULK_MESSAGE_DELETION, USER_DELETE, - USER_DISABLE_SUSPICIOUS, USER_LIST_DM_CHANNELS, USER_LIST_GUILDS, USER_LIST_RELATIONSHIPS, @@ -204,9 +198,7 @@ pub const ALL_ACLS: &[&str] = &[ USER_UPDATE_EMAIL, USER_UPDATE_FLAGS, USER_UPDATE_MFA, - USER_UPDATE_PHONE, USER_UPDATE_PROFILE, - USER_UPDATE_SUSPICIOUS_ACTIVITY, USER_UPDATE_TRAITS, USER_UPDATE_USERNAME, VOICE_REGION_CREATE, diff --git a/fluxer_admin/src/admin_flags.rs b/fluxer_admin/src/admin_flags.rs index 99aaeaeb9..7754e466f 100644 --- a/fluxer_admin/src/admin_flags.rs +++ b/fluxer_admin/src/admin_flags.rs @@ -19,19 +19,18 @@ pub mod user_flag_bits { pub const SPAMMER: u64 = 1 << 6; pub const HIGH_GLOBAL_RATE_LIMIT: u64 = 1 << 33; pub const DELETED: u64 = 1 << 34; - pub const DISABLED_SUSPICIOUS_ACTIVITY: u64 = 1 << 35; pub const SELF_DELETED: u64 = 1 << 36; pub const DISABLED: u64 = 1 << 38; pub const HAS_SESSION_STARTED: u64 = 1 << 39; pub const RATE_LIMIT_BYPASS: u64 = 1 << 47; pub const REPORT_BANNED: u64 = 1 << 48; pub const VERIFIED_NOT_UNDERAGE: u64 = 1 << 49; + pub const ACCOUNT_LIMITED: u64 = 1 << 50; pub const HAS_DISMISSED_PREMIUM_ONBOARDING: u64 = 1 << 51; pub const APP_STORE_REVIEWER: u64 = 1 << 53; pub const STAFF_HIDDEN: u64 = 1 << 57; pub const AGE_VERIFIED_ADULT: u64 = 1 << 60; - pub const FORCE_INBOUND_PHONE_VERIFICATION: u64 = 1 << 61; - pub const NOT_SUSPICIOUS: u64 = 1 << 62; + pub const LIMIT_EXEMPT: u64 = 1 << 62; } pub const USER_FLAGS: &[U64Flag] = &[ @@ -67,10 +66,6 @@ pub const USER_FLAGS: &[U64Flag] = &[ name: "DELETED", value: user_flag_bits::DELETED, }, - U64Flag { - name: "DISABLED_SUSPICIOUS_ACTIVITY", - value: user_flag_bits::DISABLED_SUSPICIOUS_ACTIVITY, - }, U64Flag { name: "SELF_DELETED", value: user_flag_bits::SELF_DELETED, @@ -95,6 +90,10 @@ pub const USER_FLAGS: &[U64Flag] = &[ name: "VERIFIED_NOT_UNDERAGE", value: user_flag_bits::VERIFIED_NOT_UNDERAGE, }, + U64Flag { + name: "ACCOUNT_LIMITED", + value: user_flag_bits::ACCOUNT_LIMITED, + }, U64Flag { name: "HAS_DISMISSED_PREMIUM_ONBOARDING", value: user_flag_bits::HAS_DISMISSED_PREMIUM_ONBOARDING, @@ -112,12 +111,8 @@ pub const USER_FLAGS: &[U64Flag] = &[ value: user_flag_bits::AGE_VERIFIED_ADULT, }, U64Flag { - name: "FORCE_INBOUND_PHONE_VERIFICATION", - value: user_flag_bits::FORCE_INBOUND_PHONE_VERIFICATION, - }, - U64Flag { - name: "NOT_SUSPICIOUS", - value: user_flag_bits::NOT_SUSPICIOUS, + name: "LIMIT_EXEMPT", + value: user_flag_bits::LIMIT_EXEMPT, }, ]; @@ -159,42 +154,3 @@ pub const PREMIUM_FLAGS: &[I32Flag] = &[ value: 1 << 8, }, ]; - -pub const SUSPICIOUS_ACTIVITY_FLAGS: &[I32Flag] = &[ - I32Flag { - name: "REQUIRE_VERIFIED_EMAIL", - value: 1 << 0, - }, - I32Flag { - name: "REQUIRE_REVERIFIED_EMAIL", - value: 1 << 1, - }, - I32Flag { - name: "REQUIRE_VERIFIED_PHONE", - value: 1 << 2, - }, - I32Flag { - name: "REQUIRE_REVERIFIED_PHONE", - value: 1 << 3, - }, - I32Flag { - name: "REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE", - value: 1 << 4, - }, - I32Flag { - name: "REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE", - value: 1 << 5, - }, - I32Flag { - name: "REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE", - value: 1 << 6, - }, - I32Flag { - name: "REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE", - value: 1 << 7, - }, - I32Flag { - name: "REQUIRE_INBOUND_PHONE_VERIFICATION", - value: 1 << 8, - }, -]; diff --git a/fluxer_admin/src/api/admin_api_keys.rs b/fluxer_admin/src/api/admin_api_keys.rs index 0ba1fd738..add4b59dd 100644 --- a/fluxer_admin/src/api/admin_api_keys.rs +++ b/fluxer_admin/src/api/admin_api_keys.rs @@ -12,7 +12,7 @@ impl AdminApiClient { acls: &[String], ) -> ApiResult { let body = generated_types::CreateAdminApiKeyRequest { - acls: parse_acls(acls)?, + acls: parse_acls(acls), expires_in_days: None, name: generated_types::CreateAdminApiKeyRequestName::try_from(name) .map_err(|e| ApiError::Parse(e.to_string()))?, @@ -44,11 +44,8 @@ impl AdminApiClient { } } -pub(super) fn parse_acls(acls: &[String]) -> ApiResult> { +pub(super) fn parse_acls(acls: &[String]) -> Vec { acls.iter() - .map(|acl| { - generated_types::AdminAclType::try_from(acl.as_str()) - .map_err(|e| ApiError::Parse(e.to_string())) - }) + .filter_map(|acl| generated_types::AdminAclType::try_from(acl.as_str()).ok()) .collect() } diff --git a/fluxer_admin/src/api/bulk.rs b/fluxer_admin/src/api/bulk.rs index 960b86018..42e71c3d3 100644 --- a/fluxer_admin/src/api/bulk.rs +++ b/fluxer_admin/src/api/bulk.rs @@ -22,22 +22,6 @@ impl AdminApiClient { .await } - pub async fn bulk_update_suspicious_activity_flags( - &self, - user_ids: &[String], - add_flags: &[String], - remove_flags: &[String], - audit_log_reason: Option<&str>, - ) -> ApiResult { - let body = generated_types::AdminBulkJobCreateRequest::UpdateSuspiciousActivityFlags { - add_flags: add_flags.to_vec(), - remove_flags: remove_flags.to_vec(), - user_ids: snowflakes(user_ids), - }; - self.post_typed_with_reason("/admin/bulk-jobs", &body, audit_log_reason) - .await - } - pub async fn bulk_update_guild_features( &self, guild_ids: &[String], diff --git a/fluxer_admin/src/api/generated.rs b/fluxer_admin/src/api/generated.rs index 46e97962a..5864093dd 100644 --- a/fluxer_admin/src/api/generated.rs +++ b/fluxer_admin/src/api/generated.rs @@ -85,7 +85,6 @@ mod tests { "email": "admin@example.com", "email_verified": true, "email_bounced": false, - "has_verified_phone": false, "date_of_birth": "2000-01-15", "locale": "en-US", "premium_type": 2, @@ -93,8 +92,6 @@ mod tests { "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": null, - "suspicious_activity_flags": 0, - "phone_verification_deferred": false, "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, diff --git a/fluxer_admin/src/api/types/common.rs b/fluxer_admin/src/api/types/common.rs index a1bc703e7..80ff0902f 100644 --- a/fluxer_admin/src/api/types/common.rs +++ b/fluxer_admin/src/api/types/common.rs @@ -108,15 +108,9 @@ pub struct AdminUser { pub premium_grace_ends_at: Option, pub premium_lifetime_sequence: Option, #[serde(default)] - pub suspicious_activity_flags: i32, - #[serde(default)] - pub phone_verification_deferred: bool, - #[serde(default)] pub has_totp: bool, #[serde(default)] pub authenticator_types: Vec, - #[serde(default)] - pub has_verified_phone: bool, pub temp_banned_until: Option, pub pending_deletion_at: Option, pub pending_bulk_message_deletion_at: Option, diff --git a/fluxer_admin/src/api/users.rs b/fluxer_admin/src/api/users.rs index 29c885961..c317709d5 100644 --- a/fluxer_admin/src/api/users.rs +++ b/fluxer_admin/src/api/users.rs @@ -231,22 +231,9 @@ impl AdminApiClient { Ok(resp.user) } - pub async fn update_suspicious_flags(&self, user_id: &str, flags: i32) -> ApiResult { - let body = generated_types::AdminUserSuspiciousActivityFlagsRequest { - flags: generated_types::SuspiciousActivityFlags::from(flags), - }; - let response = self - .generated() - .update_admin_user_suspicious_activity_flags(&snowflake(user_id), &body) - .await - .map_err(|e| self.generated_error(e))?; - let resp: UserMutationResponse = self.generated_value(response.into_inner())?; - Ok(resp.user) - } - pub async fn set_user_acls(&self, user_id: &str, acls: &[String]) -> ApiResult { let body = generated_types::AdminUserAclsRequest { - acls: super::admin_api_keys::parse_acls(acls)?, + acls: super::admin_api_keys::parse_acls(acls), }; let response = self .generated() @@ -296,21 +283,6 @@ impl AdminApiClient { Ok(resp.user) } - pub async fn update_has_verified_phone( - &self, - user_id: &str, - has_verified_phone: bool, - ) -> ApiResult { - let body = generated_types::AdminUserPhoneVerificationRequest { has_verified_phone }; - let response = self - .generated() - .update_admin_user_phone_verification(&snowflake(user_id), &body) - .await - .map_err(|e| self.generated_error(e))?; - let resp: UserMutationResponse = self.generated_value(response.into_inner())?; - Ok(resp.user) - } - pub async fn clear_user_fields( &self, user_id: &str, diff --git a/fluxer_admin/src/routes/message_actions.rs b/fluxer_admin/src/routes/message_actions.rs index 3fe3303f0..5363b85bf 100644 --- a/fluxer_admin/src/routes/message_actions.rs +++ b/fluxer_admin/src/routes/message_actions.rs @@ -219,19 +219,6 @@ pub(crate) async fn bulk_actions_post( .bulk_update_user_flags(&user_ids, &add, &remove, audit_log_reason.as_deref()) .await } - "bulk-update-suspicious-activity-flags" => { - let user_ids = form.list_values_any(&["user_ids[]", "user_ids"]); - let add = form.list_values_any(&["add_flags[]", "add_flags"]); - let remove = form.list_values_any(&["remove_flags[]", "remove_flags"]); - client - .bulk_update_suspicious_activity_flags( - &user_ids, - &add, - &remove, - audit_log_reason.as_deref(), - ) - .await - } "bulk-update-guild-features" => { let guild_ids = form.list_values_any(&["guild_ids[]", "guild_ids"]); let mut add = form.list_values_any(&["add_features[]", "add_features"]); diff --git a/fluxer_admin/src/routes/user_actions.rs b/fluxer_admin/src/routes/user_actions.rs index a9ad5cc51..ef3b900be 100644 --- a/fluxer_admin/src/routes/user_actions.rs +++ b/fluxer_admin/src/routes/user_actions.rs @@ -134,19 +134,6 @@ pub async fn dispatch( "Failed to update premium flags", ) } - "update_suspicious_flags" => { - let Ok(submitted) = - form.parse_list_values::(&["suspicious_flags[]", "suspicious_flags"]) - else { - return DispatchOutcome::error("Invalid suspicious activity flag value"); - }; - let flags = submitted.into_iter().fold(0, |acc, flag| acc | flag); - DispatchOutcome::from_result( - client.update_suspicious_flags(user_id, flags).await, - "Suspicious activity flags updated successfully", - "Failed to update suspicious activity flags", - ) - } "update_acls" => { let acls = form.list_values_any(&["acls[]", "acls"]); DispatchOutcome::from_result( @@ -178,14 +165,6 @@ pub async fn dispatch( "Email verified successfully", "Failed to verify email", ), - "update_has_verified_phone" => { - let val = form.bool_value("has_verified_phone"); - DispatchOutcome::from_result( - client.update_has_verified_phone(user_id, val).await, - "Phone verification status updated successfully", - "Failed to update phone verification status", - ) - } "terminate_sessions" => DispatchOutcome::from_result( client.terminate_user_sessions(user_id).await, "User sessions terminated successfully", diff --git a/fluxer_admin/src/templates/layout_sidebar_nav.rs b/fluxer_admin/src/templates/layout_sidebar_nav.rs index 2cc5bede5..b893c9f66 100644 --- a/fluxer_admin/src/templates/layout_sidebar_nav.rs +++ b/fluxer_admin/src/templates/layout_sidebar_nav.rs @@ -54,7 +54,6 @@ pub const NAV_SECTIONS: &[NavSection] = &[ "bulk-actions", [ acl::BULK_UPDATE_USER_FLAGS, - acl::BULK_UPDATE_SUSPICIOUS_ACTIVITY, acl::BULK_UPDATE_GUILD_FEATURES, acl::BULK_ADD_GUILD_MEMBERS, acl::BULK_DELETE_USERS, @@ -268,7 +267,6 @@ mod tests { .expect("bulk actions nav item"); for required in [ acl::BULK_UPDATE_USER_FLAGS, - acl::BULK_UPDATE_SUSPICIOUS_ACTIVITY, acl::BULK_UPDATE_GUILD_FEATURES, acl::BULK_ADD_GUILD_MEMBERS, acl::BULK_DELETE_USERS, diff --git a/fluxer_admin/src/templates/pages/audit_logs_table.rs b/fluxer_admin/src/templates/pages/audit_logs_table.rs index 1946c4f19..57eed7646 100644 --- a/fluxer_admin/src/templates/pages/audit_logs_table.rs +++ b/fluxer_admin/src/templates/pages/audit_logs_table.rs @@ -19,11 +19,7 @@ pub fn format_action(action: &str) -> String { pub fn action_badge_variant(action: &str) -> BadgeVariant { match action { - "temp_ban" - | "disable_suspicious_activity" - | "schedule_deletion" - | "ban_ip" - | "ban_email" => BadgeVariant::Danger, + "temp_ban" | "schedule_deletion" | "ban_ip" | "ban_email" => BadgeVariant::Danger, "unban" | "cancel_deletion" | "unban_ip" | "unban_email" => BadgeVariant::Success, "update_flags" | "update_features" | "set_acls" | "update_settings" | "annotate_ban" => { BadgeVariant::Info @@ -361,4 +357,12 @@ mod tests { assert!(!markup.contains(" Markup { - html! { - div class="grid grid-cols-1 gap-3 sm:grid-cols-2" { - @for flag in flags { - (checkbox(prefix, flag, flag, false, true)) - } - } - } -} - fn guild_feature_checkbox_grid(prefix: &str, include_deprecated: bool) -> Markup { html! { div class="grid grid-cols-1 gap-3 sm:grid-cols-2" { @@ -288,36 +260,6 @@ fn bulk_update_user_flags_section(base: &str, csrf_token: &str) -> Markup { ) } -fn bulk_update_suspicious_activity_section(base: &str, csrf_token: &str) -> Markup { - section_card_simple( - "Bulk Update Suspicious Activity Flags", - html! { - form method="post" action={(base) "/bulk-actions?action=bulk-update-suspicious-activity-flags"} { - (csrf_input(csrf_token)) - div class="space-y-4" { - (textarea_input("user_ids", "User IDs (one per line)", "123456789\n987654321", "", 5, true)) - div { - p class="font-semibold text-neutral-500 text-xs uppercase tracking-wide mb-2" { - "Flags to Add" - } - (flag_checkbox_grid("add_flags[]", SUSPICIOUS_ACTIVITY_FLAGS)) - } - div { - p class="font-semibold text-neutral-500 text-xs uppercase tracking-wide mb-2" { - "Flags to Remove" - } - (flag_checkbox_grid("remove_flags[]", SUSPICIOUS_ACTIVITY_FLAGS)) - } - (text_input("audit_log_reason", "Audit Log Reason (optional)", "", "Reason for this bulk operation")) - (form_actions(html! { - (submit_button("Update Suspicious Activity Flags")) - })) - } - } - }, - ) -} - fn bulk_update_guild_features_section(base: &str, csrf_token: &str) -> Markup { section_card_simple( "Bulk Update Guild Features", diff --git a/fluxer_admin/src/templates/pages/guild_detail_tabs/settings.rs b/fluxer_admin/src/templates/pages/guild_detail_tabs/settings.rs index 9bd3642bc..4bc5a3ed6 100644 --- a/fluxer_admin/src/templates/pages/guild_detail_tabs/settings.rs +++ b/fluxer_admin/src/templates/pages/guild_detail_tabs/settings.rs @@ -52,13 +52,12 @@ pub fn settings_tab( "guild-verification-level", "verification_level", "Verification Level", - guild.verification_level.unwrap_or(0), + guild.verification_level.unwrap_or(0).min(3), &[ (0, "None"), (1, "Low (verified email)"), (2, "Medium (5+ minutes)"), (3, "High (10+ minutes)"), - (4, "Very High (verified phone)"), ], )) (select_field( @@ -225,12 +224,11 @@ fn select_field( } fn settings_tab_readonly(guild: &GuildDetailInfo) -> Markup { - let verification_label = match guild.verification_level.unwrap_or(0) { + let verification_label = match guild.verification_level.unwrap_or(0).min(3) { 0 => "None", 1 => "Low (verified email)", 2 => "Medium (5+ minutes)", 3 => "High (10+ minutes)", - 4 => "Very High (verified phone)", _ => "Unknown", }; let mfa_label = match guild.mfa_level.unwrap_or(0) { diff --git a/fluxer_admin/src/templates/pages/instance_config.rs b/fluxer_admin/src/templates/pages/instance_config.rs index d7f45a7b8..7a9aab9d1 100644 --- a/fluxer_admin/src/templates/pages/instance_config.rs +++ b/fluxer_admin/src/templates/pages/instance_config.rs @@ -1403,7 +1403,7 @@ fn captcha_section(base: &str, csrf_token: &str, captcha: &CaptchaConfigResponse )) p class="text-sm text-neutral-700" { (format!( - "Average solve: about {estimate:.1} s on a low-end Android phone, \ + "Average solve: about {estimate:.1} s on a low-end Android device, \ well under a second in desktop browsers." )) } diff --git a/fluxer_admin/src/templates/pages/user_detail_tabs/account.rs b/fluxer_admin/src/templates/pages/user_detail_tabs/account.rs index 8ca25cc59..316036fe0 100644 --- a/fluxer_admin/src/templates/pages/user_detail_tabs/account.rs +++ b/fluxer_admin/src/templates/pages/user_detail_tabs/account.rs @@ -154,10 +154,6 @@ fn session_entry(base: &str, s: &UserSession, is_tombstone: bool) -> Markup { } fn quick_actions_card(base: &str, user: &AdminUser, csrf_token: &str) -> Markup { - let phone_action = format!( - "{base}/users/{}?action=update_has_verified_phone&tab=account", - user.id - ); html! { (card_with_header("Quick Actions", html! { div class="flex flex-wrap gap-3" { @@ -165,20 +161,6 @@ fn quick_actions_card(base: &str, user: &AdminUser, csrf_token: &str) -> Markup (action_form(base, &user.id, "verify_email", "account", None, "Verify Email", csrf_token)) } - form method="post" - action=(&phone_action) - hx-post=(&phone_action) - hx-target="#flash-container" - hx-swap="none" - hx-push-url="false" { - (csrf_input(csrf_token)) - input type="hidden" name="has_verified_phone" - value=@if user.has_verified_phone { "false" } @else { "true" }; - button type="submit" class=(BTN_CLS) { - @if user.has_verified_phone { "Clear Phone Verified" } - @else { "Mark Phone Verified" } - } - } (action_form(base, &user.id, "send_password_reset", "account", None, "Send Password Reset", csrf_token)) } diff --git a/fluxer_admin/src/templates/pages/user_detail_tabs/overview.rs b/fluxer_admin/src/templates/pages/user_detail_tabs/overview.rs index f43a23b4e..e2c18dd7a 100644 --- a/fluxer_admin/src/templates/pages/user_detail_tabs/overview.rs +++ b/fluxer_admin/src/templates/pages/user_detail_tabs/overview.rs @@ -139,13 +139,6 @@ fn render_overview_tab( } })) } - (detail_row("Phone", html! { - @if user.has_verified_phone { - span class="text-green-700" { "Verified" } - } @else { - span class="text-neutral-400" { "Not verified" } - } - })) @if acl::has_permission(admin_acls, acl::USER_VIEW_DOB) { (detail_row("Date of Birth", html! { (user.date_of_birth.as_deref().unwrap_or("Not set")) @@ -270,8 +263,6 @@ fn flags_card( csrf_token: &str, ) -> Markup { let can_update_flags = acl::has_permission(admin_acls, acl::USER_UPDATE_FLAGS); - let can_update_suspicious = - acl::has_permission(admin_acls, acl::USER_UPDATE_SUSPICIOUS_ACTIVITY); html! { div class="space-y-6" { (u64_flag_form( @@ -298,23 +289,6 @@ fn flags_card( can_update_flags, Some(acl::USER_UPDATE_FLAGS), )) - (i32_flag_form( - config, - &user.id, - "Suspicious Activity Flags", - "update_suspicious_flags", - "suspicious_flags[]", - user.suspicious_activity_flags, - admin_flags::SUSPICIOUS_ACTIVITY_FLAGS, - csrf_token, - can_update_suspicious, - Some(acl::USER_UPDATE_SUSPICIOUS_ACTIVITY), - )) - @if user.phone_verification_deferred { - p class="text-sm text-amber-700 dark:text-amber-400" { - "Phone verification is deferred: the requirement above is stored but not enforced." - } - } } } } diff --git a/fluxer_admin/tests/api_deserialization.rs b/fluxer_admin/tests/api_deserialization.rs index 4e4df9b4c..bcb6890c3 100644 --- a/fluxer_admin/tests/api_deserialization.rs +++ b/fluxer_admin/tests/api_deserialization.rs @@ -23,7 +23,6 @@ fn deserialize_admin_users_me_response() { "email": "hampus@fluxer.com", "email_verified": true, "email_bounced": false, - "has_verified_phone": true, "date_of_birth": "2003-02-25", "locale": "en-US", "premium_type": 2, @@ -31,7 +30,6 @@ fn deserialize_admin_users_me_response() { "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": 1, - "suspicious_activity_flags": 0, "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, @@ -64,9 +62,7 @@ fn deserialize_admin_users_me_response() { assert_eq!(user.acls, vec!["super_admin"]); assert_eq!(user.traits, vec!["beta_tester"]); assert_eq!(user.premium_type, Some(2)); - assert_eq!(user.suspicious_activity_flags, 0); assert!(user.has_totp); - assert!(user.has_verified_phone); assert_eq!(user.last_active_ip.as_deref(), Some("1.2.3.4")); } @@ -79,10 +75,10 @@ fn deserialize_flags_as_string_and_number() { "premium_flags": 0, "avatar": null, "banner": null, "bio": null, "pronouns": null, "accent_color": null, "email": null, "email_verified": false, "email_bounced": false, - "has_verified_phone": false, "date_of_birth": null, "locale": null, + "date_of_birth": null, "locale": null, "premium_type": null, "premium_since": null, "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": null, - "suspicious_activity_flags": 0, "temp_banned_until": null, + "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, "deletion_reason_code": null, "deletion_public_reason": null, "deletion_audit_log_reason": null, "deletion_scheduled_by": null, "deletion_scheduled_at": null, @@ -111,10 +107,10 @@ fn deserialize_discriminator_int_and_string() { "bot": true, "system": false, "flags": "0", "premium_flags": 0, "avatar": null, "banner": null, "bio": null, "pronouns": null, "accent_color": null, "email": null, "email_verified": false, - "email_bounced": false, "has_verified_phone": false, "date_of_birth": null, + "email_bounced": false, "date_of_birth": null, "locale": null, "premium_type": null, "premium_since": null, "premium_until": null, "premium_grace_ends_at": null, - "premium_lifetime_sequence": null, "suspicious_activity_flags": 0, + "premium_lifetime_sequence": null, "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, "deletion_reason_code": null, "deletion_public_reason": null, "deletion_audit_log_reason": null, @@ -161,7 +157,6 @@ fn deserialize_search_users_response() { "email": null, "email_verified": false, "email_bounced": false, - "has_verified_phone": false, "date_of_birth": null, "locale": null, "premium_type": null, @@ -169,7 +164,6 @@ fn deserialize_search_users_response() { "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": null, - "suspicious_activity_flags": 0, "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, @@ -881,10 +875,10 @@ fn deserialize_user_mutation_response() { "flags": "1", "premium_flags": 0, "avatar": null, "banner": null, "bio": null, "pronouns": null, "accent_color": null, "email": null, "email_verified": false, "email_bounced": false, - "has_verified_phone": false, "date_of_birth": null, "locale": null, + "date_of_birth": null, "locale": null, "premium_type": null, "premium_since": null, "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": null, - "suspicious_activity_flags": 0, "temp_banned_until": null, + "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, "deletion_reason_code": null, "deletion_public_reason": null, "deletion_audit_log_reason": null, "deletion_scheduled_by": null, "deletion_scheduled_at": null, diff --git a/fluxer_admin/tests/csrf_legacy_cookie.rs b/fluxer_admin/tests/csrf_legacy_cookie.rs index 4aadfacdc..88d1f1cb9 100644 --- a/fluxer_admin/tests/csrf_legacy_cookie.rs +++ b/fluxer_admin/tests/csrf_legacy_cookie.rs @@ -263,11 +263,8 @@ fn admin_user() -> Value { "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": null, - "suspicious_activity_flags": 0, - "phone_verification_deferred": false, "has_totp": false, "authenticator_types": [], - "has_verified_phone": false, "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, diff --git a/fluxer_admin/tests/htmx_acceptance.rs b/fluxer_admin/tests/htmx_acceptance.rs index f6bb3348b..b3d681455 100644 --- a/fluxer_admin/tests/htmx_acceptance.rs +++ b/fluxer_admin/tests/htmx_acceptance.rs @@ -363,7 +363,9 @@ async fn user_account_actions_use_no_swap_htmx_toasts() { assert!(body.contains("__fluxerAdminActionForms"), "{body}"); assert!(!body.contains(&native_confirm), "{body}"); assert!( - body.contains(r#"hx-post="/users/1500000000000000001?action=update_has_verified_phone&tab=account""#), + body.contains( + r#"hx-post="/users/1500000000000000001?action=send_password_reset&tab=account""# + ), "{body}" ); assert!(body.contains(r##"hx-target="#flash-container""##), "{body}"); @@ -374,7 +376,7 @@ async fn user_account_actions_use_no_swap_htmx_toasts() { .unwrap_or_else(|| panic!("account page did not set csrf_token cookie\n{body}")); let (status, response_headers, response_body) = post_form_with_headers( &app, - "/users/1500000000000000001?action=update_has_verified_phone&tab=account", + "/users/1500000000000000001?action=send_password_reset&tab=account", &[ ("HX-Request", "true"), ("HX-Target", "flash-container"), @@ -383,7 +385,7 @@ async fn user_account_actions_use_no_swap_htmx_toasts() { &format!("{}; csrf_token={}", app.session_cookie, csrf_token), ), ], - &format!("_csrf={csrf_token}&has_verified_phone=true"), + &format!("_csrf={csrf_token}"), ) .await; assert_eq!(status, StatusCode::NO_CONTENT, "{response_body}"); @@ -399,7 +401,7 @@ async fn user_account_actions_use_no_swap_htmx_toasts() { .unwrap_or_else(|| panic!("missing toast header\n{response_body}")); assert!(toast.contains("success"), "{toast}"); assert!( - toast.contains("Phone verification status updated successfully"), + toast.contains("Password reset sent successfully"), "{toast}" ); } @@ -839,8 +841,8 @@ async fn mock_api(method: Method, uri: Uri) -> Response { (Method::GET, "/admin/users/1500000000000000001") => { json_response(json!({ "users": [searched_user()] })) } - (Method::PUT, "/admin/users/1500000000000000001/phone-verification") => { - json_response(json!({ "user": searched_user() })) + (Method::POST, "/admin/users/1500000000000000001/password-reset") => { + StatusCode::NO_CONTENT.into_response() } (Method::GET, "/admin/guilds") => { json_response(json!({ "guilds": [searched_guild()], "total": 1 })) @@ -947,11 +949,8 @@ fn user(id: &str, username: &str) -> Value { "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": null, - "suspicious_activity_flags": 0, - "phone_verification_deferred": false, "has_totp": false, "authenticator_types": [], - "has_verified_phone": false, "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, diff --git a/fluxer_admin/tests/notification_writes.rs b/fluxer_admin/tests/notification_writes.rs index 26507274a..07a6a759c 100644 --- a/fluxer_admin/tests/notification_writes.rs +++ b/fluxer_admin/tests/notification_writes.rs @@ -322,11 +322,8 @@ fn admin_user() -> Value { "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": null, - "suspicious_activity_flags": 0, - "phone_verification_deferred": false, "has_totp": false, "authenticator_types": [], - "has_verified_phone": false, "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, diff --git a/fluxer_admin/tests/parity/fixtures/api/admin_user_me.json b/fluxer_admin/tests/parity/fixtures/api/admin_user_me.json index c2aa3c01f..264f9df8c 100644 --- a/fluxer_admin/tests/parity/fixtures/api/admin_user_me.json +++ b/fluxer_admin/tests/parity/fixtures/api/admin_user_me.json @@ -16,7 +16,6 @@ "email": "admin@example.com", "email_verified": true, "email_bounced": false, - "has_verified_phone": true, "date_of_birth": "2000-01-01", "locale": "en-US", "premium_type": null, @@ -24,8 +23,6 @@ "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": null, - "suspicious_activity_flags": 0, - "phone_verification_deferred": false, "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, diff --git a/fluxer_admin/tests/parity/fixtures/api/lookup_user.json b/fluxer_admin/tests/parity/fixtures/api/lookup_user.json index 7796d0142..97a580c03 100644 --- a/fluxer_admin/tests/parity/fixtures/api/lookup_user.json +++ b/fluxer_admin/tests/parity/fixtures/api/lookup_user.json @@ -17,7 +17,6 @@ "email": "user@example.com", "email_verified": true, "email_bounced": false, - "has_verified_phone": false, "date_of_birth": null, "locale": "en-US", "premium_type": null, @@ -25,8 +24,6 @@ "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": null, - "suspicious_activity_flags": 0, - "phone_verification_deferred": false, "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, diff --git a/fluxer_admin/tests/parity/fixtures/api/search_users.json b/fluxer_admin/tests/parity/fixtures/api/search_users.json index 245a9a58f..67544bad0 100644 --- a/fluxer_admin/tests/parity/fixtures/api/search_users.json +++ b/fluxer_admin/tests/parity/fixtures/api/search_users.json @@ -17,7 +17,6 @@ "email": "user@example.com", "email_verified": true, "email_bounced": false, - "has_verified_phone": false, "date_of_birth": null, "locale": "en-US", "premium_type": null, @@ -25,8 +24,6 @@ "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": null, - "suspicious_activity_flags": 0, - "phone_verification_deferred": false, "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, diff --git a/fluxer_admin/tests/voice_restriction_writes.rs b/fluxer_admin/tests/voice_restriction_writes.rs index e4ad107b7..63a182b74 100644 --- a/fluxer_admin/tests/voice_restriction_writes.rs +++ b/fluxer_admin/tests/voice_restriction_writes.rs @@ -294,11 +294,8 @@ fn admin_user() -> Value { "premium_until": null, "premium_grace_ends_at": null, "premium_lifetime_sequence": null, - "suspicious_activity_flags": 0, - "phone_verification_deferred": false, "has_totp": false, "authenticator_types": [], - "has_verified_phone": false, "temp_banned_until": null, "pending_deletion_at": null, "pending_bulk_message_deletion_at": null, diff --git a/fluxer_api/pkgs/elasticsearch_search/src/ElasticsearchIndexDefinitions.ts b/fluxer_api/pkgs/elasticsearch_search/src/ElasticsearchIndexDefinitions.ts index 7a31ddbd5..9069b61fd 100644 --- a/fluxer_api/pkgs/elasticsearch_search/src/ElasticsearchIndexDefinitions.ts +++ b/fluxer_api/pkgs/elasticsearch_search/src/ElasticsearchIndexDefinitions.ts @@ -131,7 +131,6 @@ export const ELASTICSEARCH_INDEX_DEFINITIONS: Record 0) { clauses.push(...esAndTerms('acls', filters.hasAcl)); } - if (filters.minSuspiciousActivityFlags !== undefined) { - clauses.push(esRangeFilter('suspiciousActivityFlags', {gte: filters.minSuspiciousActivityFlags})); - } if (filters.createdAtGreaterThanOrEqual !== undefined) { clauses.push(esRangeFilter('createdAt', {gte: filters.createdAtGreaterThanOrEqual})); } @@ -65,7 +62,7 @@ export class ElasticsearchUserAdapter extends ElasticsearchIndexAdapter { - return this.sendTemplatedEmail(email, 'account_disabled_suspicious', locale, { - username, - reason: optionalReason(reason), - forgotUrl: `${this.config.appBaseUrl}/forgot`, - }); - } - async sendAccountTempBannedEmail( email: string, username: string, diff --git a/fluxer_api/pkgs/email/src/IEmailService.ts b/fluxer_api/pkgs/email/src/IEmailService.ts index dd98bfc08..07ff832e0 100644 --- a/fluxer_api/pkgs/email/src/IEmailService.ts +++ b/fluxer_api/pkgs/email/src/IEmailService.ts @@ -16,12 +16,6 @@ export interface IEmailService { location: string, locale?: string | null, ): Promise; - sendAccountDisabledForSuspiciousActivityEmail( - email: string, - username: string, - reason: string | null, - locale?: string | null, - ): Promise; sendAccountTempBannedEmail( email: string, username: string, diff --git a/fluxer_api/pkgs/email/src/TestEmailService.ts b/fluxer_api/pkgs/email/src/TestEmailService.ts index 871d8c95d..ca7d67ac5 100644 --- a/fluxer_api/pkgs/email/src/TestEmailService.ts +++ b/fluxer_api/pkgs/email/src/TestEmailService.ts @@ -69,16 +69,6 @@ export class TestEmailService implements ITestEmailService { return this.record(email, 'ip_authorization', {token: authorizationToken, ip: ipAddress, location}); } - async sendAccountDisabledForSuspiciousActivityEmail( - email: string, - username: string, - reason: string | null, - _locale?: string | null, - ): Promise { - this.logger.info(`Account disabled email sent to ${email} for user ${username}, reason: ${reason ?? 'none'}`); - return this.record(email, 'account_disabled_suspicious', {reason: reason ?? ''}); - } - async sendAccountTempBannedEmail( email: string, username: string, diff --git a/fluxer_api/pkgs/email/src/email_i18n/EmailI18nLocaleFiles.test.ts b/fluxer_api/pkgs/email/src/email_i18n/EmailI18nLocaleFiles.test.ts index a1dc6043e..2e5fee3a8 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/EmailI18nLocaleFiles.test.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/EmailI18nLocaleFiles.test.ts @@ -19,7 +19,6 @@ const FIXTURE: {[K in EmailTemplateKey]: EmailTemplateVariables[K]} = { account_deletion_cancelled: {username: 'testuser'}, account_deletion_scheduled_inactivity: {username: 'testuser', reason: 'Inactive', deletionDate: DATE}, account_deletion_scheduled_requested: {username: 'testuser', reason: 'Requested', deletionDate: DATE}, - account_disabled_suspicious: {username: 'testuser', reason: 'Spam', forgotUrl: 'https://example.com/forgot'}, account_scheduled_deletion: { username: 'testuser', reason: 'Spam', diff --git a/fluxer_api/pkgs/email/src/email_i18n/EmailI18nMessages.ts b/fluxer_api/pkgs/email/src/email_i18n/EmailI18nMessages.ts index ece425a81..143947bbd 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/EmailI18nMessages.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/EmailI18nMessages.ts @@ -15,10 +15,6 @@ export const EMAIL_I18N_MESSAGES = { subject: 'Your {product_name} account deletion is scheduled', body: "Hello {username},\n\nAs you requested, your {product_name} account is scheduled for permanent deletion on:\n\n{deletionDate, date, full} at {deletionDate, time, short}{reason, select, null {} other {\n\nReason: {reason}}}\n\nYour account is locked until then. If you didn't request this, or you want to keep your account, contact {safety_email} from this email address before that date.\n\n– {product_name} Team", }, - account_disabled_suspicious: { - subject: 'Your {product_name} account has been temporarily disabled', - body: "Hello {username},\n\nWe temporarily disabled your {product_name} account because we detected suspicious activity.\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nTo regain access to your account, you'll need to reset your password:\n\n{forgotUrl}\n\nAfter you reset your password, you'll be able to log in again.\n\nIf you believe this was done in error, please contact our support team.\n\n– {product_name} Safety Team", - }, account_scheduled_deletion: { subject: 'Your {product_name} account will be permanently deleted', body: 'Hello {username},\n\nYour {product_name} account has been scheduled for permanent deletion due to violations of our Terms of Service or Community Guidelines.\n\nScheduled deletion: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nThis is a serious enforcement action. Your account data will be permanently deleted on the scheduled date.\n\nPlease review:\n- Terms of Service: {termsUrl}\n- Community Guidelines: {guidelinesUrl}\n\nAppeals process:\nIf you believe this enforcement decision was incorrect or unjustified, you have 60 days to submit an appeal. Email {appeals_email} from this email address.\n\nIn your appeal:\n- Clearly explain why you believe the enforcement decision was incorrect or unjustified\n- Provide any relevant evidence or context\n\nA member of the {product_name} Safety Team will review your appeal and may pause the pending deletion until a final decision has been reached.\n\n– {product_name} Safety Team', @@ -49,7 +45,7 @@ export const EMAIL_I18N_MESSAGES = { }, email_change_revert: { subject: 'Your {product_name} email was changed', - body: "Hello {username},\n\nThe email address on your {product_name} account was changed to {newEmail}.\n\nIf you made this change, no action is needed. If you didn't, you can revert the change and secure your account using this link:\n\n{revertUrl}\n\nThis will restore your previous email, sign you out everywhere, remove linked phone numbers, disable MFA, and require you to set a new password.\n\n– {product_name} Safety Team", + body: "Hello {username},\n\nThe email address on your {product_name} account was changed to {newEmail}.\n\nIf you made this change, no action is needed. If you didn't, you can revert the change and secure your account using this link:\n\n{revertUrl}\n\nThis will restore your previous email, sign you out everywhere, disable MFA, and require you to set a new password.\n\n– {product_name} Safety Team", }, email_verification: { subject: 'Verify your {product_name} email address', diff --git a/fluxer_api/pkgs/email/src/email_i18n/EmailI18nTypes.generated.ts b/fluxer_api/pkgs/email/src/email_i18n/EmailI18nTypes.generated.ts index 00f819478..5d07b0f70 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/EmailI18nTypes.generated.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/EmailI18nTypes.generated.ts @@ -4,7 +4,6 @@ export type EmailTemplateKey = | 'account_deletion_cancelled' | 'account_deletion_scheduled_inactivity' | 'account_deletion_scheduled_requested' - | 'account_disabled_suspicious' | 'account_scheduled_deletion' | 'account_temp_banned' | 'donation_confirmation' diff --git a/fluxer_api/pkgs/email/src/email_i18n/EmailI18nTypes.ts b/fluxer_api/pkgs/email/src/email_i18n/EmailI18nTypes.ts index f3094eb14..c37d346a2 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/EmailI18nTypes.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/EmailI18nTypes.ts @@ -14,11 +14,6 @@ export interface EmailTemplateVariables { reason: string | null; deletionDate: Date; }; - account_disabled_suspicious: { - username: string; - reason: string | null; - forgotUrl: string; - }; account_scheduled_deletion: { username: string; reason: string | null; diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/ar.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/ar.ts index 2973d423d..ee335fdb6 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/ar.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/ar.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_AR_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "تمت جدولة حذف حسابك في {product_name}", "body": "مرحبًا {username}،\n\nبناءً على طلبك، تمت جدولة حسابك في {product_name} للحذف الدائم في:\n\n{deletionDate, date, full} الساعة {deletionDate, time, short}{reason, select, null {} other {\n\nالسبب: {reason}}}\n\nسيظل حسابك مقفلًا حتى ذلك الحين. إذا لم تطلب هذا، أو كنت ترغب في الاحتفاظ بحسابك، فاتصل بـ{safety_email} من عنوان البريد الإلكتروني هذا قبل ذلك التاريخ.\n\n– فريق {product_name}" }, - "account_disabled_suspicious": { - "subject": "تم تعطيل حسابك في {product_name} مؤقتًا", - "body": "مرحبًا {username}،\n\nلقد قمنا بتعطيل حسابك في {product_name} مؤقتًا لأننا اكتشفنا نشاطًا مشبوهًا.\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nلاستعادة الوصول إلى حسابك، ستحتاج إلى إعادة تعيين كلمة المرور الخاصة بك:\n\n{forgotUrl}\n\nبعد إعادة تعيين كلمة المرور الخاصة بك، ستتمكن من تسجيل الدخول مرة أخرى.\n\nإذا كنت تعتقد أن هذا حدث عن طريق الخطأ، يرجى الاتصال بفريق الدعم لدينا.\n\n– فريق أمان {product_name}" - }, "account_scheduled_deletion": { "subject": "سيتم حذف حسابك في {product_name} نهائيًا", "body": "مرحبًا {username}،\n\nتمت جدولة حسابك في {product_name} للحذف الدائم بسبب انتهاكات لشروط الخدمة أو إرشادات المجتمع الخاصة بنا.\n\nالحذف المجدول: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nهذا إجراء إنفاذ جاد. سيتم حذف بيانات حسابك نهائيًا في التاريخ المحدد.\n\nيرجى مراجعة:\n- شروط الخدمة: {termsUrl}\n- إرشادات المجتمع: {guidelinesUrl}\n\nعملية الاستئناف:\nإذا كنت تعتقد أن قرار الإنفاذ هذا كان غير صحيح أو غير مبرر، لديك 60 يومًا لتقديم استئناف. أرسل بريدًا إلكترونيًا إلى {appeals_email} من عنوان البريد الإلكتروني هذا.\n\nفي استئنافك:\n- اشرح بوضوح سبب اعتقادك أن قرار الإنفاذ كان غير صحيح أو غير مبرر\n- قدم أي دليل أو سياق ذي صلة\n\nسيقوم عضو من فريق أمان {product_name} بمراجعة استئنافك وقد يوقف الحذف المعلق مؤقتًا إلى حين التوصل إلى قرار نهائي.\n\n– فريق أمان {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_AR_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "تم تغيير بريدك الإلكتروني في {product_name}", - "body": "مرحبًا {username}،\n\nتم تغيير عنوان البريد الإلكتروني لحسابك في {product_name} إلى {newEmail}.\n\nإذا قمت بهذا التغيير، فلا داعي لاتخاذ أي إجراء. إذا لم تقم بذلك، يمكنك التراجع عن التغيير وتأمين حسابك باستخدام هذا الرابط:\n\n{revertUrl}\n\nسيؤدي هذا إلى استعادة بريدك الإلكتروني السابق، وتسجيل خروجك من جميع الأجهزة، وإزالة أرقام الهواتف المرتبطة، وتعطيل المصادقة متعددة العوامل، وسيُطلب منك تعيين كلمة مرور جديدة.\n\n– فريق أمان {product_name}" + "body": "مرحبًا {username}،\n\nتم تغيير عنوان البريد الإلكتروني لحسابك في {product_name} إلى {newEmail}.\n\nإذا قمت بهذا التغيير، فلا داعي لاتخاذ أي إجراء. إذا لم تقم بذلك، يمكنك التراجع عن التغيير وتأمين حسابك باستخدام هذا الرابط:\n\n{revertUrl}\n\nسيؤدي هذا إلى استعادة بريدك الإلكتروني السابق، وتسجيل خروجك من جميع الأجهزة، وتعطيل المصادقة متعددة العوامل، وسيُطلب منك تعيين كلمة مرور جديدة.\n\n– فريق أمان {product_name}" }, "email_verification": { "subject": "تحقق من بريدك الإلكتروني في {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/bg.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/bg.ts index 1ca1747b1..227fb8067 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/bg.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/bg.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_BG_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Изтриването на акаунта ти във {product_name} е насрочено", "body": "Здравей, {username},\n\nКакто поиска, акаунтът ти във {product_name} е насрочен за постоянно изтриване на:\n\n{deletionDate, date, full} в {deletionDate, time, short}{reason, select, null {} other {\n\nПричина: {reason}}}\n\nДотогава акаунтът ти е заключен. Ако не си поискал това или искаш да запазиш акаунта си, свържи се с {safety_email} от този имейл адрес преди тази дата.\n\n– Екип на {product_name}" }, - "account_disabled_suspicious": { - "subject": "Акаунтът ти във {product_name} е временно деактивиран", - "body": "Здравей, {username},\n\nВременно деактивирахме акаунта ти във {product_name}, защото открихме подозрителна активност.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЗа да възстановиш достъпа до акаунта си, трябва да нулираш паролата си:\n\n{forgotUrl}\n\nСлед като нулираш паролата си, ще можеш да влезеш отново.\n\nАко смяташ, че това е грешка, свържи се с нашия екип за поддръжка.\n\n– Екип за безопасност на {product_name}" - }, "account_scheduled_deletion": { "subject": "Акаунтът ти във {product_name} ще бъде изтрит за постоянно", "body": "Здравей, {username},\n\nАкаунтът ти във {product_name} е насрочен за постоянно изтриване поради нарушения на нашите Общи условия или Насоки на общността.\n\nНасрочено изтриване: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nТова е сериозна мярка. Данните на акаунта ти ще бъдат изтрити за постоянно на насрочената дата.\n\nПрегледай:\n- Общи условия: {termsUrl}\n- Насоки на общността: {guidelinesUrl}\n\nПроцес на обжалване:\nАко смяташ, че това решение е неправилно или необосновано, имаш 60 дни да подадеш обжалване. Изпрати имейл на {appeals_email} от този имейл адрес.\n\nВ обжалването си:\n- Обясни ясно защо смяташ, че решението е неправилно или необосновано\n- Приложи всички релевантни доказателства или контекст\n\nЧлен на екипа за безопасност на {product_name} ще прегледа обжалването ти и може да спре предстоящото изтриване, докато не бъде взето окончателно решение.\n\n– Екип за безопасност на {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_BG_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Имейлът ти във {product_name} беше променен", - "body": "Здравей, {username},\n\nИмейл адресът на акаунта ти във {product_name} беше променен на {newEmail}.\n\nАко ти си направил тази промяна, не е необходимо да предприемаш никакви действия. Ако не си, можеш да отмениш промяната и да защитиш акаунта си, като използваш този линк:\n\n{revertUrl}\n\nТова ще възстанови предишния ти имейл, ще прекрати всички активни сесии, ще премахне свързаните телефонни номера, ще деактивира MFA и ще изиска да зададеш нова парола.\n\n– Екип за безопасност на {product_name}" + "body": "Здравей, {username},\n\nИмейл адресът на акаунта ти във {product_name} беше променен на {newEmail}.\n\nАко ти си направил тази промяна, не е необходимо да предприемаш никакви действия. Ако не си, можеш да отмениш промяната и да защитиш акаунта си, като използваш този линк:\n\n{revertUrl}\n\nТова ще възстанови предишния ти имейл, ще прекрати всички активни сесии, ще деактивира MFA и ще изиска да зададеш нова парола.\n\n– Екип за безопасност на {product_name}" }, "email_verification": { "subject": "Потвърди имейл адреса си във {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/cs.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/cs.ts index 4b633ae31..9f106ec83 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/cs.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/cs.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_CS_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Smazání vašeho účtu {product_name} je naplánováno", "body": "Dobrý den, {username},\n\nNa vaši žádost je trvalé smazání vašeho účtu {product_name} naplánováno na:\n\n{deletionDate, date, full} v {deletionDate, time, short}{reason, select, null {} other {\n\nDůvod: {reason}}}\n\nDo té doby je váš účet uzamčen. Pokud jste o smazání nežádali nebo si chcete účet ponechat, kontaktujte před tímto datem {safety_email} z této e-mailové adresy.\n\n– Tým {product_name}" }, - "account_disabled_suspicious": { - "subject": "Váš účet {product_name} byl dočasně deaktivován", - "body": "Dobrý den, {username},\n\nDočasně jsme deaktivovali váš účet {product_name}, protože jsme zaznamenali podezřelou aktivitu.\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nAbyste znovu získali přístup k účtu, musíte si nastavit nové heslo:\n\n{forgotUrl}\n\nPo změně hesla se budete moci znovu přihlásit.\n\nPokud se domníváte, že jde o chybu, kontaktujte náš tým podpory.\n\n– Bezpečnostní tým {product_name}" - }, "account_scheduled_deletion": { "subject": "Váš účet {product_name} bude trvale smazán", "body": "Dobrý den, {username},\n\nKvůli porušení našich podmínek služby nebo komunitních pravidel bylo naplánováno trvalé smazání vašeho účtu {product_name}.\n\nNaplánované smazání: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nJedná se o závažné opatření. Data vašeho účtu budou v naplánovaný den trvale smazána.\n\nPřečtěte si:\n- Podmínky služby: {termsUrl}\n- Komunitní pravidla: {guidelinesUrl}\n\nPostup odvolání:\nPokud se domníváte, že toto rozhodnutí bylo nesprávné nebo neopodstatněné, máte 60 dní na podání odvolání. Pošlete e-mail na {appeals_email} z této e-mailové adresy.\n\nV odvolání:\n- Jasně vysvětlete, proč se domníváte, že rozhodnutí bylo nesprávné nebo neopodstatněné\n- Uveďte všechny relevantní důkazy a souvislosti\n\nČlen bezpečnostního týmu {product_name} vaše odvolání přezkoumá a může pozastavit plánované smazání, dokud nepadne konečné rozhodnutí.\n\n– Bezpečnostní tým {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_CS_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Vaše e-mailová adresa pro {product_name} byla změněna", - "body": "Dobrý den, {username},\n\nE-mailová adresa vašeho účtu {product_name} byla změněna na {newEmail}.\n\nPokud jste tuto změnu provedli vy, nemusíte nic dělat. Pokud ne, můžete ji vrátit zpět a zabezpečit svůj účet pomocí tohoto odkazu:\n\n{revertUrl}\n\nTím se obnoví vaše předchozí e-mailová adresa, budete odhlášeni ze všech zařízení, odstraní se propojená telefonní čísla, vypne se vícefaktorové ověřování a budete muset nastavit nové heslo.\n\n– Bezpečnostní tým {product_name}" + "body": "Dobrý den, {username},\n\nE-mailová adresa vašeho účtu {product_name} byla změněna na {newEmail}.\n\nPokud jste tuto změnu provedli vy, nemusíte nic dělat. Pokud ne, můžete ji vrátit zpět a zabezpečit svůj účet pomocí tohoto odkazu:\n\n{revertUrl}\n\nTím se obnoví vaše předchozí e-mailová adresa, budete odhlášeni ze všech zařízení, vypne se vícefaktorové ověřování a budete muset nastavit nové heslo.\n\n– Bezpečnostní tým {product_name}" }, "email_verification": { "subject": "Ověřte svou e-mailovou adresu pro {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/da.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/da.ts index e17fcf6be..533f23192 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/da.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/da.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_DA_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Sletningen af din {product_name}-konto er planlagt", "body": "Hej {username},\n\nSom du har anmodet om, slettes din {product_name}-konto permanent den:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}{reason, select, null {} other {\n\nÅrsag: {reason}}}\n\nDin konto er låst indtil da. Hvis du ikke har anmodet om dette, eller hvis du vil beholde din konto, skal du kontakte {safety_email} fra denne e-mailadresse inden denne dato.\n\n– Teamet bag {product_name}" }, - "account_disabled_suspicious": { - "subject": "Din {product_name}-konto er midlertidigt deaktiveret", - "body": "Hej {username},\n\nVi har midlertidigt deaktiveret din {product_name}-konto, fordi vi har registreret mistænkelig aktivitet.\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nFor at få adgang til din konto igen skal du nulstille din adgangskode:\n\n{forgotUrl}\n\nNår du har nulstillet din adgangskode, kan du logge ind igen.\n\nHvis du mener, at dette er sket ved en fejl, kan du kontakte vores supportteam.\n\n– Sikkerhedsteamet hos {product_name}" - }, "account_scheduled_deletion": { "subject": "Din {product_name}-konto slettes permanent", "body": "Hej {username},\n\nVi har planlagt at slette din {product_name}-konto permanent på grund af overtrædelser af vores servicevilkår eller retningslinjer for fællesskabet.\n\nPlanlagt sletning: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nDette er en alvorlig sanktion. Dine kontodata bliver permanent slettet på den planlagte dato.\n\nGennemgå:\n- Servicevilkår: {termsUrl}\n- Retningslinjer for fællesskabet: {guidelinesUrl}\n\nKlageproces:\nHvis du mener, at denne beslutning om sanktioner var forkert eller uberettiget, har du 60 dage til at indsende en klage. Send en e-mail til {appeals_email} fra denne e-mailadresse.\n\nI din klage:\n- Forklar tydeligt, hvorfor du mener, at beslutning om sanktioneren var forkert eller uberettiget\n- Fremlæg relevant dokumentation eller kontekst\n\nEt medlem af sikkerhedsteamet hos {product_name} vil gennemgå din klage og kan sætte den afventende sletning på pause, indtil en endelig beslutning er truffet.\n\n– Sikkerhedsteamet hos {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_DA_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Din e-mailadresse til {product_name} er ændret", - "body": "Hej {username},\n\nE-mailadressen på din {product_name}-konto blev ændret til {newEmail}.\n\nHvis du selv har foretaget ændringen, behøver du ikke gøre noget. Ellers kan du fortryde ændringen og sikre din konto ved at bruge dette link:\n\n{revertUrl}\n\nDette vil gendanne din tidligere e-mailadresse, logge dig ud overalt, fjerne tilknyttede telefonnumre, slå multifaktorgodkendelse fra og kræve, at du vælger en ny adgangskode.\n\n– Sikkerhedsteamet hos {product_name}" + "body": "Hej {username},\n\nE-mailadressen på din {product_name}-konto blev ændret til {newEmail}.\n\nHvis du selv har foretaget ændringen, behøver du ikke gøre noget. Ellers kan du fortryde ændringen og sikre din konto ved at bruge dette link:\n\n{revertUrl}\n\nDette vil gendanne din tidligere e-mailadresse, logge dig ud overalt, slå multifaktorgodkendelse fra og kræve, at du vælger en ny adgangskode.\n\n– Sikkerhedsteamet hos {product_name}" }, "email_verification": { "subject": "Bekræft din {product_name}-e-mailadresse", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/de.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/de.ts index 2ef283065..5a870c312 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/de.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/de.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_DE_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Die Löschung deines {product_name}-Accounts ist geplant", "body": "Hallo {username},\n\nwie von dir beantragt, wird dein {product_name}-Account an folgendem Termin dauerhaft gelöscht:\n\n{deletionDate, date, full} um {deletionDate, time, short}{reason, select, null {} other {\n\nGrund: {reason}}}\n\nDein Account ist bis dahin gesperrt. Wenn du das nicht beantragt hast oder deinen Account behalten möchtest, kontaktiere vor diesem Termin {safety_email} von dieser E-Mail-Adresse aus.\n\n– {product_name}-Team" }, - "account_disabled_suspicious": { - "subject": "Dein {product_name}-Account wurde vorübergehend deaktiviert", - "body": "Hallo {username},\n\nwir haben deinen {product_name}-Account vorübergehend deaktiviert, da wir verdächtige Aktivitäten festgestellt haben.\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nUm wieder Zugriff auf deinen Account zu erhalten, musst du dein Passwort zurücksetzen:\n\n{forgotUrl}\n\nNachdem du dein Passwort zurückgesetzt hast, kannst du dich wieder anmelden.\n\nWenn du glaubst, dass dies ein Fehler war, kontaktiere bitte unser Support-Team.\n\n– {product_name}-Sicherheitsteam" - }, "account_scheduled_deletion": { "subject": "Dein {product_name}-Account wird dauerhaft gelöscht", "body": "Hallo {username},\n\ndein {product_name}-Account wurde aufgrund von Verstößen gegen unsere Nutzungsbedingungen oder Community-Richtlinien zur dauerhaften Löschung vorgemerkt.\n\nGeplante Löschung: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nDies ist eine ernsthafte Maßnahme. Deine Accountdaten werden am geplanten Datum dauerhaft gelöscht.\n\nBitte lies dir Folgendes durch:\n- Nutzungsbedingungen: {termsUrl}\n- Community-Richtlinien: {guidelinesUrl}\n\nEinspruchsverfahren:\nWenn du glaubst, dass diese Entscheidung falsch oder ungerechtfertigt war, hast du 60 Tage Zeit, Einspruch einzulegen. Sende eine E-Mail von dieser E-Mail-Adresse an {appeals_email}.\n\nIn deinem Einspruch:\n- Erkläre klar, warum du glaubst, dass die Entscheidung falsch oder ungerechtfertigt war\n- Füge alle relevanten Beweise oder Kontextinformationen bei\n\nEin Mitglied des {product_name}-Sicherheitsteams wird deinen Einspruch prüfen und die geplante Löschung möglicherweise aussetzen, bis eine endgültige Entscheidung getroffen wurde.\n\n– {product_name}-Sicherheitsteam" @@ -49,7 +45,7 @@ const EMAIL_I18N_DE_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Deine {product_name}-E-Mail-Adresse wurde geändert", - "body": "Hallo {username},\n\ndie E-Mail-Adresse deines {product_name}-Accounts wurde in {newEmail} geändert.\n\nWenn du diese Änderung vorgenommen hast, ist keine weitere Aktion erforderlich. Wenn nicht, kannst du die Änderung rückgängig machen und deinen Account über diesen Link absichern:\n\n{revertUrl}\n\nDadurch wird deine vorherige E-Mail-Adresse wiederhergestellt, du wirst überall abgemeldet, verknüpfte Telefonnummern werden entfernt, MFA wird deaktiviert und du musst ein neues Passwort festlegen.\n\n– {product_name}-Sicherheitsteam" + "body": "Hallo {username},\n\ndie E-Mail-Adresse deines {product_name}-Accounts wurde in {newEmail} geändert.\n\nWenn du diese Änderung vorgenommen hast, ist keine weitere Aktion erforderlich. Wenn nicht, kannst du die Änderung rückgängig machen und deinen Account über diesen Link absichern:\n\n{revertUrl}\n\nDadurch wird deine vorherige E-Mail-Adresse wiederhergestellt, du wirst überall abgemeldet, MFA wird deaktiviert und du musst ein neues Passwort festlegen.\n\n– {product_name}-Sicherheitsteam" }, "email_verification": { "subject": "Bestätige deine {product_name}-E-Mail-Adresse", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/el.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/el.ts index 3c5c56860..5b60e98da 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/el.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/el.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_EL_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Η διαγραφή του λογαριασμού σου στο {product_name} είναι προγραμματισμένη", "body": "Γεια σου {username},\n\nΌπως ζήτησες, ο λογαριασμός σου στο {product_name} έχει προγραμματιστεί για οριστική διαγραφή:\n\n{deletionDate, date, full} και ώρα {deletionDate, time, short}{reason, select, null {} other {\n\nΛόγος: {reason}}}\n\nΜέχρι τότε ο λογαριασμός σου είναι κλειδωμένος. Εάν δεν το ζήτησες ή θέλεις να διατηρήσεις τον λογαριασμό σου, στείλε email στο {safety_email} από αυτή τη διεύθυνση email πριν από αυτή την ημερομηνία.\n\n– Η ομάδα του {product_name}" }, - "account_disabled_suspicious": { - "subject": "Ο λογαριασμός σου στο {product_name} έχει απενεργοποιηθεί προσωρινά", - "body": "Γεια σου {username},\n\nΑπενεργοποιήσαμε προσωρινά τον λογαριασμό σου στο {product_name} επειδή εντοπίσαμε ύποπτη δραστηριότητα.\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΓια να αποκτήσεις ξανά πρόσβαση στον λογαριασμό σου, θα πρέπει να επαναφέρεις τον κωδικό πρόσβασής σου:\n\n{forgotUrl}\n\nΑφού επαναφέρεις τον κωδικό πρόσβασής σου, θα μπορείς να συνδεθείς ξανά.\n\nΕάν πιστεύεις ότι αυτό έγινε κατά λάθος, επικοινώνησε με την ομάδα υποστήριξής μας.\n\n– Η ομάδα ασφαλείας του {product_name}" - }, "account_scheduled_deletion": { "subject": "Ο λογαριασμός σου στο {product_name} θα διαγραφεί οριστικά", "body": "Γεια σου {username},\n\nΟ λογαριασμός σου στο {product_name} έχει προγραμματιστεί για οριστική διαγραφή λόγω παραβιάσεων των Όρων παροχής υπηρεσιών ή των Οδηγιών κοινότητας.\n\nΠρογραμματισμένη διαγραφή: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΠρόκειται για σοβαρό μέτρο. Τα δεδομένα του λογαριασμού σου θα διαγραφούν οριστικά την προγραμματισμένη ημερομηνία.\n\nΈλεγξε:\n- Όροι παροχής υπηρεσιών: {termsUrl}\n- Οδηγίες κοινότητας: {guidelinesUrl}\n\nΔιαδικασία προσφυγής:\nΕάν πιστεύεις ότι αυτή η απόφαση ήταν λανθασμένη ή αδικαιολόγητη, έχεις 60 ημέρες για να υποβάλεις προσφυγή. Στείλε email στο {appeals_email} από αυτήν τη διεύθυνση email.\n\nΣτην προσφυγή σου:\n- Εξήγησε σαφώς γιατί πιστεύεις ότι η απόφαση ήταν λανθασμένη ή αδικαιολόγητη\n- Παράθεσε τυχόν σχετικά αποδεικτικά στοιχεία ή πλαίσιο\n\nΈνα μέλος της ομάδας ασφαλείας του {product_name} θα εξετάσει την προσφυγή σου και ενδέχεται να αναστείλει την εκκρεμή διαγραφή μέχρι να ληφθεί τελική απόφαση.\n\n– Η ομάδα ασφαλείας του {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_EL_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Το email σου στο {product_name} άλλαξε", - "body": "Γεια σου {username},\n\nΗ διεύθυνση email του λογαριασμού σου στο {product_name} άλλαξε σε {newEmail}.\n\nΕάν έκανες εσύ αυτήν την αλλαγή, δεν χρειάζεται να κάνεις τίποτα. Εάν όχι, μπορείς να αναιρέσεις την αλλαγή και να ασφαλίσεις τον λογαριασμό σου με αυτόν τον σύνδεσμο:\n\n{revertUrl}\n\nΑυτό θα επαναφέρει το προηγούμενο email σου, θα σε αποσυνδέσει από παντού, θα αφαιρέσει τους συνδεδεμένους αριθμούς τηλεφώνου, θα απενεργοποιήσει το MFA και θα σου ζητήσει να ορίσεις νέο κωδικό πρόσβασης.\n\n– Η ομάδα ασφαλείας του {product_name}" + "body": "Γεια σου {username},\n\nΗ διεύθυνση email του λογαριασμού σου στο {product_name} άλλαξε σε {newEmail}.\n\nΕάν έκανες εσύ αυτήν την αλλαγή, δεν χρειάζεται να κάνεις τίποτα. Εάν όχι, μπορείς να αναιρέσεις την αλλαγή και να ασφαλίσεις τον λογαριασμό σου με αυτόν τον σύνδεσμο:\n\n{revertUrl}\n\nΑυτό θα επαναφέρει το προηγούμενο email σου, θα σε αποσυνδέσει από παντού, θα απενεργοποιήσει το MFA και θα σου ζητήσει να ορίσεις νέο κωδικό πρόσβασης.\n\n– Η ομάδα ασφαλείας του {product_name}" }, "email_verification": { "subject": "Επαλήθευσε τη διεύθυνση email σου στο {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/en-GB.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/en-GB.ts index 7c4cd8fe5..1a645ab9e 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/en-GB.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/en-GB.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_EN_GB_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Your {product_name} account deletion is scheduled", "body": "Hello {username},\n\nAs you requested, your {product_name} account is scheduled for permanent deletion on:\n\n{deletionDate, date, full} at {deletionDate, time, short}{reason, select, null {} other {\n\nReason: {reason}}}\n\nYour account is locked until then. If you didn't request this, or you want to keep your account, contact {safety_email} from this email address before that date.\n\n– {product_name} Team" }, - "account_disabled_suspicious": { - "subject": "Your {product_name} account has been temporarily disabled", - "body": "Hello {username},\n\nWe temporarily disabled your {product_name} account because we detected suspicious activity.\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nTo regain access to your account, you'll need to reset your password:\n\n{forgotUrl}\n\nAfter you reset your password, you'll be able to log in again.\n\nIf you believe this was done in error, please contact our support team.\n\n– {product_name} Safety Team" - }, "account_scheduled_deletion": { "subject": "Your {product_name} account will be permanently deleted", "body": "Hello {username},\n\nYour {product_name} account has been scheduled for permanent deletion due to violations of our Terms of Service or Community Guidelines.\n\nScheduled deletion: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nThis is a serious enforcement action. Your account data will be permanently deleted on the scheduled date.\n\nPlease review:\n- Terms of Service: {termsUrl}\n- Community Guidelines: {guidelinesUrl}\n\nAppeals process:\nIf you believe this enforcement decision was incorrect or unjustified, you have 60 days to submit an appeal. Email {appeals_email} from this email address.\n\nIn your appeal:\n- Clearly explain why you believe the enforcement decision was incorrect or unjustified\n- Provide any relevant evidence or context\n\nA member of the {product_name} Safety Team will review your appeal and may pause the pending deletion until a final decision has been reached.\n\n– {product_name} Safety Team" @@ -49,7 +45,7 @@ const EMAIL_I18N_EN_GB_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Your {product_name} email was changed", - "body": "Hello {username},\n\nThe email address on your {product_name} account was changed to {newEmail}.\n\nIf you made this change, no action is needed. If you didn't, you can revert the change and secure your account using this link:\n\n{revertUrl}\n\nThis will restore your previous email, sign you out everywhere, remove linked phone numbers, disable MFA, and require you to set a new password.\n\n– {product_name} Safety Team" + "body": "Hello {username},\n\nThe email address on your {product_name} account was changed to {newEmail}.\n\nIf you made this change, no action is needed. If you didn't, you can revert the change and secure your account using this link:\n\n{revertUrl}\n\nThis will restore your previous email, sign you out everywhere, disable MFA, and require you to set a new password.\n\n– {product_name} Safety Team" }, "email_verification": { "subject": "Verify your {product_name} email address", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/es-419.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/es-419.ts index 19adadb0f..0d426b8aa 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/es-419.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/es-419.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_ES_419_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "La eliminación de tu cuenta de {product_name} está programada", "body": "Hola {username}:\n\nSegún lo que solicitaste, la eliminación permanente de tu cuenta de {product_name} está programada para el:\n\n{deletionDate, date, full} a las {deletionDate, time, short}{reason, select, null {} other {\n\nMotivo: {reason}}}\n\nTu cuenta permanecerá bloqueada hasta entonces. Si no solicitaste esto, o si quieres conservar tu cuenta, comunícate con {safety_email} desde esta dirección de correo electrónico antes de esa fecha.\n\n– Equipo de {product_name}" }, - "account_disabled_suspicious": { - "subject": "Tu cuenta de {product_name} ha sido deshabilitada temporalmente", - "body": "Hola {username}:\n\nDeshabilitamos temporalmente tu cuenta de {product_name} porque detectamos actividad sospechosa.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara recuperar el acceso a tu cuenta, deberás restablecer tu contraseña:\n\n{forgotUrl}\n\nDespués de restablecer tu contraseña, podrás iniciar sesión de nuevo.\n\nSi crees que esto fue un error, comunícate con nuestro equipo de soporte.\n\n– Equipo de seguridad de {product_name}" - }, "account_scheduled_deletion": { "subject": "Tu cuenta de {product_name} será eliminada permanentemente", "body": "Hola {username}:\n\nSe ha programado la eliminación permanente de tu cuenta de {product_name} debido a infracciones de nuestros Términos del servicio o Normas de la comunidad.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nPor favor, revisa:\n- Términos del servicio: {termsUrl}\n- Normas de la comunidad: {guidelinesUrl}\n\nProceso de apelación:\nSi crees que esta decisión fue incorrecta o injustificada, tienes 60 días para presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\nEn tu apelación:\n- Explica claramente por qué crees que la decisión fue incorrecta o injustificada\n- Aporta las pruebas o el contexto que consideres relevantes\n\nUn miembro del Equipo de seguridad de {product_name} revisará tu apelación y podrá pausar la eliminación pendiente hasta que se haya tomado una decisión final.\n\n– Equipo de seguridad de {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_ES_419_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Se cambió tu correo electrónico en {product_name}", - "body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} se cambió a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, eliminará los números de teléfono vinculados, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de seguridad de {product_name}" + "body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} se cambió a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de seguridad de {product_name}" }, "email_verification": { "subject": "Verifica tu dirección de correo electrónico en {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/es-ES.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/es-ES.ts index d9982e94d..2b0138480 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/es-ES.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/es-ES.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_ES_ES_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "La eliminación de tu cuenta de {product_name} está programada", "body": "Hola {username}:\n\nTal y como solicitaste, la eliminación permanente de tu cuenta de {product_name} está programada para el:\n\n{deletionDate, date, full} a las {deletionDate, time, short}{reason, select, null {} other {\n\nMotivo: {reason}}}\n\nTu cuenta permanecerá bloqueada hasta entonces. Si no solicitaste esto, o si quieres conservar tu cuenta, ponte en contacto con {safety_email} desde esta dirección de correo electrónico antes de esa fecha.\n\n– Equipo de {product_name}" }, - "account_disabled_suspicious": { - "subject": "Tu cuenta de {product_name} ha sido deshabilitada temporalmente", - "body": "Hola {username}:\n\nHemos deshabilitado temporalmente tu cuenta de {product_name} porque hemos detectado actividad sospechosa.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara recuperar el acceso a tu cuenta, tendrás que restablecer tu contraseña:\n\n{forgotUrl}\n\nDespués de restablecer tu contraseña, podrás iniciar sesión de nuevo.\n\nSi crees que esto ha sido un error, ponte en contacto con nuestro equipo de soporte.\n\n– Equipo de seguridad de {product_name}" - }, "account_scheduled_deletion": { "subject": "Tu cuenta de {product_name} será eliminada permanentemente", "body": "Hola {username}:\n\nSe ha programado la eliminación permanente de tu cuenta de {product_name} debido a infracciones de nuestras Condiciones del servicio o Normas de la comunidad.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nPor favor, revisa:\n- Condiciones del servicio: {termsUrl}\n- Normas de la comunidad: {guidelinesUrl}\n\nProceso de apelación:\nSi crees que esta decisión fue incorrecta o injustificada, tienes 60 días para presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\nEn tu apelación:\n- Explica claramente por qué crees que la decisión fue incorrecta o injustificada\n- Aporta las pruebas o el contexto que consideres relevantes\n\nUn miembro del Equipo de seguridad de {product_name} revisará tu apelación y podrá pausar la eliminación pendiente hasta que se haya tomado una decisión final.\n\n– Equipo de seguridad de {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_ES_ES_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Se ha cambiado tu correo electrónico en {product_name}", - "body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} ha sido cambiada a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, eliminará los números de teléfono vinculados, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de seguridad de {product_name}" + "body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} ha sido cambiada a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de seguridad de {product_name}" }, "email_verification": { "subject": "Verifica tu dirección de correo electrónico en {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/fi.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/fi.ts index 66c207366..fa9f3f92e 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/fi.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/fi.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_FI_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "{product_name}-tilisi poistaminen on ajoitettu", "body": "Hei {username},\n\nPyyntösi mukaisesti {product_name}-tilisi on ajoitettu poistettavaksi pysyvästi:\n\n{deletionDate, date, full} klo {deletionDate, time, short}{reason, select, null {} other {\n\nSyy: {reason}}}\n\nTilisi on lukittu siihen asti. Jos et pyytänyt tätä tai haluat säilyttää tilisi, ota yhteyttä osoitteeseen {safety_email} tästä sähköpostiosoitteesta ennen tätä päivämäärää.\n\n– {product_name}-tiimi" }, - "account_disabled_suspicious": { - "subject": "Käyttäjätilisi {product_name}-palvelussa on tilapäisesti poistettu käytöstä", - "body": "Hei {username},\n\nOlemme poistaneet {product_name}-tilisi tilapäisesti käytöstä, koska havaitsimme epäilyttävää toimintaa.\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nPäästäksesi takaisin tilillesi sinun on nollattava salasanasi:\n\n{forgotUrl}\n\nKun olet nollannut salasanasi, voit kirjautua sisään uudelleen.\n\nJos uskot, että tämä oli virhe, ota yhteyttä tukitiimiimme.\n\n– {product_name}-turvallisuustiimi" - }, "account_scheduled_deletion": { "subject": "Käyttäjätilisi {product_name}-palvelussa poistetaan pysyvästi", "body": "Hei {username},\n\n{product_name}-käyttäjätilisi on ajoitettu poistettavaksi pysyvästi käyttöehtojemme tai yhteisösääntöjemme rikkomisen vuoksi.\n\nAjoitettu poisto: {deletionDate, date, full} klo {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nTämä on vakava toimenpide. Tilisi tiedot poistetaan pysyvästi ajoitettuna päivänä.\n\nTutustu:\n- Käyttöehdot: {termsUrl}\n- Yhteisön säännöt: {guidelinesUrl}\n\nValitusprosessi:\nJos uskot, että tämä päätös oli virheellinen tai perusteeton, sinulla on 60 päivää aikaa tehdä valitus. Lähetä sähköpostia osoitteeseen {appeals_email} tästä sähköpostiosoitteesta.\n\nValituksessasi:\n- Selitä selkeästi, miksi uskot päätöksen olleen virheellinen tai perusteeton\n- Liitä mukaan asiaankuuluvat todisteet tai taustatiedot\n\n{product_name}-turvallisuustiimin jäsen käsittelee valituksesi ja voi keskeyttää vireillä olevan poiston, kunnes lopullinen päätös on tehty.\n\n– {product_name}-turvallisuustiimi" @@ -49,7 +45,7 @@ const EMAIL_I18N_FI_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "{product_name}-tilisi sähköpostiosoite on vaihdettu", - "body": "Hei {username},\n\nSähköpostiosoitteesi {product_name}-tilillä on vaihdettu osoitteeseen {newEmail}.\n\nJos teit tämän muutoksen, toimenpiteitä ei tarvita. Jos et tehnyt, voit kumota muutoksen ja turvata tilisi käyttämällä tätä linkkiä:\n\n{revertUrl}\n\nTämä palauttaa edellisen sähköpostiosoitteesi, kirjaa sinut ulos kaikkialta, poistaa linkitetyt puhelinnumerot, poistaa MFA:n käytöstä ja edellyttää uuden salasanan asettamista.\n\n– {product_name}-turvallisuustiimi" + "body": "Hei {username},\n\nSähköpostiosoitteesi {product_name}-tilillä on vaihdettu osoitteeseen {newEmail}.\n\nJos teit tämän muutoksen, toimenpiteitä ei tarvita. Jos et tehnyt, voit kumota muutoksen ja turvata tilisi käyttämällä tätä linkkiä:\n\n{revertUrl}\n\nTämä palauttaa edellisen sähköpostiosoitteesi, kirjaa sinut ulos kaikkialta, poistaa MFA:n käytöstä ja edellyttää uuden salasanan asettamista.\n\n– {product_name}-turvallisuustiimi" }, "email_verification": { "subject": "Vahvista sähköpostiosoitteesi {product_name}-tilillä", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/fr.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/fr.ts index 4c3e92ac9..9f846e34d 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/fr.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/fr.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_FR_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "La suppression de votre compte {product_name} est programmée", "body": "Bonjour {username},\n\nComme vous l’avez demandé, la suppression définitive de votre compte {product_name} est prévue le :\n\n{deletionDate, date, full} à {deletionDate, time, short}{reason, select, null {} other {\n\nMotif : {reason}}}\n\nVotre compte est verrouillé d’ici là. Si vous n’êtes pas à l’origine de cette demande, ou si vous souhaitez conserver votre compte, contactez {safety_email} depuis cette adresse e-mail avant cette date.\n\n– L’équipe {product_name}" }, - "account_disabled_suspicious": { - "subject": "Votre compte {product_name} a été temporairement désactivé", - "body": "Bonjour {username},\n\nNous avons temporairement désactivé votre compte {product_name} après avoir détecté une activité suspecte.\n\n{reason, select, null {} other {Motif : {reason}}}\n\nPour retrouver l’accès à votre compte, réinitialisez votre mot de passe :\n\n{forgotUrl}\n\nVous pourrez ensuite vous connecter à nouveau.\n\nSi vous pensez qu’il s’agit d’une erreur, contactez notre équipe d’assistance.\n\n– L’équipe de sécurité de {product_name}" - }, "account_scheduled_deletion": { "subject": "Votre compte {product_name} sera définitivement supprimé", "body": "Bonjour {username},\n\nLa suppression définitive de votre compte {product_name} a été programmée en raison de violations de nos conditions d’utilisation ou des règles de la communauté.\n\nSuppression prévue : {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select, null {} other {Motif : {reason}}}\n\nIl s’agit d’une sanction importante. Les données de votre compte seront définitivement supprimées à la date prévue.\n\nVeuillez consulter :\n- Conditions d’utilisation : {termsUrl}\n- Règles de la communauté : {guidelinesUrl}\n\nProcédure de recours :\nSi vous estimez que cette décision est incorrecte ou injustifiée, vous disposez de 60 jours pour déposer un recours. Écrivez à {appeals_email} depuis cette adresse e-mail.\n\nDans votre recours :\n- Expliquez clairement pourquoi vous estimez la décision incorrecte ou injustifiée\n- Fournissez tout élément de preuve ou de contexte pertinent\n\nUn membre de l’équipe de sécurité de {product_name} examinera votre recours et pourra suspendre la suppression prévue jusqu’à la décision finale.\n\n– L’équipe de sécurité de {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_FR_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Votre adresse e-mail {product_name} a été modifiée", - "body": "Bonjour {username},\n\nL’adresse e-mail de votre compte {product_name} a été remplacée par {newEmail}.\n\nSi vous avez effectué ce changement, vous n’avez rien à faire. Sinon, vous pouvez l’annuler et sécuriser votre compte avec ce lien :\n\n{revertUrl}\n\nVotre ancienne adresse e-mail sera rétablie, toutes vos sessions seront fermées, les numéros de téléphone associés seront supprimés et l’authentification multifacteur sera désactivée. Vous devrez aussi définir un nouveau mot de passe.\n\n– L’équipe de sécurité de {product_name}" + "body": "Bonjour {username},\n\nL’adresse e-mail de votre compte {product_name} a été remplacée par {newEmail}.\n\nSi vous avez effectué ce changement, vous n’avez rien à faire. Sinon, vous pouvez l’annuler et sécuriser votre compte avec ce lien :\n\n{revertUrl}\n\nVotre ancienne adresse e-mail sera rétablie, toutes vos sessions seront fermées et l’authentification multifacteur sera désactivée. Vous devrez aussi définir un nouveau mot de passe.\n\n– L’équipe de sécurité de {product_name}" }, "email_verification": { "subject": "Vérifiez votre adresse e-mail {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/he.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/he.ts index 8ad3943a7..68b9c79ed 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/he.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/he.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_HE_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "מחיקת חשבון ה-{product_name} שלכם מתוזמנת", "body": "שלום {username},\n\nבהתאם לבקשתכם, חשבון ה-{product_name} שלכם מתוכנן להימחק לצמיתות בתאריך:\n\n{deletionDate, date, full} בשעה {deletionDate, time, short}{reason, select, null {} other {\n\nסיבה: {reason}}}\n\nעד אז החשבון שלכם נעול. אם לא ביקשתם זאת, או שברצונכם לשמור על החשבון, צרו קשר עם {safety_email} מכתובת האימייל הזו לפני תאריך זה.\n\nצוות {product_name}" }, - "account_disabled_suspicious": { - "subject": "חשבון ה-{product_name} שלכם הושבת זמנית", - "body": "שלום {username},\n\nהשבתנו זמנית את חשבון ה-{product_name} שלכם מכיוון שזיהינו פעילות חשודה.\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nכדי לשחזר את הגישה לחשבון, תצטרכו לאפס את הסיסמה:\n\n{forgotUrl}\n\nלאחר שתאפסו את הסיסמה, תוכלו להתחבר שוב.\n\nאם אתם חושבים שזו טעות, צרו קשר עם צוות התמיכה שלנו.\n\nצוות הבטיחות של {product_name}" - }, "account_scheduled_deletion": { "subject": "חשבון ה-{product_name} שלכם יימחק לצמיתות", "body": "שלום {username},\n\nחשבון ה-{product_name} שלכם נקבע למחיקה לצמיתות עקב הפרות של תנאי השירות או הנחיות הקהילה שלנו.\n\nמחיקה מתוזמנת: {deletionDate, date, full} בשעה {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nזוהי פעולת אכיפה חמורה. נתוני החשבון שלכם יימחקו לצמיתות בתאריך המתוכנן.\n\nאנא עיינו במסמכים הבאים:\n- תנאי השירות: {termsUrl}\n- הנחיות הקהילה: {guidelinesUrl}\n\nתהליך ערעור:\nאם אתם חושבים שהחלטת האכיפה שגויה או בלתי מוצדקת, יש לכם 60 יום להגיש ערעור. שלחו אימייל לכתובת {appeals_email} מכתובת האימייל הזו.\n\nבערעור:\n- הסבירו בבירור מדוע לדעתכם החלטת האכיפה שגויה או בלתי מוצדקת\n- צרפו כל ראיה או הקשר רלוונטיים\n\nחבר בצוות הבטיחות של {product_name} יבדוק את הערעור שלכם ועשוי להשהות את המחיקה הממתינה עד לקבלת החלטה סופית.\n\nצוות הבטיחות של {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_HE_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "האימייל שלכם ב-{product_name} שונה", - "body": "שלום {username},\n\nכתובת האימייל בחשבון ה-{product_name} שלכם שונתה ל-{newEmail}.\n\nאם אתם ביצעתם שינוי זה, אין צורך בפעולה. אם לא, אתם יכולים לבטל את השינוי ולאבטח את חשבונכם באמצעות קישור זה:\n\n{revertUrl}\n\nפעולה זו תשחזר את האימייל הקודם שלכם, תנתק אתכם מכל המכשירים, תסיר מספרי טלפון מקושרים, תבטל את האימות הרב-שלבי (MFA), ותדרוש מכם להגדיר סיסמה חדשה.\n\nצוות הבטיחות של {product_name}" + "body": "שלום {username},\n\nכתובת האימייל בחשבון ה-{product_name} שלכם שונתה ל-{newEmail}.\n\nאם אתם ביצעתם שינוי זה, אין צורך בפעולה. אם לא, אתם יכולים לבטל את השינוי ולאבטח את חשבונכם באמצעות קישור זה:\n\n{revertUrl}\n\nפעולה זו תשחזר את האימייל הקודם שלכם, תנתק אתכם מכל המכשירים, תבטל את האימות הרב-שלבי (MFA), ותדרוש מכם להגדיר סיסמה חדשה.\n\nצוות הבטיחות של {product_name}" }, "email_verification": { "subject": "אימות האימייל שלכם ב-{product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/hi.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/hi.ts index 065ed08d5..60d10f2ca 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/hi.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/hi.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_HI_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "आपके {product_name} अकाउंट का डिलीशन शेड्यूल कर दिया गया है", "body": "नमस्ते {username},\n\nआपके अनुरोध के अनुसार, आपके {product_name} अकाउंट को हमेशा के लिए डिलीट करने के लिए शेड्यूल कर दिया गया है:\n\n{deletionDate, date, full} को {deletionDate, time, short} पर{reason, select, null {} other {\n\nवजह: {reason}}}\n\nतब तक आपका अकाउंट लॉक रहेगा। अगर आपने इसका अनुरोध नहीं किया था, या आप अपना अकाउंट रखना चाहते हैं, तो उस तारीख से पहले इसी ईमेल पते से {safety_email} पर संपर्क करें।\n\n– {product_name} टीम" }, - "account_disabled_suspicious": { - "subject": "आपका {product_name} अकाउंट अस्थायी रूप से डिसेबल कर दिया गया है", - "body": "नमस्ते {username},\n\nहमने आपके {product_name} अकाउंट को अस्थायी रूप से डिसेबल कर दिया है क्योंकि हमने संदिग्ध एक्टिविटी देखी है।\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nअपने अकाउंट का एक्सेस फिर से पाने के लिए, आपको अपना पासवर्ड रीसेट करना होगा:\n\n{forgotUrl}\n\nअपना पासवर्ड रीसेट करने के बाद, आप फिर से लॉगिन कर पाएँगे।\n\nअगर आपको लगता है कि यह गलती से हुआ है, तो कृपया हमारी सपोर्ट टीम से संपर्क करें।\n\n– {product_name} सेफ्टी टीम" - }, "account_scheduled_deletion": { "subject": "आपका {product_name} अकाउंट हमेशा के लिए डिलीट कर दिया जाएगा", "body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट को हमारी सेवा की शर्तों या कम्युनिटी गाइडलाइंस के उल्लंघन के कारण हमेशा के लिए डिलीट करने के लिए शेड्यूल किया गया है।\n\nडिलीशन की निर्धारित तारीख: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nयह एक गंभीर कार्रवाई है। आपके अकाउंट का डेटा निर्धारित तारीख पर हमेशा के लिए डिलीट कर दिया जाएगा।\n\nकृपया देखें:\n- सेवा की शर्तें: {termsUrl}\n- कम्युनिटी गाइडलाइंस: {guidelinesUrl}\n\nअपील प्रक्रिया:\nअगर आपको लगता है कि यह फैसला गलत या अनुचित था, तो आपके पास अपील सबमिट करने के लिए 60 दिन हैं। इस ईमेल पते से {appeals_email} पर ईमेल करें।\n\nअपनी अपील में:\n- साफ़ तौर पर बताएं कि आपको क्यों लगता है कि यह फैसला गलत या अनुचित था\n- कोई भी प्रासंगिक सबूत या जानकारी दें\n\n{product_name} सेफ्टी टीम का एक सदस्य आपकी अपील का रिव्यू करेगा और अंतिम फैसला आने तक डिलीट होने की प्रक्रिया को रोक सकता है।\n\n– {product_name} सेफ्टी टीम" @@ -49,7 +45,7 @@ const EMAIL_I18N_HI_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "आपका {product_name} ईमेल बदल दिया गया है", - "body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट पर ईमेल पता बदलकर {newEmail} कर दिया गया है।\n\nअगर आपने यह बदलाव किया है, तो किसी कार्रवाई की ज़रूरत नहीं है। अगर आपने नहीं किया है, तो आप इस लिंक का उपयोग करके बदलाव को वापस ले सकते हैं और अपना अकाउंट सुरक्षित कर सकते हैं:\n\n{revertUrl}\n\nयह आपके पिछले ईमेल को रीस्टोर करेगा, आपको हर जगह से साइन आउट करेगा, लिंक किए गए फ़ोन नंबर हटाएगा, MFA को डिसेबल करेगा, और आपको एक नया पासवर्ड सेट करने की ज़रूरत होगी।\n\n– {product_name} सेफ्टी टीम" + "body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट पर ईमेल पता बदलकर {newEmail} कर दिया गया है।\n\nअगर आपने यह बदलाव किया है, तो किसी कार्रवाई की ज़रूरत नहीं है। अगर आपने नहीं किया है, तो आप इस लिंक का उपयोग करके बदलाव को वापस ले सकते हैं और अपना अकाउंट सुरक्षित कर सकते हैं:\n\n{revertUrl}\n\nयह आपके पिछले ईमेल को रीस्टोर करेगा, आपको हर जगह से साइन आउट करेगा, MFA को डिसेबल करेगा, और आपको एक नया पासवर्ड सेट करने की ज़रूरत होगी।\n\n– {product_name} सेफ्टी टीम" }, "email_verification": { "subject": "अपना {product_name} ईमेल पता वेरिफ़ाई करें", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/hr.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/hr.ts index 2ee88b6a4..def902073 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/hr.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/hr.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_HR_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Brisanje tvog računa na {product_name}u je zakazano", "body": "Pozdrav {username},\n\nNa tvoj zahtjev, tvoj račun na {product_name}u zakazan je za trajno brisanje:\n\n{deletionDate, date, full} u {deletionDate, time, short}{reason, select, null {} other {\n\nRazlog: {reason}}}\n\nDo tada je tvoj račun zaključan. Ako ovaj zahtjev ne dolazi od tebe ili želiš zadržati račun, kontaktiraj {safety_email} s ove adrese e-pošte prije tog datuma.\n\n– Tim {product_name}a" }, - "account_disabled_suspicious": { - "subject": "Tvoj račun na {product_name}u privremeno je onemogućen", - "body": "Pozdrav {username},\n\nPrivremeno smo onemogućili tvoj račun na {product_name}u jer smo otkrili sumnjivu aktivnost.\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nZa ponovni pristup svom računu morat ćeš poništiti lozinku:\n\n{forgotUrl}\n\nNakon što poništiš lozinku, moći ćeš se ponovno prijaviti.\n\nAko misliš da je ovo pogreška, kontaktiraj naš tim za podršku.\n\n– Sigurnosni tim {product_name}a" - }, "account_scheduled_deletion": { "subject": "Tvoj račun na {product_name}u bit će trajno izbrisan", "body": "Pozdrav {username},\n\nTvoj račun na {product_name}u zakazan je za trajno brisanje zbog kršenja naših Uvjeta pružanja usluge ili Smjernica zajednice.\n\nZakazano brisanje: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nOvo je ozbiljna mjera. Podaci tvog računa bit će trajno izbrisani na zakazani datum.\n\nPregledaj:\n- Uvjeti pružanja usluge: {termsUrl}\n- Smjernice zajednice: {guidelinesUrl}\n\nPostupak žalbe:\nAko smatraš da je ova odluka bila netočna ili neopravdana, imaš 60 dana za podnošenje žalbe. Pošalji e-poštu na {appeals_email} s ove adrese e-pošte.\n\nU svojoj žalbi:\n- Jasno objasni zašto smatraš da je odluka bila netočna ili neopravdana\n- Navedi sve relevantne dokaze ili kontekst\n\nČlan Sigurnosnog tima {product_name}a pregledat će tvoju žalbu i može privremeno zaustaviti zakazano brisanje dok se ne donese konačna odluka.\n\n– Sigurnosni tim {product_name}a" @@ -49,7 +45,7 @@ const EMAIL_I18N_HR_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Tvoja e-pošta za {product_name} je promijenjena", - "body": "Pozdrav {username},\n\nAdresa e-pošte na tvom računu na {product_name}u promijenjena je u {newEmail}.\n\nAko ova promjena dolazi od tebe, nije potrebna nikakva radnja. Ako ne dolazi, možeš je poništiti i zaštititi svoj račun ovom poveznicom:\n\n{revertUrl}\n\nOvo će vratiti tvoju prethodnu e-poštu, odjaviti te iz svih sesija, ukloniti povezane telefonske brojeve, onemogućiti višefaktorsku autentifikaciju i zahtijevati postavljanje nove lozinke.\n\n– Sigurnosni tim {product_name}a" + "body": "Pozdrav {username},\n\nAdresa e-pošte na tvom računu na {product_name}u promijenjena je u {newEmail}.\n\nAko ova promjena dolazi od tebe, nije potrebna nikakva radnja. Ako ne dolazi, možeš je poništiti i zaštititi svoj račun ovom poveznicom:\n\n{revertUrl}\n\nOvo će vratiti tvoju prethodnu e-poštu, odjaviti te iz svih sesija, onemogućiti višefaktorsku autentifikaciju i zahtijevati postavljanje nove lozinke.\n\n– Sigurnosni tim {product_name}a" }, "email_verification": { "subject": "Potvrdi svoju e-poštu za {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/hu.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/hu.ts index 5cee78ebd..ce15cacf3 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/hu.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/hu.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_HU_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Ütemeztük {product_name}-fiókod törlését", "body": "Szia, {username}!\n\nKérésedre {product_name}-fiókod végleges törlése a következő időpontra van ütemezve:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\nIndok: {reason}}}\n\nAddig a fiókod zárolva van. Ha nem te kérted ezt, vagy meg szeretnéd tartani a fiókodat, még az időpont előtt írj erről az e-mail-címről erre a címre: {safety_email}.\n\n– {product_name} csapata" }, - "account_disabled_suspicious": { - "subject": "{product_name}-fiókodat ideiglenesen letiltottuk", - "body": "Szia, {username}!\n\nIdeiglenesen letiltottuk a {product_name}-fiókodat, mert gyanús tevékenységet észleltünk.\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nA fiókodhoz való hozzáférés visszaszerzéséhez vissza kell állítanod a jelszavadat:\n\n{forgotUrl}\n\nA jelszó visszaállítása után újra be tudsz jelentkezni.\n\nHa úgy gondolod, hogy ez tévedésből történt, vedd fel a kapcsolatot az ügyfélszolgálatunkkal.\n\n– {product_name} biztonsági csapata" - }, "account_scheduled_deletion": { "subject": "{product_name}-fiókodat véglegesen törölni fogjuk", "body": "Szia, {username}!\n\n{product_name}-fiókod végleges törlését ütemeztük a szolgáltatási feltételeink vagy a közösségi irányelveink megsértése miatt.\n\nA törlés tervezett időpontja: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nEz súlyos moderációs intézkedés. Fiókod adatait a megadott időpontban véglegesen töröljük.\n\nKérjük, olvasd át az alábbiakat:\n- Szolgáltatási feltételek: {termsUrl}\n- Közösségi irányelvek: {guidelinesUrl}\n\nFellebbezés:\nHa úgy gondolod, hogy ez a döntés hibás vagy indokolatlan volt, 60 napod van fellebbezni. Erről az e-mail-címről írj a következő címre: {appeals_email}.\n\nA fellebbezésben:\n- Világosan fejtsd ki, miért gondolod, hogy a döntés hibás vagy indokolatlan volt.\n- Add meg a kapcsolódó bizonyítékokat és a körülményeket.\n\nA {product_name} biztonsági csapatának egyik tagja elbírálja a fellebbezésedet, és a végleges döntésig felfüggesztheti a tervezett törlést.\n\n– {product_name} biztonsági csapata" @@ -49,7 +45,7 @@ const EMAIL_I18N_HU_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Megváltozott {product_name}-fiókod e-mail-címe", - "body": "Szia, {username}!\n\n{product_name}-fiókod e-mail-címe a következőre változott: {newEmail}.\n\nHa te módosítottad, nincs további teendőd. Ha nem te voltál, az alábbi linken visszavonhatod a módosítást, és biztonságba helyezheted a fiókodat:\n\n{revertUrl}\n\nEzzel visszaállítjuk a korábbi e-mail-címedet, mindenhol kijelentkeztetünk, eltávolítjuk a kapcsolt telefonszámokat, kikapcsoljuk a többfaktoros azonosítást, és új jelszót kell beállítanod.\n\n– {product_name} biztonsági csapata" + "body": "Szia, {username}!\n\n{product_name}-fiókod e-mail-címe a következőre változott: {newEmail}.\n\nHa te módosítottad, nincs további teendőd. Ha nem te voltál, az alábbi linken visszavonhatod a módosítást, és biztonságba helyezheted a fiókodat:\n\n{revertUrl}\n\nEzzel visszaállítjuk a korábbi e-mail-címedet, mindenhol kijelentkeztetünk, kikapcsoljuk a többfaktoros azonosítást, és új jelszót kell beállítanod.\n\n– {product_name} biztonsági csapata" }, "email_verification": { "subject": "Erősítsd meg {product_name}-fiókod e-mail-címét", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/id.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/id.ts index 7b2b9b477..1dce811e7 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/id.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/id.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_ID_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Penghapusan akun {product_name} kamu telah dijadwalkan", "body": "Halo {username},\n\nSesuai permintaanmu, akun {product_name} kamu dijadwalkan untuk dihapus permanen pada:\n\n{deletionDate, date, full} pukul {deletionDate, time, short}{reason, select, null {} other {\n\nAlasan: {reason}}}\n\nAkunmu dikunci hingga saat itu. Jika kamu tidak meminta ini, atau ingin mempertahankan akunmu, hubungi {safety_email} dari alamat email ini sebelum tanggal tersebut.\n\n– Tim {product_name}" }, - "account_disabled_suspicious": { - "subject": "Akun {product_name} kamu telah dinonaktifkan sementara", - "body": "Halo {username},\n\nKami menonaktifkan sementara akun {product_name} kamu karena kami mendeteksi aktivitas mencurigakan.\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nUntuk mendapatkan kembali akses ke akunmu, kamu perlu mengatur ulang kata sandimu:\n\n{forgotUrl}\n\nSetelah mengatur ulang kata sandi, kamu bisa masuk lagi.\n\nJika kamu merasa ini keliru, silakan hubungi tim dukungan kami.\n\n– Tim Keamanan {product_name}" - }, "account_scheduled_deletion": { "subject": "Akun {product_name} kamu akan dihapus secara permanen", "body": "Halo {username},\n\nAkun {product_name} kamu telah dijadwalkan untuk dihapus permanen karena melanggar Ketentuan Layanan atau Pedoman Komunitas kami.\n\nPenghapusan terjadwal: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nIni adalah tindakan penegakan yang serius. Data akunmu akan dihapus permanen pada tanggal yang dijadwalkan.\n\nSilakan tinjau:\n- Ketentuan Layanan: {termsUrl}\n- Pedoman Komunitas: {guidelinesUrl}\n\nProses banding:\nJika kamu yakin keputusan ini keliru atau tidak beralasan, kamu punya 60 hari untuk mengajukan banding. Kirim email ke {appeals_email} dari alamat email ini.\n\nDalam bandingmu:\n- Uraikan dengan jelas kenapa kamu yakin keputusan ini keliru atau tidak beralasan\n- Berikan bukti atau konteks yang relevan\n\nAnggota Tim Keamanan {product_name} akan meninjau bandingmu dan bisa menunda penghapusan sampai keputusan akhir tercapai.\n\n– Tim Keamanan {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_ID_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Email {product_name} kamu telah diubah", - "body": "Halo {username},\n\nAlamat email di akun {product_name} kamu telah diubah menjadi {newEmail}.\n\nJika ini memang kamu, tidak ada yang perlu dilakukan. Jika bukan, kamu bisa membatalkan perubahan itu dan mengamankan akunmu lewat tautan ini:\n\n{revertUrl}\n\nTindakan ini akan mengembalikan email lamamu, mengeluarkanmu dari semua perangkat, menghapus nomor telepon yang tertaut, menonaktifkan MFA, dan mengharuskanmu membuat kata sandi baru.\n\n– Tim Keamanan {product_name}" + "body": "Halo {username},\n\nAlamat email di akun {product_name} kamu telah diubah menjadi {newEmail}.\n\nJika ini memang kamu, tidak ada yang perlu dilakukan. Jika bukan, kamu bisa membatalkan perubahan itu dan mengamankan akunmu lewat tautan ini:\n\n{revertUrl}\n\nTindakan ini akan mengembalikan email lamamu, mengeluarkanmu dari semua perangkat, menonaktifkan MFA, dan mengharuskanmu membuat kata sandi baru.\n\n– Tim Keamanan {product_name}" }, "email_verification": { "subject": "Verifikasi alamat email {product_name} kamu", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/it.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/it.ts index c8bd17250..596b1e8b8 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/it.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/it.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_IT_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "L'eliminazione del tuo account {product_name} è programmata", "body": "Ciao {username},\n\nCome da tua richiesta, il tuo account {product_name} verrà eliminato definitivamente in questa data:\n\n{deletionDate, date, full} alle {deletionDate, time, short}{reason, select, null {} other {\n\nMotivo: {reason}}}\n\nFino ad allora il tuo account è bloccato. Se non hai richiesto l'eliminazione o se vuoi mantenere il tuo account, contatta {safety_email} da questo indirizzo email prima di tale data.\n\n– Il team di {product_name}" }, - "account_disabled_suspicious": { - "subject": "Il tuo account {product_name} è stato temporaneamente disabilitato", - "body": "Ciao {username},\n\nAbbiamo temporaneamente disabilitato il tuo account {product_name} perché abbiamo rilevato attività sospette.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPer riottenere l'accesso al tuo account, dovrai reimpostare la password:\n\n{forgotUrl}\n\nDopo aver reimpostato la password, potrai accedere di nuovo.\n\nSe ritieni che ciò sia stato fatto per errore, contatta il nostro team di assistenza.\n\n– Il team per la sicurezza di {product_name}" - }, "account_scheduled_deletion": { "subject": "Il tuo account {product_name} verrà eliminato definitivamente", "body": "Ciao {username},\n\nÈ stata programmata l’eliminazione definitiva del tuo account {product_name} a causa di violazioni dei nostri Termini di servizio o delle Linee guida della community.\n\nEliminazione programmata: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nSi tratta di un provvedimento grave. I dati del tuo account verranno eliminati definitivamente alla data programmata.\n\nConsulta:\n- Termini di servizio: {termsUrl}\n- Linee guida della community: {guidelinesUrl}\n\nProcedura di ricorso:\nSe ritieni che questa decisione sia scorretta o ingiustificata, hai 60 giorni per presentare un ricorso. Invia un'email a {appeals_email} da questo indirizzo email.\n\nNel tuo ricorso:\n- Spiega chiaramente perché ritieni che la decisione sia scorretta o ingiustificata\n- Fornisci qualsiasi prova o contesto pertinente\n\nUn membro del team per la sicurezza {product_name} esaminerà il tuo ricorso e potrebbe sospendere l’eliminazione programmata fino a quando non sarà stata raggiunta una decisione finale.\n\n– Il team per la sicurezza di {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_IT_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Il tuo indirizzo email su {product_name} è stato modificato", - "body": "Ciao {username},\n\nL'indirizzo email del tuo account {product_name} è stato modificato in {newEmail}.\n\nSe hai effettuato questa modifica, non è necessaria alcuna azione. In caso contrario, puoi annullare la modifica e mettere in sicurezza il tuo account utilizzando questo link:\n\n{revertUrl}\n\nQuesto ripristinerà la tua email precedente, ti disconnetterà da tutti i dispositivi, rimuoverà i numeri di telefono collegati, disabiliterà l'MFA e ti richiederà di impostare una nuova password.\n\n– Il team per la sicurezza di {product_name}" + "body": "Ciao {username},\n\nL'indirizzo email del tuo account {product_name} è stato modificato in {newEmail}.\n\nSe hai effettuato questa modifica, non è necessaria alcuna azione. In caso contrario, puoi annullare la modifica e mettere in sicurezza il tuo account utilizzando questo link:\n\n{revertUrl}\n\nQuesto ripristinerà la tua email precedente, ti disconnetterà da tutti i dispositivi, disabiliterà l'MFA e ti richiederà di impostare una nuova password.\n\n– Il team per la sicurezza di {product_name}" }, "email_verification": { "subject": "Verifica il tuo indirizzo email di {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/ja.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/ja.ts index 00f3f1880..f2161f941 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/ja.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/ja.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_JA_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "{product_name}アカウントの削除が予定されています", "body": "こんにちは、{username}さん\n\nリクエストに基づき、{product_name}アカウントは以下の日時に完全に削除される予定です。\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\n理由: {reason}}}\n\nそれまでアカウントはロックされます。ご自身でリクエストしていない場合、またはアカウントを維持したい場合は、この日時までにこのメールアドレスから{safety_email}へご連絡ください。\n\n– {product_name}チーム" }, - "account_disabled_suspicious": { - "subject": "{product_name}アカウントが一時的に無効になりました", - "body": "こんにちは、{username}さん\n\n不審なアクティビティが検出されたため、{product_name}アカウントを一時的に無効にしました。\n\n{reason, select,\n null {}\n other {理由: {reason}}\n}\n\nアカウントに再度アクセスするには、パスワードをリセットする必要があります。\n\n{forgotUrl}\n\nパスワードをリセットすると、再度ログインできるようになります。\n\nこの措置が誤りであると思われる場合は、サポートチームにお問い合わせください。\n\n– {product_name}安全チーム" - }, "account_scheduled_deletion": { "subject": "{product_name}アカウントは完全に削除されます", "body": "こんにちは、{username}さん\n\n{product_name}アカウントは、利用規約またはコミュニティガイドラインへの違反のため、完全な削除が予定されています。\n\n削除予定日時: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {理由: {reason}}\n}\n\nこれは重大な措置です。アカウントデータは、予定日に完全に削除されます。\n\n以下をご確認ください。\n- 利用規約: {termsUrl}\n- コミュニティガイドライン: {guidelinesUrl}\n\n異議申し立て手続き:\nこの措置が不正確または不当であると思われる場合は、60日以内に異議申し立てを提出できます。このメールアドレスから{appeals_email}までメールを送信してください。\n\n異議申し立てには、以下を記載してください。\n- 措置が不正確または不当であると考える理由の明確な説明\n- 関連する証拠や背景情報\n\n{product_name}安全チームのメンバーが異議申し立てを審査し、最終決定が下されるまで削除を一時停止する場合があります。\n\n– {product_name}安全チーム" @@ -49,7 +45,7 @@ const EMAIL_I18N_JA_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "{product_name}のメールアドレスが変更されました", - "body": "こんにちは、{username}さん\n\n{product_name}アカウントのメールアドレスが{newEmail}に変更されました。\n\nこの変更を行った場合は、何もする必要はありません。変更を行っていない場合は、このリンクを使用して変更を元に戻し、アカウントを保護できます。\n\n{revertUrl}\n\nこれにより、以前のメールアドレスが復元され、すべてのデバイスからログアウトされ、連携済みの電話番号が削除され、MFAが無効になり、新しいパスワードの設定が必要になります。\n\n– {product_name}安全チーム" + "body": "こんにちは、{username}さん\n\n{product_name}アカウントのメールアドレスが{newEmail}に変更されました。\n\nこの変更を行った場合は、何もする必要はありません。変更を行っていない場合は、このリンクを使用して変更を元に戻し、アカウントを保護できます。\n\n{revertUrl}\n\nこれにより、以前のメールアドレスが復元され、すべてのデバイスからログアウトされ、MFAが無効になり、新しいパスワードの設定が必要になります。\n\n– {product_name}安全チーム" }, "email_verification": { "subject": "{product_name}のメールアドレスを確認", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/ko.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/ko.ts index 5ebfd57d0..a9e749f1f 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/ko.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/ko.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_KO_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "{product_name} 계정 삭제가 예정되었어요", "body": "안녕하세요, {username}님.\n\n요청하신 대로 {product_name} 계정이 다음 날짜에 영구적으로 삭제될 예정이에요:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\n사유: {reason}}}\n\n그때까지 계정은 잠겨 있어요. 요청하지 않으셨거나 계정을 유지하고 싶다면 해당 날짜 전에 이 이메일 주소에서 {safety_email}으로 문의해 주세요.\n\n– {product_name} 팀" }, - "account_disabled_suspicious": { - "subject": "{product_name} 계정이 일시적으로 비활성화되었어요", - "body": "안녕하세요, {username}님.\n\n의심스러운 활동이 감지되어 {product_name} 계정을 일시적으로 비활성화했어요.\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n계정에 다시 액세스하려면 비밀번호를 재설정해야 해요:\n\n{forgotUrl}\n\n비밀번호를 재설정한 후 다시 로그인할 수 있어요.\n\n실수로 비활성화되었다고 생각되면 고객지원팀에 문의해 주세요.\n\n– {product_name} 안전팀" - }, "account_scheduled_deletion": { "subject": "{product_name} 계정이 영구적으로 삭제될 예정이에요", "body": "안녕하세요, {username}님.\n\n서비스 약관 또는 커뮤니티 가이드라인 위반으로 인해 {product_name} 계정이 영구적으로 삭제될 예정이에요.\n\n삭제 예정일: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n이는 중대한 조치이며, 계정 데이터는 예정된 날짜에 영구적으로 삭제될 예정이에요.\n\n다음 내용을 확인해 주세요:\n- 서비스 약관: {termsUrl}\n- 커뮤니티 가이드라인: {guidelinesUrl}\n\n이의 제기 절차:\n이 조치가 잘못되었거나 부당하다고 생각되면 60일 이내에 이의를 제기할 수 있어요. 이 이메일 주소에서 {appeals_email}으로 이메일을 보내 이의를 제기해 주세요.\n\n이의 제기 시에는:\n- 조치가 잘못되었거나 부당하다고 생각하는 이유를 명확하게 설명해 주세요.\n- 관련 증거 또는 맥락을 제공해 주세요.\n\n{product_name} 안전팀 담당자가 이의 제기를 검토하고 최종 결정이 내려질 때까지 삭제를 일시적으로 보류할 수 있어요.\n\n– {product_name} 안전팀" @@ -49,7 +45,7 @@ const EMAIL_I18N_KO_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "{product_name} 이메일이 변경되었어요", - "body": "안녕하세요, {username}님.\n\n{product_name} 계정의 이메일 주소가 {newEmail}로 변경되었어요.\n\n직접 변경하셨다면 별도의 조치는 필요 없어요. 직접 변경하지 않으셨다면 다음 링크를 사용하여 변경 사항을 되돌리고 계정을 보호할 수 있어요:\n\n{revertUrl}\n\n이전 이메일이 복원되고, 모든 기기에서 로그아웃되며, 연결된 전화번호가 제거되고, MFA가 비활성화되며, 새 비밀번호를 설정해야 해요.\n\n– {product_name} 안전팀" + "body": "안녕하세요, {username}님.\n\n{product_name} 계정의 이메일 주소가 {newEmail}로 변경되었어요.\n\n직접 변경하셨다면 별도의 조치는 필요 없어요. 직접 변경하지 않으셨다면 다음 링크를 사용하여 변경 사항을 되돌리고 계정을 보호할 수 있어요:\n\n{revertUrl}\n\n이전 이메일이 복원되고, 모든 기기에서 로그아웃되며, MFA가 비활성화되며, 새 비밀번호를 설정해야 해요.\n\n– {product_name} 안전팀" }, "email_verification": { "subject": "{product_name} 이메일 주소 인증", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/lt.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/lt.ts index 3c7223158..e9e252347 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/lt.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/lt.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_LT_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Tavo {product_name} paskyros ištrynimas numatytas", "body": "Sveiki, {username},\n\nTavo prašymu {product_name} paskyrą numatyta visam laikui ištrinti:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\nPriežastis: {reason}}}\n\nIki tol tavo paskyra užrakinta. Jei to neprašei arba nori išsaugoti paskyrą, iki šios datos parašyk adresu {safety_email} iš šio el. pašto adreso.\n\n– {product_name} komanda" }, - "account_disabled_suspicious": { - "subject": "Tavo {product_name} paskyra laikinai išjungta", - "body": "Sveiki, {username},\n\nLaikinai išjungėme tavo {product_name} paskyrą, nes aptikome įtartiną veiklą.\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nKad atgautum prieigą prie paskyros, turėsi iš naujo nustatyti slaptažodį:\n\n{forgotUrl}\n\nKai iš naujo nustatysi slaptažodį, galėsi vėl prisijungti.\n\nJei manai, kad tai įvyko per klaidą, susisiek su mūsų palaikymo komanda.\n\n– {product_name} saugos komanda" - }, "account_scheduled_deletion": { "subject": "Tavo {product_name} paskyra bus visam laikui ištrinta", "body": "Sveiki, {username},\n\nTavo {product_name} paskyrą numatyta visam laikui ištrinti dėl mūsų paslaugų teikimo sąlygų arba bendruomenės gairių pažeidimų.\n\nNumatytas ištrynimas: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nTai rimta priemonė. Tavo paskyros duomenys numatytą dieną bus visam laikui ištrinti.\n\nPeržiūrėk:\n- Paslaugų teikimo sąlygos: {termsUrl}\n- Bendruomenės gairės: {guidelinesUrl}\n\nApeliacijos procesas:\nJei manai, kad šis sprendimas neteisingas arba nepagrįstas, apeliaciją gali pateikti per 60 dienų. Iš šio el. pašto adreso siųsk el. laišką adresu {appeals_email}.\n\nSavo apeliacijoje:\n- Aiškiai paaiškink, kodėl manai, kad sprendimas neteisingas arba nepagrįstas\n- Pateik visus susijusius įrodymus ar kontekstą\n\n{product_name} saugos komandos narys peržiūrės tavo apeliaciją ir gali sustabdyti numatytą ištrynimą, kol bus priimtas galutinis sprendimas.\n\n– {product_name} saugos komanda" @@ -49,7 +45,7 @@ const EMAIL_I18N_LT_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Tavo {product_name} el. paštas buvo pakeistas", - "body": "Sveiki, {username},\n\nTavo {product_name} paskyros el. pašto adresas pakeistas į {newEmail}.\n\nJei šį pakeitimą atlikai tu, nieko daryti nereikia. Jei ne, šia nuoroda gali atšaukti pakeitimą ir apsaugoti savo paskyrą:\n\n{revertUrl}\n\nTai atkurs ankstesnį el. pašto adresą, atjungs tave visuose įrenginiuose, pašalins susietus telefono numerius, išjungs MFA ir pareikalaus nustatyti naują slaptažodį.\n\n– {product_name} saugos komanda" + "body": "Sveiki, {username},\n\nTavo {product_name} paskyros el. pašto adresas pakeistas į {newEmail}.\n\nJei šį pakeitimą atlikai tu, nieko daryti nereikia. Jei ne, šia nuoroda gali atšaukti pakeitimą ir apsaugoti savo paskyrą:\n\n{revertUrl}\n\nTai atkurs ankstesnį el. pašto adresą, atjungs tave visuose įrenginiuose, išjungs MFA ir pareikalaus nustatyti naują slaptažodį.\n\n– {product_name} saugos komanda" }, "email_verification": { "subject": "Patvirtink savo {product_name} el. pašto adresą", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/nl.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/nl.ts index a52d82deb..c76778ff9 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/nl.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/nl.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_NL_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "De verwijdering van je {product_name}-account staat gepland", "body": "Hallo {username},\n\nZoals je hebt verzocht, staat je {product_name}-account gepland voor permanente verwijdering op:\n\n{deletionDate, date, full} om {deletionDate, time, short}{reason, select, null {} other {\n\nReden: {reason}}}\n\nJe account is tot die tijd vergrendeld. Als je dit niet hebt aangevraagd of je account wilt behouden, neem dan vóór die datum vanaf dit e-mailadres contact op met {safety_email}.\n\n– Het team van {product_name}" }, - "account_disabled_suspicious": { - "subject": "Je {product_name}-account is tijdelijk uitgeschakeld", - "body": "Hallo {username},\n\nWe hebben je {product_name}-account tijdelijk uitgeschakeld omdat we verdachte activiteit hebben gedetecteerd.\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nOm weer toegang te krijgen tot je account, moet je je wachtwoord opnieuw instellen:\n\n{forgotUrl}\n\nNadat je je wachtwoord opnieuw hebt ingesteld, kun je weer inloggen.\n\nAls je denkt dat dit een fout is, neem dan contact op met ons supportteam.\n\n– Het veiligheidsteam van {product_name}" - }, "account_scheduled_deletion": { "subject": "Je {product_name}-account wordt permanent verwijderd", "body": "Hallo {username},\n\nJe {product_name}-account staat gepland voor permanente verwijdering vanwege schendingen van onze Gebruiksvoorwaarden of Communityrichtlijnen.\n\nGeplande verwijdering: {deletionDate, date, full} om {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nDit is een ingrijpende handhavingsmaatregel. Je accountgegevens worden permanent verwijderd op de geplande datum.\n\nBekijk ook:\n- Gebruiksvoorwaarden: {termsUrl}\n- Communityrichtlijnen: {guidelinesUrl}\n\nBezwaarprocedure:\nAls je van mening bent dat deze handhavingsbeslissing onjuist of ongerechtvaardigd was, heb je 60 dagen de tijd om bezwaar te maken. Stuur een e-mail naar {appeals_email} vanaf dit e-mailadres.\n\nVermeld in je bezwaar:\n- Een duidelijke uitleg waarom je van mening bent dat de handhavingsbeslissing onjuist of ongerechtvaardigd was\n- Alle relevante bewijzen of context\n\nEen medewerker van het veiligheidsteam van {product_name} zal je bezwaar beoordelen en kan de geplande verwijdering uitstellen totdat een definitieve beslissing is genomen.\n\n– Het veiligheidsteam van {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_NL_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Je e-mailadres op {product_name} is gewijzigd", - "body": "Hallo {username},\n\nHet e-mailadres van je {product_name}-account is gewijzigd naar {newEmail}.\n\nAls je deze wijziging zelf hebt aangebracht, hoef je niets te doen. Als je dit niet hebt gedaan, kun je de wijziging ongedaan maken en je account beveiligen via deze link:\n\n{revertUrl}\n\nDit herstelt je vorige e-mailadres, meldt je overal af, verwijdert gekoppelde telefoonnummers, schakelt MFA uit en vereist dat je een nieuw wachtwoord instelt.\n\n– Het veiligheidsteam van {product_name}" + "body": "Hallo {username},\n\nHet e-mailadres van je {product_name}-account is gewijzigd naar {newEmail}.\n\nAls je deze wijziging zelf hebt aangebracht, hoef je niets te doen. Als je dit niet hebt gedaan, kun je de wijziging ongedaan maken en je account beveiligen via deze link:\n\n{revertUrl}\n\nDit herstelt je vorige e-mailadres, meldt je overal af, schakelt MFA uit en vereist dat je een nieuw wachtwoord instelt.\n\n– Het veiligheidsteam van {product_name}" }, "email_verification": { "subject": "Verifieer je e-mailadres op {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/no.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/no.ts index be4df99dd..84cef595d 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/no.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/no.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_NO_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Slettingen av {product_name}-kontoen din er planlagt", "body": "Hei {username},\n\nSom du ba om, er {product_name}-kontoen din planlagt for permanent sletting:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}{reason, select, null {} other {\n\nÅrsak: {reason}}}\n\nKontoen din er låst frem til da. Hvis du ikke ba om dette, eller hvis du vil beholde kontoen din, kan du kontakte {safety_email} fra denne e-postadressen før denne datoen.\n\n– {product_name}-teamet" }, - "account_disabled_suspicious": { - "subject": "{product_name}-kontoen din er midlertidig deaktivert", - "body": "Hei {username},\n\nVi deaktiverte {product_name}-kontoen din midlertidig fordi vi oppdaget mistenkelig aktivitet.\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nFor å få tilgang til kontoen din igjen må du tilbakestille passordet ditt:\n\n{forgotUrl}\n\nEtter at du har tilbakestilt passordet ditt, kan du logge inn igjen.\n\nHvis du mener dette er en feil, kan du kontakte kundestøtten vår.\n\n– Sikkerhetsteamet hos {product_name}" - }, "account_scheduled_deletion": { "subject": "{product_name}-kontoen din blir permanent slettet", "body": "Hei {username},\n\nVi har planlagt permanent sletting av {product_name}-kontoen din på grunn av brudd på våre vilkår for bruk eller retningslinjer for fellesskapet.\n\nPlanlagt sletting: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nDette er et alvorlig tiltak. Kontodataene dine blir permanent slettet på den planlagte datoen.\n\nLes gjennom:\n- Vilkår for bruk: {termsUrl}\n- Retningslinjer for fellesskapet: {guidelinesUrl}\n\nKlageprosessen:\nHvis du mener avgjørelsen var feil eller uberettiget, har du 60 dager på deg til å sende inn en klage. Send en e-post til {appeals_email} fra denne e-postadressen.\n\nI klagen din:\n- Forklar tydelig hvorfor du mener avgjørelsen var feil eller uberettiget\n- Legg ved relevante bevis eller opplysninger\n\nEt medlem av sikkerhetsteamet hos {product_name} vil vurdere klagen din og kan utsette slettingen til en endelig avgjørelse er tatt.\n\n– Sikkerhetsteamet hos {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_NO_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "E-postadressen på {product_name}-kontoen din er endret", - "body": "Hei {username},\n\nE-postadressen på {product_name}-kontoen din ble endret til {newEmail}.\n\nHvis du gjorde denne endringen, trenger du ikke å gjøre noe. Hvis det ikke var deg, kan du angre endringen og sikre kontoen din via denne lenken:\n\n{revertUrl}\n\nDette gjenoppretter den forrige e-postadressen din, logger deg ut overalt, fjerner tilknyttede telefonnumre, deaktiverer flerfaktorautentisering (MFA) og krever at du angir et nytt passord.\n\n– Sikkerhetsteamet hos {product_name}" + "body": "Hei {username},\n\nE-postadressen på {product_name}-kontoen din ble endret til {newEmail}.\n\nHvis du gjorde denne endringen, trenger du ikke å gjøre noe. Hvis det ikke var deg, kan du angre endringen og sikre kontoen din via denne lenken:\n\n{revertUrl}\n\nDette gjenoppretter den forrige e-postadressen din, logger deg ut overalt, deaktiverer flerfaktorautentisering (MFA) og krever at du angir et nytt passord.\n\n– Sikkerhetsteamet hos {product_name}" }, "email_verification": { "subject": "Bekreft e-postadressen din for {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/pl.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/pl.ts index 252a2211b..b24e3216a 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/pl.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/pl.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_PL_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Usunięcie Twojego konta {product_name} zostało zaplanowane", "body": "Witaj {username},\n\nZgodnie z Twoją prośbą zaplanowaliśmy trwałe usunięcie konta {product_name}. Termin usunięcia:\n\n{deletionDate, date, full} o {deletionDate, time, short}{reason, select, null {} other {\n\nPowód: {reason}}}\n\nDo tego czasu Twoje konto jest zablokowane. Jeśli nie prosiłeś o to lub chcesz zachować konto, skontaktuj się z {safety_email} z tego adresu e-mail przed tym terminem.\n\n– Zespół {product_name}" }, - "account_disabled_suspicious": { - "subject": "Twoje konto {product_name} zostało tymczasowo wyłączone", - "body": "Witaj {username},\n\nTymczasowo wyłączyliśmy Twoje konto {product_name}, ponieważ wykryliśmy podejrzaną aktywność.\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nAby odzyskać dostęp do konta, musisz zresetować hasło:\n\n{forgotUrl}\n\nPo zresetowaniu hasła możesz ponownie się zalogować.\n\nJeśli uważasz, że to błąd, skontaktuj się z naszym zespołem wsparcia.\n\n– Zespół ds. bezpieczeństwa {product_name}" - }, "account_scheduled_deletion": { "subject": "Twoje konto {product_name} zostanie trwale usunięte", "body": "Witaj {username},\n\nZaplanowaliśmy trwałe usunięcie Twojego konta {product_name} z powodu naruszenia naszych warunków korzystania z usługi lub zasad społeczności.\n\nZaplanowane usunięcie: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nJest to poważna sankcja. Dane Twojego konta zostaną usunięte na stałe w zaplanowanym terminie.\n\nSprawdź:\n- Warunki korzystania z usługi: {termsUrl}\n- Zasady społeczności: {guidelinesUrl}\n\nProces odwoławczy:\nJeśli uważasz, że ta decyzja była błędna lub nieuzasadniona, masz 60 dni na złożenie odwołania. Wyślij e-mail na adres {appeals_email} z tego adresu e-mail.\n\nW swoim odwołaniu:\n- Wyjaśnij jasno, dlaczego uważasz, że decyzja była błędna lub nieuzasadniona\n- Przedstaw wszelkie istotne dowody lub kontekst\n\nCzłonek zespołu ds. bezpieczeństwa {product_name} rozpatrzy Twoje odwołanie i może wstrzymać usunięcie do czasu podjęcia ostatecznej decyzji.\n\n– Zespół ds. bezpieczeństwa {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_PL_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Twój adres e-mail w {product_name} został zmieniony", - "body": "Witaj {username},\n\nAdres e-mail przypisany do Twojego konta {product_name} został zmieniony na {newEmail}.\n\nJeśli ta zmiana została dokonana przez Ciebie, nie musisz nic robić. Jeśli nie, możesz cofnąć zmianę i zabezpieczyć swoje konto, korzystając z tego linku:\n\n{revertUrl}\n\nSpowoduje to przywrócenie poprzedniego adresu e-mail, wylogowanie ze wszystkich urządzeń, usunięcie powiązanych numerów telefonów, wyłączenie MFA i konieczność ustawienia nowego hasła.\n\n– Zespół ds. bezpieczeństwa {product_name}" + "body": "Witaj {username},\n\nAdres e-mail przypisany do Twojego konta {product_name} został zmieniony na {newEmail}.\n\nJeśli ta zmiana została dokonana przez Ciebie, nie musisz nic robić. Jeśli nie, możesz cofnąć zmianę i zabezpieczyć swoje konto, korzystając z tego linku:\n\n{revertUrl}\n\nSpowoduje to przywrócenie poprzedniego adresu e-mail, wylogowanie ze wszystkich urządzeń, wyłączenie MFA i konieczność ustawienia nowego hasła.\n\n– Zespół ds. bezpieczeństwa {product_name}" }, "email_verification": { "subject": "Zweryfikuj adres e-mail w {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/pt-BR.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/pt-BR.ts index 85e0ff7f9..e34e5213b 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/pt-BR.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/pt-BR.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_PT_BR_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "A exclusão da sua conta do {product_name} está agendada", "body": "Olá, {username},\n\nConforme solicitado, sua conta do {product_name} está agendada para exclusão permanente em:\n\n{deletionDate, date, full} às {deletionDate, time, short}{reason, select, null {} other {\n\nMotivo: {reason}}}\n\nSua conta permanecerá bloqueada até lá. Se você não solicitou isso, ou se quiser manter sua conta, entre em contato com {safety_email} usando este endereço de e-mail antes dessa data.\n\n– Equipe do {product_name}" }, - "account_disabled_suspicious": { - "subject": "Sua conta do {product_name} foi desativada temporariamente", - "body": "Olá, {username},\n\nDesativamos temporariamente sua conta do {product_name} porque detectamos atividades suspeitas.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara acessar sua conta novamente, você precisará redefinir sua senha:\n\n{forgotUrl}\n\nDepois de redefinir sua senha, você poderá entrar novamente.\n\nSe você acredita que isso foi um erro, entre em contato com nossa equipe de suporte.\n\n– equipe de segurança do {product_name}" - }, "account_scheduled_deletion": { "subject": "Sua conta do {product_name} será excluída permanentemente", "body": "Olá, {username},\n\nA exclusão permanente da sua conta do {product_name} foi agendada devido a violações de nossos Termos de serviço ou Diretrizes da comunidade.\n\nExclusão agendada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta é uma medida séria. Os dados da sua conta serão excluídos permanentemente na data agendada.\n\nPor favor, revise:\n- Termos de serviço: {termsUrl}\n- Diretrizes da comunidade: {guidelinesUrl}\n\nProcesso de recurso:\nSe você acredita que esta decisão foi incorreta ou injustificada, você tem 60 dias para enviar um recurso. Envie um e-mail para {appeals_email} a partir deste endereço de e-mail.\n\nEm seu recurso:\n- Explique claramente por que você acredita que a decisão foi incorreta ou injustificada\n- Forneça quaisquer evidências ou contexto relevantes\n\nUm membro da equipe de segurança do {product_name} revisará seu recurso e poderá pausar a exclusão pendente até que uma decisão final seja tomada.\n\n– equipe de segurança do {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_PT_BR_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "O e-mail da sua conta do {product_name} foi alterado", - "body": "Olá, {username},\n\nO endereço de e-mail da sua conta do {product_name} foi alterado para {newEmail}.\n\nSe você fez essa alteração, nenhuma ação é necessária. Se você não fez, pode reverter a alteração e proteger sua conta usando este link:\n\n{revertUrl}\n\nIsso restaurará seu e-mail anterior, encerrará todas as suas sessões, removerá números de telefone vinculados, desativará a autenticação multifator (MFA) e exigirá que você defina uma nova senha.\n\n– equipe de segurança do {product_name}" + "body": "Olá, {username},\n\nO endereço de e-mail da sua conta do {product_name} foi alterado para {newEmail}.\n\nSe você fez essa alteração, nenhuma ação é necessária. Se você não fez, pode reverter a alteração e proteger sua conta usando este link:\n\n{revertUrl}\n\nIsso restaurará seu e-mail anterior, encerrará todas as suas sessões, desativará a autenticação multifator (MFA) e exigirá que você defina uma nova senha.\n\n– equipe de segurança do {product_name}" }, "email_verification": { "subject": "Verifique o endereço de e-mail da sua conta do {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/ro.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/ro.ts index c7aaaab58..6c17dcb5b 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/ro.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/ro.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_RO_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Ștergerea contului {product_name} a fost programată", "body": "Salut {username},\n\nConform solicitării tale, contul tău {product_name} este programat pentru ștergere permanentă la:\n\n{deletionDate, date, full} la ora {deletionDate, time, short}{reason, select, null {} other {\n\nMotiv: {reason}}}\n\nPână atunci, contul tău este blocat. Dacă nu ai solicitat acest lucru sau vrei să îți păstrezi contul, scrie la {safety_email} de pe această adresă de e-mail înainte de această dată.\n\n– Echipa {product_name}" }, - "account_disabled_suspicious": { - "subject": "Contul tău {product_name} a fost dezactivat temporar", - "body": "Salut {username},\n\nAm dezactivat temporar contul tău {product_name} deoarece am detectat activitate suspectă.\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nPentru a recăpăta accesul la cont, va trebui să îți resetezi parola:\n\n{forgotUrl}\n\nDupă ce îți resetezi parola, te vei putea conecta din nou.\n\nDacă crezi că este o greșeală, te rugăm să contactezi asistența.\n\n– Echipa de siguranță {product_name}" - }, "account_scheduled_deletion": { "subject": "Contul tău {product_name} va fi șters permanent", "body": "Salut {username},\n\nContul tău {product_name} a fost programat pentru ștergere permanentă din cauza încălcării Termenilor și condițiilor sau a regulilor comunității.\n\nȘtergere programată: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nAceasta este o măsură disciplinară serioasă. Datele contului tău vor fi șterse permanent la data programată.\n\nTe rugăm să consulți:\n- Termeni și condiții: {termsUrl}\n- Regulile comunității: {guidelinesUrl}\n\nProcesul de contestare:\nDacă crezi că această decizie a fost incorectă sau nejustificată, ai la dispoziție 60 de zile pentru a depune o contestație. Trimite un e-mail la {appeals_email} de la această adresă.\n\nÎn contestația ta:\n- Explică clar de ce crezi că decizia a fost incorectă sau nejustificată\n- Adaugă orice dovadă sau context relevant\n\nUn membru al echipei de siguranță {product_name} va analiza contestația ta și poate suspenda ștergerea programată până la luarea unei decizii finale.\n\n– Echipa de siguranță {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_RO_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Adresa de e-mail pentru {product_name} a fost schimbată", - "body": "Salut {username},\n\nAdresa de e-mail a contului tău {product_name} a fost schimbată în {newEmail}.\n\nDacă tu ai făcut această modificare, nu trebuie să faci nimic. Dacă nu ai făcut-o tu, poți anula modificarea și îți poți securiza contul folosind acest link:\n\n{revertUrl}\n\nAceasta va restabili adresa ta de e-mail anterioară, te va deconecta de pe toate dispozitivele, va elimina numerele de telefon asociate, va dezactiva MFA și îți va cere să setezi o parolă nouă.\n\n– Echipa de siguranță {product_name}" + "body": "Salut {username},\n\nAdresa de e-mail a contului tău {product_name} a fost schimbată în {newEmail}.\n\nDacă tu ai făcut această modificare, nu trebuie să faci nimic. Dacă nu ai făcut-o tu, poți anula modificarea și îți poți securiza contul folosind acest link:\n\n{revertUrl}\n\nAceasta va restabili adresa ta de e-mail anterioară, te va deconecta de pe toate dispozitivele, va dezactiva MFA și îți va cere să setezi o parolă nouă.\n\n– Echipa de siguranță {product_name}" }, "email_verification": { "subject": "Verifică-ți adresa de e-mail pentru {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/ru.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/ru.ts index ce821cb8e..2ad2b94f0 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/ru.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/ru.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_RU_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Запланировано удаление твоего аккаунта {product_name}", "body": "Привет, {username},\n\nПо твоему запросу безвозвратное удаление аккаунта {product_name} запланировано на:\n\n{deletionDate, date, full} в {deletionDate, time, short}{reason, select, null {} other {\n\nПричина: {reason}}}\n\nДо этого момента твой аккаунт заблокирован. Если ты не запрашивал удаление или хочешь сохранить аккаунт, напиши на {safety_email} с этого адреса электронной почты до этой даты.\n\n– Команда {product_name}" }, - "account_disabled_suspicious": { - "subject": "Твой аккаунт {product_name} временно отключён", - "body": "Привет, {username},\n\nМы временно отключили твой аккаунт {product_name}, так как обнаружили подозрительную активность.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЧтобы восстановить доступ к аккаунту, тебе нужно сбросить пароль:\n\n{forgotUrl}\n\nПосле сброса пароля ты сможешь снова войти в аккаунт.\n\nЕсли ты считаешь, что это ошибка, пожалуйста, свяжись с нашей службой поддержки.\n\n– Команда безопасности {product_name}" - }, "account_scheduled_deletion": { "subject": "Твой аккаунт {product_name} будет безвозвратно удалён", "body": "Привет, {username},\n\nМы запланировали безвозвратное удаление твоего аккаунта {product_name} из-за нарушения наших Условий использования или Правил сообщества.\n\nЗапланированное удаление: {deletionDate, date, full} в {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЭто серьёзная мера. Данные твоего аккаунта будут безвозвратно удалены в запланированную дату.\n\nПожалуйста, ознакомься:\n- Условия использования: {termsUrl}\n- Правила сообщества: {guidelinesUrl}\n\nПроцесс апелляции:\nЕсли ты считаешь, что это решение было неверным или необоснованным, у тебя есть 60 дней, чтобы подать апелляцию. Отправь письмо на {appeals_email} с этого адреса электронной почты.\n\nВ своей апелляции:\n- Чётко объясни, почему ты считаешь, что решение было неверным или необоснованным\n- Предоставь любые соответствующие доказательства или контекст\n\nСотрудник команды безопасности {product_name} рассмотрит твою апелляцию и может приостановить запланированное удаление до принятия окончательного решения.\n\n– Команда безопасности {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_RU_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Адрес электронной почты твоего аккаунта {product_name} был изменён", - "body": "Привет, {username},\n\nАдрес электронной почты твоего аккаунта {product_name} был изменён на {newEmail}.\n\nЕсли это изменение сделал ты, ничего делать не нужно. Если нет, ты можешь отменить его и защитить свой аккаунт по этой ссылке:\n\n{revertUrl}\n\nЭто восстановит твой предыдущий адрес электронной почты, завершит все активные сессии, удалит привязанные номера телефонов, отключит MFA и потребует задать новый пароль.\n\n– Команда безопасности {product_name}" + "body": "Привет, {username},\n\nАдрес электронной почты твоего аккаунта {product_name} был изменён на {newEmail}.\n\nЕсли это изменение сделал ты, ничего делать не нужно. Если нет, ты можешь отменить его и защитить свой аккаунт по этой ссылке:\n\n{revertUrl}\n\nЭто восстановит твой предыдущий адрес электронной почты, завершит все активные сессии, отключит MFA и потребует задать новый пароль.\n\n– Команда безопасности {product_name}" }, "email_verification": { "subject": "Подтверди адрес электронной почты для {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/sv-SE.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/sv-SE.ts index c47ce39f0..3bc181747 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/sv-SE.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/sv-SE.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_SV_SE_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Raderingen av ditt {product_name}-konto är schemalagd", "body": "Hej {username},\n\nSom du har begärt är permanent radering av ditt {product_name}-konto planerad till följande tidpunkt:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}{reason, select, null {} other {\n\nAnledning: {reason}}}\n\nDitt konto är låst fram till dess. Om du inte begärde detta, eller om du vill behålla ditt konto, kontakta {safety_email} från den här e-postadressen före det datumet.\n\n– {product_name}-teamet" }, - "account_disabled_suspicious": { - "subject": "Ditt {product_name}-konto har tillfälligt inaktiverats", - "body": "Hej {username},\n\nVi har tillfälligt inaktiverat ditt {product_name}-konto eftersom vi upptäckte misstänkt aktivitet.\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nFör att återfå åtkomst till ditt konto måste du återställa ditt lösenord:\n\n{forgotUrl}\n\nEfter att du har återställt ditt lösenord kan du logga in igen.\n\nOm du anser att detta har skett av misstag, kontakta vårt supportteam.\n\n– Säkerhetsteamet på {product_name}" - }, "account_scheduled_deletion": { "subject": "Ditt {product_name}-konto kommer att raderas permanent", "body": "Hej {username},\n\nDitt {product_name}-konto har schemalagts för permanent radering på grund av brott mot våra användarvillkor eller communityriktlinjer.\n\nSchemalagd radering: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nDetta är en allvarlig åtgärd. Dina kontodata kommer att raderas permanent på det schemalagda datumet.\n\nGranska:\n- Användarvillkor: {termsUrl}\n- Communityriktlinjer: {guidelinesUrl}\n\nÖverklagandeprocess:\nOm du anser att detta beslut var felaktigt eller obefogat har du 60 dagar på dig att överklaga. Mejla {appeals_email} från den här e-postadressen.\n\nI ditt överklagande:\n- Förklara tydligt varför du anser att beslutet var felaktigt eller obefogat\n- Bifoga relevanta bevis eller bakgrundsinformation\n\nEn medarbetare i säkerhetsteamet på {product_name} kommer att granska ditt överklagande och kan pausa den planerade raderingen tills ett slutgiltigt beslut har fattats.\n\n– Säkerhetsteamet på {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_SV_SE_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Din e-postadress på {product_name} har ändrats", - "body": "Hej {username},\n\nE-postadressen för ditt {product_name}-konto har ändrats till {newEmail}.\n\nOm du gjorde denna ändring behövs ingen åtgärd. Om du inte gjorde det kan du ångra ändringen och säkra ditt konto med denna länk:\n\n{revertUrl}\n\nDetta återställer din tidigare e-postadress, loggar ut dig överallt, tar bort kopplade telefonnummer, inaktiverar flerfaktorsautentisering (MFA) och kräver att du väljer ett nytt lösenord.\n\n– Säkerhetsteamet på {product_name}" + "body": "Hej {username},\n\nE-postadressen för ditt {product_name}-konto har ändrats till {newEmail}.\n\nOm du gjorde denna ändring behövs ingen åtgärd. Om du inte gjorde det kan du ångra ändringen och säkra ditt konto med denna länk:\n\n{revertUrl}\n\nDetta återställer din tidigare e-postadress, loggar ut dig överallt, inaktiverar flerfaktorsautentisering (MFA) och kräver att du väljer ett nytt lösenord.\n\n– Säkerhetsteamet på {product_name}" }, "email_verification": { "subject": "Verifiera din e-postadress på {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/th.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/th.ts index 90e01cff9..e45c742c1 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/th.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/th.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_TH_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "บัญชี {product_name} ของคุณถูกกำหนดให้ลบแล้ว", "body": "สวัสดี {username},\n\nตามที่คุณร้องขอ บัญชี {product_name} ของคุณถูกกำหนดให้ลบอย่างถาวรในวันที่:\n\n{deletionDate, date, full} เวลา {deletionDate, time, short}{reason, select, null {} other {\n\nเหตุผล: {reason}}}\n\nบัญชีของคุณจะถูกล็อกจนถึงวันนั้น หากคุณไม่ได้ร้องขอ หรือต้องการเก็บบัญชีไว้ โปรดติดต่อ {safety_email} จากที่อยู่อีเมลนี้ก่อนวันดังกล่าว\n\n– ทีม {product_name}" }, - "account_disabled_suspicious": { - "subject": "บัญชี {product_name} ของคุณถูกปิดใช้งานชั่วคราว", - "body": "สวัสดี {username},\n\nเราปิดใช้งานบัญชี {product_name} ของคุณชั่วคราว เนื่องจากเราตรวจพบกิจกรรมที่น่าสงสัย\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nหากต้องการเข้าถึงบัญชีอีกครั้ง ให้รีเซ็ตรหัสผ่าน:\n\n{forgotUrl}\n\nหลังจากรีเซ็ตรหัสผ่านแล้ว คุณจะสามารถเข้าสู่ระบบได้อีกครั้ง\n\nหากคุณเชื่อว่านี่เป็นข้อผิดพลาด โปรดติดต่อทีมสนับสนุนของเรา\n\n– ทีมความปลอดภัย {product_name}" - }, "account_scheduled_deletion": { "subject": "บัญชี {product_name} ของคุณจะถูกลบอย่างถาวร", "body": "สวัสดี {username},\n\nบัญชี {product_name} ของคุณถูกกำหนดให้ลบอย่างถาวรเนื่องจากละเมิดข้อกำหนดในการให้บริการหรือแนวทางปฏิบัติของคอมมูนิตี้ของเรา\n\nกำหนดการลบ: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nนี่เป็นการดำเนินการบังคับใช้ที่ร้ายแรง ข้อมูลบัญชีของคุณจะถูกลบอย่างถาวรตามวันที่กำหนด\n\nโปรดตรวจสอบ:\n- ข้อกำหนดในการให้บริการ: {termsUrl}\n- แนวทางปฏิบัติของคอมมูนิตี้: {guidelinesUrl}\n\nกระบวนการอุทธรณ์:\nหากคุณเชื่อว่าการตัดสินใจนี้ไม่ถูกต้องหรือไม่ยุติธรรม คุณมีเวลา 60 วันในการยื่นอุทธรณ์ ส่งอีเมลไปที่ {appeals_email} จากที่อยู่อีเมลนี้\n\nในการอุทธรณ์ของคุณ:\n- อธิบายให้ชัดเจนว่าทำไมคุณถึงเชื่อว่าการตัดสินใจนั้นไม่ถูกต้องหรือไม่ยุติธรรม\n- แนบหลักฐานหรือบริบทที่เกี่ยวข้อง\n\nสมาชิกของทีมความปลอดภัย {product_name} จะตรวจสอบคำอุทธรณ์ของคุณและอาจระงับการลบที่รอดำเนินการไว้จนกว่าจะมีการตัดสินใจขั้นสุดท้าย\n\n– ทีมความปลอดภัย {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_TH_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "อีเมลบัญชี {product_name} ของคุณถูกเปลี่ยนแล้ว", - "body": "สวัสดี {username},\n\nที่อยู่อีเมลในบัญชี {product_name} ของคุณถูกเปลี่ยนเป็น {newEmail}\n\nหากคุณทำการเปลี่ยนแปลงนี้ ไม่ต้องดำเนินการใด ๆ หากคุณไม่ได้เปลี่ยน คุณสามารถย้อนกลับการเปลี่ยนแปลงและรักษาความปลอดภัยบัญชีของคุณโดยใช้ลิงก์นี้:\n\n{revertUrl}\n\nซึ่งจะกู้คืนอีเมลก่อนหน้าของคุณ นำคุณออกจากระบบในทุกอุปกรณ์ ลบหมายเลขโทรศัพท์ที่เชื่อมโยง ปิดใช้งาน MFA และกำหนดให้คุณต้องตั้งรหัสผ่านใหม่\n\n– ทีมความปลอดภัย {product_name}" + "body": "สวัสดี {username},\n\nที่อยู่อีเมลในบัญชี {product_name} ของคุณถูกเปลี่ยนเป็น {newEmail}\n\nหากคุณทำการเปลี่ยนแปลงนี้ ไม่ต้องดำเนินการใด ๆ หากคุณไม่ได้เปลี่ยน คุณสามารถย้อนกลับการเปลี่ยนแปลงและรักษาความปลอดภัยบัญชีของคุณโดยใช้ลิงก์นี้:\n\n{revertUrl}\n\nซึ่งจะกู้คืนอีเมลก่อนหน้าของคุณ นำคุณออกจากระบบในทุกอุปกรณ์ ปิดใช้งาน MFA และกำหนดให้คุณต้องตั้งรหัสผ่านใหม่\n\n– ทีมความปลอดภัย {product_name}" }, "email_verification": { "subject": "ยืนยันที่อยู่อีเมลสำหรับ {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/tr.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/tr.ts index 29b79c322..14f62ddc3 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/tr.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/tr.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_TR_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "{product_name} hesabının silinmesi planlandı", "body": "Merhaba {username},\n\nTalebin doğrultusunda {product_name} hesabın şu tarihte kalıcı olarak silinmek üzere planlandı:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\nSebep: {reason}}}\n\nHesabın o zamana kadar kilitli. Bunu sen talep etmediysen ya da hesabını korumak istiyorsan bu tarihten önce bu e-posta adresinden {safety_email} adresine ulaş.\n\n– {product_name} Ekibi" }, - "account_disabled_suspicious": { - "subject": "{product_name} hesabın geçici olarak devre dışı bırakıldı", - "body": "Merhaba {username},\n\nŞüpheli etkinlik tespit ettiğimiz için {product_name} hesabını geçici olarak devre dışı bıraktık.\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nHesabına tekrar erişmek için şifreni sıfırlaman gerekiyor:\n\n{forgotUrl}\n\nŞifreni sıfırladıktan sonra tekrar giriş yapabilirsin.\n\nBunun bir hata olduğunu düşünüyorsan, lütfen destek ekibimizle iletişime geç.\n\n– {product_name} Güvenlik Ekibi" - }, "account_scheduled_deletion": { "subject": "{product_name} hesabın kalıcı olarak silinecek", "body": "Merhaba {username},\n\nHizmet Şartlarımızı veya Topluluk Kurallarımızı ihlal ettiğin için {product_name} hesabın kalıcı olarak silinmek üzere planlandı.\n\nPlanlanan silme tarihi: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nBu, ciddi bir yaptırım işlemidir. Hesap verilerin planlanan tarihte kalıcı olarak silinecektir.\n\nLütfen şunları incele:\n- Hizmet Şartları: {termsUrl}\n- Topluluk Kuralları: {guidelinesUrl}\n\nİtiraz süreci:\nBu yaptırım kararının yanlış veya haksız olduğuna inanıyorsan, itiraz göndermek için 60 günün var. Bu e-posta adresinden {appeals_email} adresine e-posta gönder.\n\nİtirazında:\n- Yaptırım kararının neden yanlış veya haksız olduğunu düşündüğünü açıkça anlat\n- İlgili kanıtı veya bağlamı paylaş\n\n{product_name} Güvenlik Ekibinden bir üye itirazını inceleyecek ve nihai karar verilene kadar bekleyen silme işlemini duraklatabilir.\n\n– {product_name} Güvenlik Ekibi" @@ -49,7 +45,7 @@ const EMAIL_I18N_TR_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "{product_name} e-posta adresin değiştirildi", - "body": "Merhaba {username},\n\n{product_name} hesabındaki e-posta adresi {newEmail} olarak değiştirildi.\n\nBu değişikliği sen yaptıysan, herhangi bir işlem yapmana gerek yok. Yapmadıysan, bu bağlantıyı kullanarak değişikliği geri alabilir ve hesabını güvence altına alabilirsin:\n\n{revertUrl}\n\nBu işlem önceki e-posta adresini geri yükleyecek, tüm cihazlardaki oturumlarını kapatacak, bağlı telefon numaralarını kaldıracak, MFA'yı devre dışı bırakacak ve yeni bir şifre belirlemeni gerektirecek.\n\n– {product_name} Güvenlik Ekibi" + "body": "Merhaba {username},\n\n{product_name} hesabındaki e-posta adresi {newEmail} olarak değiştirildi.\n\nBu değişikliği sen yaptıysan, herhangi bir işlem yapmana gerek yok. Yapmadıysan, bu bağlantıyı kullanarak değişikliği geri alabilir ve hesabını güvence altına alabilirsin:\n\n{revertUrl}\n\nBu işlem önceki e-posta adresini geri yükleyecek, tüm cihazlardaki oturumlarını kapatacak, MFA'yı devre dışı bırakacak ve yeni bir şifre belirlemeni gerektirecek.\n\n– {product_name} Güvenlik Ekibi" }, "email_verification": { "subject": "{product_name} e-posta adresini doğrula", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/uk.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/uk.ts index c45cf5629..9b364276b 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/uk.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/uk.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_UK_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Видалення акаунта {product_name} заплановано", "body": "Привіт, {username},\n\nНа твій запит остаточне видалення акаунта {product_name} заплановано на:\n\n{deletionDate, date, full} о {deletionDate, time, short}{reason, select, null {} other {\n\nПричина: {reason}}}\n\nДо того часу твій акаунт заблоковано. Якщо цей запит не від тебе або ти хочеш зберегти акаунт, напиши на {safety_email} з цієї електронної адреси до цієї дати.\n\n– Команда {product_name}" }, - "account_disabled_suspicious": { - "subject": "Твій акаунт {product_name} тимчасово деактивовано", - "body": "Привіт, {username},\n\nМи тимчасово деактивували твій акаунт {product_name}, оскільки виявили підозрілу активність.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЩоб відновити доступ до акаунта, тобі потрібно скинути пароль:\n\n{forgotUrl}\n\nПісля скидання пароля ти зможеш знову увійти.\n\nЯкщо ти вважаєш, що це помилка, будь ласка, зв'яжися з нашою службою підтримки.\n\n– Команда безпеки {product_name}" - }, "account_scheduled_deletion": { "subject": "Твій акаунт {product_name} буде остаточно видалено", "body": "Привіт, {username},\n\nМи запланували остаточне видалення твого акаунта {product_name} через порушення наших Умов використання або Правил спільноти.\n\nВидалення заплановано на: {deletionDate, date, full} о {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЦе серйозне рішення. Дані твого акаунта буде остаточно видалено у заплановану дату.\n\nБудь ласка, переглянь:\n- Умови використання: {termsUrl}\n- Правила спільноти: {guidelinesUrl}\n\nПроцес апеляції:\nЯкщо ти вважаєш, що це рішення було неправильним або необґрунтованим, у тебе є 60 днів, щоб подати апеляцію. Надішли електронний лист на {appeals_email} з цієї електронної адреси.\n\nУ твоїй апеляції:\n- Чітко поясни, чому ти вважаєш, що рішення було неправильним або необґрунтованим\n- Надай будь-які відповідні докази або контекст\n\nКоманда безпеки {product_name} розгляне твою апеляцію та може призупинити видалення до ухвалення остаточного рішення.\n\n– Команда безпеки {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_UK_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Електронну адресу твого акаунта {product_name} змінено", - "body": "Привіт, {username},\n\nЕлектронну адресу твого акаунта {product_name} змінено на {newEmail}.\n\nЯкщо ти знаєш про цю зміну, робити нічого не потрібно. Якщо ні, ти можеш скасувати зміну та захистити свій акаунт за цим посиланням:\n\n{revertUrl}\n\nЦе відновить твою попередню електронну адресу, завершить усі сесії, видалить пов'язані номери телефонів, вимкне MFA та вимагатиме встановити новий пароль.\n\n– Команда безпеки {product_name}" + "body": "Привіт, {username},\n\nЕлектронну адресу твого акаунта {product_name} змінено на {newEmail}.\n\nЯкщо ти знаєш про цю зміну, робити нічого не потрібно. Якщо ні, ти можеш скасувати зміну та захистити свій акаунт за цим посиланням:\n\n{revertUrl}\n\nЦе відновить твою попередню електронну адресу, завершить усі сесії, вимкне MFA та вимагатиме встановити новий пароль.\n\n– Команда безпеки {product_name}" }, "email_verification": { "subject": "Підтвердь свою електронну адресу для {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/vi.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/vi.ts index c3e84ecbf..e7fc3ea0c 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/vi.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/vi.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_VI_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "Tài khoản {product_name} của bạn đã được lên lịch xóa", "body": "Xin chào {username},\n\nTheo yêu cầu của bạn, tài khoản {product_name} của bạn được lên lịch xóa vĩnh viễn vào:\n\n{deletionDate, date, full} lúc {deletionDate, time, short}{reason, select, null {} other {\n\nLý do: {reason}}}\n\nTài khoản của bạn sẽ bị khóa cho đến lúc đó. Nếu bạn không yêu cầu điều này, hoặc bạn muốn giữ tài khoản, hãy liên hệ {safety_email} từ địa chỉ email này trước ngày đó.\n\n– Đội ngũ {product_name}" }, - "account_disabled_suspicious": { - "subject": "Tài khoản {product_name} của bạn đã bị tạm thời vô hiệu hóa", - "body": "Xin chào {username},\n\nChúng tôi đã tạm thời vô hiệu hóa tài khoản {product_name} của bạn vì phát hiện hoạt động đáng ngờ.\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nĐể truy cập lại tài khoản, bạn cần đặt lại mật khẩu:\n\n{forgotUrl}\n\nSau khi đặt lại mật khẩu, bạn sẽ có thể đăng nhập lại.\n\nNếu bạn cho rằng đây là nhầm lẫn, vui lòng liên hệ đội ngũ hỗ trợ của chúng tôi.\n\n– Đội ngũ An toàn {product_name}" - }, "account_scheduled_deletion": { "subject": "Tài khoản {product_name} của bạn sẽ bị xóa vĩnh viễn", "body": "Xin chào {username},\n\nTài khoản {product_name} của bạn đã được lên lịch xóa vĩnh viễn do vi phạm Điều khoản dịch vụ hoặc Nguyên tắc cộng đồng của chúng tôi.\n\nThời gian xóa theo lịch: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nĐây là một biện pháp xử lý nghiêm trọng. Dữ liệu tài khoản của bạn sẽ bị xóa vĩnh viễn vào ngày đã lên lịch.\n\nVui lòng xem lại:\n- Điều khoản dịch vụ: {termsUrl}\n- Nguyên tắc cộng đồng: {guidelinesUrl}\n\nQuy trình khiếu nại:\nNếu bạn cho rằng quyết định này không chính xác hoặc không hợp lý, bạn có 60 ngày để gửi khiếu nại. Gửi email đến {appeals_email} từ địa chỉ email này.\n\nTrong khiếu nại của bạn:\n- Giải thích rõ ràng lý do bạn cho rằng quyết định này không chính xác hoặc không hợp lý\n- Cung cấp bằng chứng hoặc thông tin liên quan nếu có\n\nMột thành viên của Đội ngũ An toàn {product_name} sẽ xem xét khiếu nại của bạn và có thể tạm dừng việc xóa đang chờ xử lý cho đến khi có quyết định cuối cùng.\n\n– Đội ngũ An toàn {product_name}" @@ -49,7 +45,7 @@ const EMAIL_I18N_VI_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "Email của bạn trên {product_name} đã được thay đổi", - "body": "Xin chào {username},\n\nĐịa chỉ email trên tài khoản {product_name} của bạn đã được thay đổi thành {newEmail}.\n\nNếu bạn đã thực hiện thay đổi này, bạn không cần thực hiện hành động nào. Nếu không, bạn có thể hoàn tác thay đổi và bảo mật tài khoản của mình bằng cách sử dụng liên kết này:\n\n{revertUrl}\n\nThao tác này sẽ khôi phục email trước đó của bạn, đăng xuất khỏi tất cả thiết bị, xóa số điện thoại đã liên kết, tắt MFA và yêu cầu bạn đặt mật khẩu mới.\n\n– Đội ngũ An toàn {product_name}" + "body": "Xin chào {username},\n\nĐịa chỉ email trên tài khoản {product_name} của bạn đã được thay đổi thành {newEmail}.\n\nNếu bạn đã thực hiện thay đổi này, bạn không cần thực hiện hành động nào. Nếu không, bạn có thể hoàn tác thay đổi và bảo mật tài khoản của mình bằng cách sử dụng liên kết này:\n\n{revertUrl}\n\nThao tác này sẽ khôi phục email trước đó của bạn, đăng xuất khỏi tất cả thiết bị, tắt MFA và yêu cầu bạn đặt mật khẩu mới.\n\n– Đội ngũ An toàn {product_name}" }, "email_verification": { "subject": "Xác minh địa chỉ email của bạn trên {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/zh-CN.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/zh-CN.ts index 90b7bb8bf..2ba515be4 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/zh-CN.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/zh-CN.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_ZH_CN_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "你的 {product_name} 账号已安排删除", "body": "你好 {username},\n\n根据你的请求,你的 {product_name} 账号将于以下时间永久删除:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\n原因:{reason}}}\n\n在此之前,你的账号将被锁定。如果你未请求此操作,或者想保留账号,请在该日期前使用此邮箱地址联系 {safety_email}。\n\n– {product_name} 团队" }, - "account_disabled_suspicious": { - "subject": "你的 {product_name} 账号已被暂时禁用", - "body": "你好 {username},\n\n我们检测到你的 {product_name} 账号存在可疑活动,因此暂时禁用了你的账号。\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n要重新访问你的账号,你需要重置密码:\n\n{forgotUrl}\n\n重置密码后,你将能够再次登录。\n\n如果你认为这是误判,请联系我们的支持团队。\n\n– {product_name} 安全团队" - }, "account_scheduled_deletion": { "subject": "你的 {product_name} 账号将被永久删除", "body": "你好 {username},\n\n由于违反了我们的《服务条款》或《社区准则》,你的 {product_name} 账号已被安排永久删除。\n\n计划删除时间:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n这是一项严重的处罚措施。你的账号数据将在预定日期被永久删除。\n\n请查阅:\n- 服务条款:{termsUrl}\n- 社区准则:{guidelinesUrl}\n\n申诉流程:\n如果你认为此处罚决定不正确或不合理,你有 60 天时间提交申诉。请使用此邮箱地址发送邮件至 {appeals_email}。\n\n在你的申诉中:\n- 清楚说明你认为处罚决定不正确或不合理的原因\n- 提供任何相关证据或背景信息\n\n{product_name} 安全团队成员将审核你的申诉,并可能在做出最终决定前暂停此次删除。\n\n– {product_name} 安全团队" @@ -49,7 +45,7 @@ const EMAIL_I18N_ZH_CN_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "你的 {product_name} 邮箱已变更", - "body": "你好 {username},\n\n你的 {product_name} 账号邮箱已变更为 {newEmail}。\n\n如果你进行了此更改,则无需采取任何操作。如果不是你本人操作,请使用此链接撤销更改并保护账号安全:\n\n{revertUrl}\n\n这将恢复你之前的邮箱,让你在所有设备上退出登录,移除关联的手机号,禁用 MFA,并要求你设置新密码。\n\n– {product_name} 安全团队" + "body": "你好 {username},\n\n你的 {product_name} 账号邮箱已变更为 {newEmail}。\n\n如果你进行了此更改,则无需采取任何操作。如果不是你本人操作,请使用此链接撤销更改并保护账号安全:\n\n{revertUrl}\n\n这将恢复你之前的邮箱,让你在所有设备上退出登录,禁用 MFA,并要求你设置新密码。\n\n– {product_name} 安全团队" }, "email_verification": { "subject": "验证你的 {product_name} 邮箱地址", diff --git a/fluxer_api/pkgs/email/src/email_i18n/locales/zh-TW.ts b/fluxer_api/pkgs/email/src/email_i18n/locales/zh-TW.ts index f1dc49e75..ef1fc6863 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/locales/zh-TW.ts +++ b/fluxer_api/pkgs/email/src/email_i18n/locales/zh-TW.ts @@ -15,10 +15,6 @@ const EMAIL_I18N_ZH_TW_MESSAGES = defineEmailI18nLocaleMessages({ "subject": "您的 {product_name} 帳號已排定刪除", "body": "哈囉 {username},\n\n依照您的要求,您的 {product_name} 帳號已排定於以下時間永久刪除:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\n原因:{reason}}}\n\n在此之前,您的帳號將被鎖定。如果您沒有提出此要求,或想保留帳號,請在該日期前使用此電子郵件地址聯絡 {safety_email}。\n\n– {product_name} 團隊" }, - "account_disabled_suspicious": { - "subject": "您的 {product_name} 帳號已暫時停用", - "body": "哈囉 {username},\n\n我們偵測到您的 {product_name} 帳號有可疑活動,因此已暫時停用您的帳號。\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n若要重新取得帳號存取權,您需要重設密碼:\n\n{forgotUrl}\n\n重設密碼後,您將可以再次登入。\n\n如果您認為這是誤判,請聯絡我們的支援團隊。\n\n– {product_name} 安全團隊" - }, "account_scheduled_deletion": { "subject": "您的 {product_name} 帳號將被永久刪除", "body": "哈囉 {username},\n\n由於您違反了我們的服務條款或社群準則,您的 {product_name} 帳號已排定永久刪除。\n\n排定刪除時間:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n這是一項嚴重的處分。您的帳號資料將在排定日期永久刪除。\n\n請參閱:\n- 服務條款:{termsUrl}\n- 社群準則:{guidelinesUrl}\n\n申訴流程:\n如果您認為此處分不正確或不合理,您有 60 天的時間可以提交申訴。請使用此電子郵件地址寄信至 {appeals_email}。\n\n在您的申訴中:\n- 請清楚說明您認為此處分不正確或不合理的原因\n- 提供任何相關證據或背景資訊\n\n{product_name} 安全團隊的成員將會審查您的申訴,並可能在做出最終決定前暫停這項刪除。\n\n– {product_name} 安全團隊" @@ -49,7 +45,7 @@ const EMAIL_I18N_ZH_TW_MESSAGES = defineEmailI18nLocaleMessages({ }, "email_change_revert": { "subject": "您的 {product_name} 電子郵件已變更", - "body": "哈囉 {username},\n\n您的 {product_name} 帳號電子郵件地址已變更為 {newEmail}。\n\n如果您進行了此變更,則無需採取任何行動。如果您沒有進行此變更,可以使用此連結還原變更並保護您的帳號安全:\n\n{revertUrl}\n\n這將會還原您先前的電子郵件、將您從所有裝置登出、移除連結的電話號碼、停用多重要素驗證,並要求您設定新密碼。\n\n– {product_name} 安全團隊" + "body": "哈囉 {username},\n\n您的 {product_name} 帳號電子郵件地址已變更為 {newEmail}。\n\n如果您進行了此變更,則無需採取任何行動。如果您沒有進行此變更,可以使用此連結還原變更並保護您的帳號安全:\n\n{revertUrl}\n\n這將會還原您先前的電子郵件、將您從所有裝置登出、停用多重要素驗證,並要求您設定新密碼。\n\n– {product_name} 安全團隊" }, "email_verification": { "subject": "驗證您的 {product_name} 電子郵件地址", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ar.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ar.json index 5c89c2030..891326f18 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ar.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ar.json @@ -11,10 +11,6 @@ "subject": "تمت جدولة حذف حسابك في {product_name}", "body": "مرحبًا {username}،\n\nبناءً على طلبك، تمت جدولة حسابك في {product_name} للحذف الدائم في:\n\n{deletionDate, date, full} الساعة {deletionDate, time, short}{reason, select, null {} other {\n\nالسبب: {reason}}}\n\nسيظل حسابك مقفلًا حتى ذلك الحين. إذا لم تطلب هذا، أو كنت ترغب في الاحتفاظ بحسابك، فاتصل بـ{safety_email} من عنوان البريد الإلكتروني هذا قبل ذلك التاريخ.\n\n– فريق {product_name}" }, - "account_disabled_suspicious": { - "subject": "تم تعطيل حسابك في {product_name} مؤقتًا", - "body": "مرحبًا {username}،\n\nلقد قمنا بتعطيل حسابك في {product_name} مؤقتًا لأننا اكتشفنا نشاطًا مشبوهًا.\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nلاستعادة الوصول إلى حسابك، ستحتاج إلى إعادة تعيين كلمة المرور الخاصة بك:\n\n{forgotUrl}\n\nبعد إعادة تعيين كلمة المرور الخاصة بك، ستتمكن من تسجيل الدخول مرة أخرى.\n\nإذا كنت تعتقد أن هذا حدث عن طريق الخطأ، يرجى الاتصال بفريق الدعم لدينا.\n\n– فريق أمان {product_name}" - }, "account_scheduled_deletion": { "subject": "سيتم حذف حسابك في {product_name} نهائيًا", "body": "مرحبًا {username}،\n\nتمت جدولة حسابك في {product_name} للحذف الدائم بسبب انتهاكات لشروط الخدمة أو إرشادات المجتمع الخاصة بنا.\n\nالحذف المجدول: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {السبب: {reason}}\n}\n\nهذا إجراء إنفاذ جاد. سيتم حذف بيانات حسابك نهائيًا في التاريخ المحدد.\n\nيرجى مراجعة:\n- شروط الخدمة: {termsUrl}\n- إرشادات المجتمع: {guidelinesUrl}\n\nعملية الاستئناف:\nإذا كنت تعتقد أن قرار الإنفاذ هذا كان غير صحيح أو غير مبرر، لديك 60 يومًا لتقديم استئناف. أرسل بريدًا إلكترونيًا إلى {appeals_email} من عنوان البريد الإلكتروني هذا.\n\nفي استئنافك:\n- اشرح بوضوح سبب اعتقادك أن قرار الإنفاذ كان غير صحيح أو غير مبرر\n- قدم أي دليل أو سياق ذي صلة\n\nسيقوم عضو من فريق أمان {product_name} بمراجعة استئنافك وقد يوقف الحذف المعلق مؤقتًا إلى حين التوصل إلى قرار نهائي.\n\n– فريق أمان {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "تم تغيير بريدك الإلكتروني في {product_name}", - "body": "مرحبًا {username}،\n\nتم تغيير عنوان البريد الإلكتروني لحسابك في {product_name} إلى {newEmail}.\n\nإذا قمت بهذا التغيير، فلا داعي لاتخاذ أي إجراء. إذا لم تقم بذلك، يمكنك التراجع عن التغيير وتأمين حسابك باستخدام هذا الرابط:\n\n{revertUrl}\n\nسيؤدي هذا إلى استعادة بريدك الإلكتروني السابق، وتسجيل خروجك من جميع الأجهزة، وإزالة أرقام الهواتف المرتبطة، وتعطيل المصادقة متعددة العوامل، وسيُطلب منك تعيين كلمة مرور جديدة.\n\n– فريق أمان {product_name}" + "body": "مرحبًا {username}،\n\nتم تغيير عنوان البريد الإلكتروني لحسابك في {product_name} إلى {newEmail}.\n\nإذا قمت بهذا التغيير، فلا داعي لاتخاذ أي إجراء. إذا لم تقم بذلك، يمكنك التراجع عن التغيير وتأمين حسابك باستخدام هذا الرابط:\n\n{revertUrl}\n\nسيؤدي هذا إلى استعادة بريدك الإلكتروني السابق، وتسجيل خروجك من جميع الأجهزة، وتعطيل المصادقة متعددة العوامل، وسيُطلب منك تعيين كلمة مرور جديدة.\n\n– فريق أمان {product_name}" }, "email_verification": { "subject": "تحقق من بريدك الإلكتروني في {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/bg.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/bg.json index b173c953e..2d63289cc 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/bg.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/bg.json @@ -11,10 +11,6 @@ "subject": "Изтриването на акаунта ти във {product_name} е насрочено", "body": "Здравей, {username},\n\nКакто поиска, акаунтът ти във {product_name} е насрочен за постоянно изтриване на:\n\n{deletionDate, date, full} в {deletionDate, time, short}{reason, select, null {} other {\n\nПричина: {reason}}}\n\nДотогава акаунтът ти е заключен. Ако не си поискал това или искаш да запазиш акаунта си, свържи се с {safety_email} от този имейл адрес преди тази дата.\n\n– Екип на {product_name}" }, - "account_disabled_suspicious": { - "subject": "Акаунтът ти във {product_name} е временно деактивиран", - "body": "Здравей, {username},\n\nВременно деактивирахме акаунта ти във {product_name}, защото открихме подозрителна активност.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЗа да възстановиш достъпа до акаунта си, трябва да нулираш паролата си:\n\n{forgotUrl}\n\nСлед като нулираш паролата си, ще можеш да влезеш отново.\n\nАко смяташ, че това е грешка, свържи се с нашия екип за поддръжка.\n\n– Екип за безопасност на {product_name}" - }, "account_scheduled_deletion": { "subject": "Акаунтът ти във {product_name} ще бъде изтрит за постоянно", "body": "Здравей, {username},\n\nАкаунтът ти във {product_name} е насрочен за постоянно изтриване поради нарушения на нашите Общи условия или Насоки на общността.\n\nНасрочено изтриване: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nТова е сериозна мярка. Данните на акаунта ти ще бъдат изтрити за постоянно на насрочената дата.\n\nПрегледай:\n- Общи условия: {termsUrl}\n- Насоки на общността: {guidelinesUrl}\n\nПроцес на обжалване:\nАко смяташ, че това решение е неправилно или необосновано, имаш 60 дни да подадеш обжалване. Изпрати имейл на {appeals_email} от този имейл адрес.\n\nВ обжалването си:\n- Обясни ясно защо смяташ, че решението е неправилно или необосновано\n- Приложи всички релевантни доказателства или контекст\n\nЧлен на екипа за безопасност на {product_name} ще прегледа обжалването ти и може да спре предстоящото изтриване, докато не бъде взето окончателно решение.\n\n– Екип за безопасност на {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Имейлът ти във {product_name} беше променен", - "body": "Здравей, {username},\n\nИмейл адресът на акаунта ти във {product_name} беше променен на {newEmail}.\n\nАко ти си направил тази промяна, не е необходимо да предприемаш никакви действия. Ако не си, можеш да отмениш промяната и да защитиш акаунта си, като използваш този линк:\n\n{revertUrl}\n\nТова ще възстанови предишния ти имейл, ще прекрати всички активни сесии, ще премахне свързаните телефонни номера, ще деактивира MFA и ще изиска да зададеш нова парола.\n\n– Екип за безопасност на {product_name}" + "body": "Здравей, {username},\n\nИмейл адресът на акаунта ти във {product_name} беше променен на {newEmail}.\n\nАко ти си направил тази промяна, не е необходимо да предприемаш никакви действия. Ако не си, можеш да отмениш промяната и да защитиш акаунта си, като използваш този линк:\n\n{revertUrl}\n\nТова ще възстанови предишния ти имейл, ще прекрати всички активни сесии, ще деактивира MFA и ще изиска да зададеш нова парола.\n\n– Екип за безопасност на {product_name}" }, "email_verification": { "subject": "Потвърди имейл адреса си във {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/cs.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/cs.json index 7e204ff7e..6d994127d 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/cs.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/cs.json @@ -11,10 +11,6 @@ "subject": "Smazání vašeho účtu {product_name} je naplánováno", "body": "Dobrý den, {username},\n\nNa vaši žádost je trvalé smazání vašeho účtu {product_name} naplánováno na:\n\n{deletionDate, date, full} v {deletionDate, time, short}{reason, select, null {} other {\n\nDůvod: {reason}}}\n\nDo té doby je váš účet uzamčen. Pokud jste o smazání nežádali nebo si chcete účet ponechat, kontaktujte před tímto datem {safety_email} z této e-mailové adresy.\n\n– Tým {product_name}" }, - "account_disabled_suspicious": { - "subject": "Váš účet {product_name} byl dočasně deaktivován", - "body": "Dobrý den, {username},\n\nDočasně jsme deaktivovali váš účet {product_name}, protože jsme zaznamenali podezřelou aktivitu.\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nAbyste znovu získali přístup k účtu, musíte si nastavit nové heslo:\n\n{forgotUrl}\n\nPo změně hesla se budete moci znovu přihlásit.\n\nPokud se domníváte, že jde o chybu, kontaktujte náš tým podpory.\n\n– Bezpečnostní tým {product_name}" - }, "account_scheduled_deletion": { "subject": "Váš účet {product_name} bude trvale smazán", "body": "Dobrý den, {username},\n\nKvůli porušení našich podmínek služby nebo komunitních pravidel bylo naplánováno trvalé smazání vašeho účtu {product_name}.\n\nNaplánované smazání: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Důvod: {reason}}\n}\n\nJedná se o závažné opatření. Data vašeho účtu budou v naplánovaný den trvale smazána.\n\nPřečtěte si:\n- Podmínky služby: {termsUrl}\n- Komunitní pravidla: {guidelinesUrl}\n\nPostup odvolání:\nPokud se domníváte, že toto rozhodnutí bylo nesprávné nebo neopodstatněné, máte 60 dní na podání odvolání. Pošlete e-mail na {appeals_email} z této e-mailové adresy.\n\nV odvolání:\n- Jasně vysvětlete, proč se domníváte, že rozhodnutí bylo nesprávné nebo neopodstatněné\n- Uveďte všechny relevantní důkazy a souvislosti\n\nČlen bezpečnostního týmu {product_name} vaše odvolání přezkoumá a může pozastavit plánované smazání, dokud nepadne konečné rozhodnutí.\n\n– Bezpečnostní tým {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Vaše e-mailová adresa pro {product_name} byla změněna", - "body": "Dobrý den, {username},\n\nE-mailová adresa vašeho účtu {product_name} byla změněna na {newEmail}.\n\nPokud jste tuto změnu provedli vy, nemusíte nic dělat. Pokud ne, můžete ji vrátit zpět a zabezpečit svůj účet pomocí tohoto odkazu:\n\n{revertUrl}\n\nTím se obnoví vaše předchozí e-mailová adresa, budete odhlášeni ze všech zařízení, odstraní se propojená telefonní čísla, vypne se vícefaktorové ověřování a budete muset nastavit nové heslo.\n\n– Bezpečnostní tým {product_name}" + "body": "Dobrý den, {username},\n\nE-mailová adresa vašeho účtu {product_name} byla změněna na {newEmail}.\n\nPokud jste tuto změnu provedli vy, nemusíte nic dělat. Pokud ne, můžete ji vrátit zpět a zabezpečit svůj účet pomocí tohoto odkazu:\n\n{revertUrl}\n\nTím se obnoví vaše předchozí e-mailová adresa, budete odhlášeni ze všech zařízení, vypne se vícefaktorové ověřování a budete muset nastavit nové heslo.\n\n– Bezpečnostní tým {product_name}" }, "email_verification": { "subject": "Ověřte svou e-mailovou adresu pro {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/da.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/da.json index 1736de4af..b5d888278 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/da.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/da.json @@ -11,10 +11,6 @@ "subject": "Sletningen af din {product_name}-konto er planlagt", "body": "Hej {username},\n\nSom du har anmodet om, slettes din {product_name}-konto permanent den:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}{reason, select, null {} other {\n\nÅrsag: {reason}}}\n\nDin konto er låst indtil da. Hvis du ikke har anmodet om dette, eller hvis du vil beholde din konto, skal du kontakte {safety_email} fra denne e-mailadresse inden denne dato.\n\n– Teamet bag {product_name}" }, - "account_disabled_suspicious": { - "subject": "Din {product_name}-konto er midlertidigt deaktiveret", - "body": "Hej {username},\n\nVi har midlertidigt deaktiveret din {product_name}-konto, fordi vi har registreret mistænkelig aktivitet.\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nFor at få adgang til din konto igen skal du nulstille din adgangskode:\n\n{forgotUrl}\n\nNår du har nulstillet din adgangskode, kan du logge ind igen.\n\nHvis du mener, at dette er sket ved en fejl, kan du kontakte vores supportteam.\n\n– Sikkerhedsteamet hos {product_name}" - }, "account_scheduled_deletion": { "subject": "Din {product_name}-konto slettes permanent", "body": "Hej {username},\n\nVi har planlagt at slette din {product_name}-konto permanent på grund af overtrædelser af vores servicevilkår eller retningslinjer for fællesskabet.\n\nPlanlagt sletning: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsag: {reason}}\n}\n\nDette er en alvorlig sanktion. Dine kontodata bliver permanent slettet på den planlagte dato.\n\nGennemgå:\n- Servicevilkår: {termsUrl}\n- Retningslinjer for fællesskabet: {guidelinesUrl}\n\nKlageproces:\nHvis du mener, at denne beslutning om sanktioner var forkert eller uberettiget, har du 60 dage til at indsende en klage. Send en e-mail til {appeals_email} fra denne e-mailadresse.\n\nI din klage:\n- Forklar tydeligt, hvorfor du mener, at beslutning om sanktioneren var forkert eller uberettiget\n- Fremlæg relevant dokumentation eller kontekst\n\nEt medlem af sikkerhedsteamet hos {product_name} vil gennemgå din klage og kan sætte den afventende sletning på pause, indtil en endelig beslutning er truffet.\n\n– Sikkerhedsteamet hos {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Din e-mailadresse til {product_name} er ændret", - "body": "Hej {username},\n\nE-mailadressen på din {product_name}-konto blev ændret til {newEmail}.\n\nHvis du selv har foretaget ændringen, behøver du ikke gøre noget. Ellers kan du fortryde ændringen og sikre din konto ved at bruge dette link:\n\n{revertUrl}\n\nDette vil gendanne din tidligere e-mailadresse, logge dig ud overalt, fjerne tilknyttede telefonnumre, slå multifaktorgodkendelse fra og kræve, at du vælger en ny adgangskode.\n\n– Sikkerhedsteamet hos {product_name}" + "body": "Hej {username},\n\nE-mailadressen på din {product_name}-konto blev ændret til {newEmail}.\n\nHvis du selv har foretaget ændringen, behøver du ikke gøre noget. Ellers kan du fortryde ændringen og sikre din konto ved at bruge dette link:\n\n{revertUrl}\n\nDette vil gendanne din tidligere e-mailadresse, logge dig ud overalt, slå multifaktorgodkendelse fra og kræve, at du vælger en ny adgangskode.\n\n– Sikkerhedsteamet hos {product_name}" }, "email_verification": { "subject": "Bekræft din {product_name}-e-mailadresse", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/de.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/de.json index 5a2edeea5..0efc531df 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/de.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/de.json @@ -11,10 +11,6 @@ "subject": "Die Löschung deines {product_name}-Accounts ist geplant", "body": "Hallo {username},\n\nwie von dir beantragt, wird dein {product_name}-Account an folgendem Termin dauerhaft gelöscht:\n\n{deletionDate, date, full} um {deletionDate, time, short}{reason, select, null {} other {\n\nGrund: {reason}}}\n\nDein Account ist bis dahin gesperrt. Wenn du das nicht beantragt hast oder deinen Account behalten möchtest, kontaktiere vor diesem Termin {safety_email} von dieser E-Mail-Adresse aus.\n\n– {product_name}-Team" }, - "account_disabled_suspicious": { - "subject": "Dein {product_name}-Account wurde vorübergehend deaktiviert", - "body": "Hallo {username},\n\nwir haben deinen {product_name}-Account vorübergehend deaktiviert, da wir verdächtige Aktivitäten festgestellt haben.\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nUm wieder Zugriff auf deinen Account zu erhalten, musst du dein Passwort zurücksetzen:\n\n{forgotUrl}\n\nNachdem du dein Passwort zurückgesetzt hast, kannst du dich wieder anmelden.\n\nWenn du glaubst, dass dies ein Fehler war, kontaktiere bitte unser Support-Team.\n\n– {product_name}-Sicherheitsteam" - }, "account_scheduled_deletion": { "subject": "Dein {product_name}-Account wird dauerhaft gelöscht", "body": "Hallo {username},\n\ndein {product_name}-Account wurde aufgrund von Verstößen gegen unsere Nutzungsbedingungen oder Community-Richtlinien zur dauerhaften Löschung vorgemerkt.\n\nGeplante Löschung: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Grund: {reason}}\n}\n\nDies ist eine ernsthafte Maßnahme. Deine Accountdaten werden am geplanten Datum dauerhaft gelöscht.\n\nBitte lies dir Folgendes durch:\n- Nutzungsbedingungen: {termsUrl}\n- Community-Richtlinien: {guidelinesUrl}\n\nEinspruchsverfahren:\nWenn du glaubst, dass diese Entscheidung falsch oder ungerechtfertigt war, hast du 60 Tage Zeit, Einspruch einzulegen. Sende eine E-Mail von dieser E-Mail-Adresse an {appeals_email}.\n\nIn deinem Einspruch:\n- Erkläre klar, warum du glaubst, dass die Entscheidung falsch oder ungerechtfertigt war\n- Füge alle relevanten Beweise oder Kontextinformationen bei\n\nEin Mitglied des {product_name}-Sicherheitsteams wird deinen Einspruch prüfen und die geplante Löschung möglicherweise aussetzen, bis eine endgültige Entscheidung getroffen wurde.\n\n– {product_name}-Sicherheitsteam" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Deine {product_name}-E-Mail-Adresse wurde geändert", - "body": "Hallo {username},\n\ndie E-Mail-Adresse deines {product_name}-Accounts wurde in {newEmail} geändert.\n\nWenn du diese Änderung vorgenommen hast, ist keine weitere Aktion erforderlich. Wenn nicht, kannst du die Änderung rückgängig machen und deinen Account über diesen Link absichern:\n\n{revertUrl}\n\nDadurch wird deine vorherige E-Mail-Adresse wiederhergestellt, du wirst überall abgemeldet, verknüpfte Telefonnummern werden entfernt, MFA wird deaktiviert und du musst ein neues Passwort festlegen.\n\n– {product_name}-Sicherheitsteam" + "body": "Hallo {username},\n\ndie E-Mail-Adresse deines {product_name}-Accounts wurde in {newEmail} geändert.\n\nWenn du diese Änderung vorgenommen hast, ist keine weitere Aktion erforderlich. Wenn nicht, kannst du die Änderung rückgängig machen und deinen Account über diesen Link absichern:\n\n{revertUrl}\n\nDadurch wird deine vorherige E-Mail-Adresse wiederhergestellt, du wirst überall abgemeldet, MFA wird deaktiviert und du musst ein neues Passwort festlegen.\n\n– {product_name}-Sicherheitsteam" }, "email_verification": { "subject": "Bestätige deine {product_name}-E-Mail-Adresse", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/el.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/el.json index 881d38d24..596d42e71 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/el.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/el.json @@ -11,10 +11,6 @@ "subject": "Η διαγραφή του λογαριασμού σου στο {product_name} είναι προγραμματισμένη", "body": "Γεια σου {username},\n\nΌπως ζήτησες, ο λογαριασμός σου στο {product_name} έχει προγραμματιστεί για οριστική διαγραφή:\n\n{deletionDate, date, full} και ώρα {deletionDate, time, short}{reason, select, null {} other {\n\nΛόγος: {reason}}}\n\nΜέχρι τότε ο λογαριασμός σου είναι κλειδωμένος. Εάν δεν το ζήτησες ή θέλεις να διατηρήσεις τον λογαριασμό σου, στείλε email στο {safety_email} από αυτή τη διεύθυνση email πριν από αυτή την ημερομηνία.\n\n– Η ομάδα του {product_name}" }, - "account_disabled_suspicious": { - "subject": "Ο λογαριασμός σου στο {product_name} έχει απενεργοποιηθεί προσωρινά", - "body": "Γεια σου {username},\n\nΑπενεργοποιήσαμε προσωρινά τον λογαριασμό σου στο {product_name} επειδή εντοπίσαμε ύποπτη δραστηριότητα.\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΓια να αποκτήσεις ξανά πρόσβαση στον λογαριασμό σου, θα πρέπει να επαναφέρεις τον κωδικό πρόσβασής σου:\n\n{forgotUrl}\n\nΑφού επαναφέρεις τον κωδικό πρόσβασής σου, θα μπορείς να συνδεθείς ξανά.\n\nΕάν πιστεύεις ότι αυτό έγινε κατά λάθος, επικοινώνησε με την ομάδα υποστήριξής μας.\n\n– Η ομάδα ασφαλείας του {product_name}" - }, "account_scheduled_deletion": { "subject": "Ο λογαριασμός σου στο {product_name} θα διαγραφεί οριστικά", "body": "Γεια σου {username},\n\nΟ λογαριασμός σου στο {product_name} έχει προγραμματιστεί για οριστική διαγραφή λόγω παραβιάσεων των Όρων παροχής υπηρεσιών ή των Οδηγιών κοινότητας.\n\nΠρογραμματισμένη διαγραφή: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Λόγος: {reason}}\n}\n\nΠρόκειται για σοβαρό μέτρο. Τα δεδομένα του λογαριασμού σου θα διαγραφούν οριστικά την προγραμματισμένη ημερομηνία.\n\nΈλεγξε:\n- Όροι παροχής υπηρεσιών: {termsUrl}\n- Οδηγίες κοινότητας: {guidelinesUrl}\n\nΔιαδικασία προσφυγής:\nΕάν πιστεύεις ότι αυτή η απόφαση ήταν λανθασμένη ή αδικαιολόγητη, έχεις 60 ημέρες για να υποβάλεις προσφυγή. Στείλε email στο {appeals_email} από αυτήν τη διεύθυνση email.\n\nΣτην προσφυγή σου:\n- Εξήγησε σαφώς γιατί πιστεύεις ότι η απόφαση ήταν λανθασμένη ή αδικαιολόγητη\n- Παράθεσε τυχόν σχετικά αποδεικτικά στοιχεία ή πλαίσιο\n\nΈνα μέλος της ομάδας ασφαλείας του {product_name} θα εξετάσει την προσφυγή σου και ενδέχεται να αναστείλει την εκκρεμή διαγραφή μέχρι να ληφθεί τελική απόφαση.\n\n– Η ομάδα ασφαλείας του {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Το email σου στο {product_name} άλλαξε", - "body": "Γεια σου {username},\n\nΗ διεύθυνση email του λογαριασμού σου στο {product_name} άλλαξε σε {newEmail}.\n\nΕάν έκανες εσύ αυτήν την αλλαγή, δεν χρειάζεται να κάνεις τίποτα. Εάν όχι, μπορείς να αναιρέσεις την αλλαγή και να ασφαλίσεις τον λογαριασμό σου με αυτόν τον σύνδεσμο:\n\n{revertUrl}\n\nΑυτό θα επαναφέρει το προηγούμενο email σου, θα σε αποσυνδέσει από παντού, θα αφαιρέσει τους συνδεδεμένους αριθμούς τηλεφώνου, θα απενεργοποιήσει το MFA και θα σου ζητήσει να ορίσεις νέο κωδικό πρόσβασης.\n\n– Η ομάδα ασφαλείας του {product_name}" + "body": "Γεια σου {username},\n\nΗ διεύθυνση email του λογαριασμού σου στο {product_name} άλλαξε σε {newEmail}.\n\nΕάν έκανες εσύ αυτήν την αλλαγή, δεν χρειάζεται να κάνεις τίποτα. Εάν όχι, μπορείς να αναιρέσεις την αλλαγή και να ασφαλίσεις τον λογαριασμό σου με αυτόν τον σύνδεσμο:\n\n{revertUrl}\n\nΑυτό θα επαναφέρει το προηγούμενο email σου, θα σε αποσυνδέσει από παντού, θα απενεργοποιήσει το MFA και θα σου ζητήσει να ορίσεις νέο κωδικό πρόσβασης.\n\n– Η ομάδα ασφαλείας του {product_name}" }, "email_verification": { "subject": "Επαλήθευσε τη διεύθυνση email σου στο {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/en-GB.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/en-GB.json index 5492e14ce..1b437bac0 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/en-GB.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/en-GB.json @@ -11,10 +11,6 @@ "subject": "Your {product_name} account deletion is scheduled", "body": "Hello {username},\n\nAs you requested, your {product_name} account is scheduled for permanent deletion on:\n\n{deletionDate, date, full} at {deletionDate, time, short}{reason, select, null {} other {\n\nReason: {reason}}}\n\nYour account is locked until then. If you didn't request this, or you want to keep your account, contact {safety_email} from this email address before that date.\n\n– {product_name} Team" }, - "account_disabled_suspicious": { - "subject": "Your {product_name} account has been temporarily disabled", - "body": "Hello {username},\n\nWe temporarily disabled your {product_name} account because we detected suspicious activity.\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nTo regain access to your account, you'll need to reset your password:\n\n{forgotUrl}\n\nAfter you reset your password, you'll be able to log in again.\n\nIf you believe this was done in error, please contact our support team.\n\n– {product_name} Safety Team" - }, "account_scheduled_deletion": { "subject": "Your {product_name} account will be permanently deleted", "body": "Hello {username},\n\nYour {product_name} account has been scheduled for permanent deletion due to violations of our Terms of Service or Community Guidelines.\n\nScheduled deletion: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nThis is a serious enforcement action. Your account data will be permanently deleted on the scheduled date.\n\nPlease review:\n- Terms of Service: {termsUrl}\n- Community Guidelines: {guidelinesUrl}\n\nAppeals process:\nIf you believe this enforcement decision was incorrect or unjustified, you have 60 days to submit an appeal. Email {appeals_email} from this email address.\n\nIn your appeal:\n- Clearly explain why you believe the enforcement decision was incorrect or unjustified\n- Provide any relevant evidence or context\n\nA member of the {product_name} Safety Team will review your appeal and may pause the pending deletion until a final decision has been reached.\n\n– {product_name} Safety Team" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Your {product_name} email was changed", - "body": "Hello {username},\n\nThe email address on your {product_name} account was changed to {newEmail}.\n\nIf you made this change, no action is needed. If you didn't, you can revert the change and secure your account using this link:\n\n{revertUrl}\n\nThis will restore your previous email, sign you out everywhere, remove linked phone numbers, disable MFA, and require you to set a new password.\n\n– {product_name} Safety Team" + "body": "Hello {username},\n\nThe email address on your {product_name} account was changed to {newEmail}.\n\nIf you made this change, no action is needed. If you didn't, you can revert the change and secure your account using this link:\n\n{revertUrl}\n\nThis will restore your previous email, sign you out everywhere, disable MFA, and require you to set a new password.\n\n– {product_name} Safety Team" }, "email_verification": { "subject": "Verify your {product_name} email address", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/es-419.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/es-419.json index d53c7dfd5..8b9841a9a 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/es-419.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/es-419.json @@ -11,10 +11,6 @@ "subject": "La eliminación de tu cuenta de {product_name} está programada", "body": "Hola {username}:\n\nSegún lo que solicitaste, la eliminación permanente de tu cuenta de {product_name} está programada para el:\n\n{deletionDate, date, full} a las {deletionDate, time, short}{reason, select, null {} other {\n\nMotivo: {reason}}}\n\nTu cuenta permanecerá bloqueada hasta entonces. Si no solicitaste esto, o si quieres conservar tu cuenta, comunícate con {safety_email} desde esta dirección de correo electrónico antes de esa fecha.\n\n– Equipo de {product_name}" }, - "account_disabled_suspicious": { - "subject": "Tu cuenta de {product_name} ha sido deshabilitada temporalmente", - "body": "Hola {username}:\n\nDeshabilitamos temporalmente tu cuenta de {product_name} porque detectamos actividad sospechosa.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara recuperar el acceso a tu cuenta, deberás restablecer tu contraseña:\n\n{forgotUrl}\n\nDespués de restablecer tu contraseña, podrás iniciar sesión de nuevo.\n\nSi crees que esto fue un error, comunícate con nuestro equipo de soporte.\n\n– Equipo de seguridad de {product_name}" - }, "account_scheduled_deletion": { "subject": "Tu cuenta de {product_name} será eliminada permanentemente", "body": "Hola {username}:\n\nSe ha programado la eliminación permanente de tu cuenta de {product_name} debido a infracciones de nuestros Términos del servicio o Normas de la comunidad.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nPor favor, revisa:\n- Términos del servicio: {termsUrl}\n- Normas de la comunidad: {guidelinesUrl}\n\nProceso de apelación:\nSi crees que esta decisión fue incorrecta o injustificada, tienes 60 días para presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\nEn tu apelación:\n- Explica claramente por qué crees que la decisión fue incorrecta o injustificada\n- Aporta las pruebas o el contexto que consideres relevantes\n\nUn miembro del Equipo de seguridad de {product_name} revisará tu apelación y podrá pausar la eliminación pendiente hasta que se haya tomado una decisión final.\n\n– Equipo de seguridad de {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Se cambió tu correo electrónico en {product_name}", - "body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} se cambió a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, eliminará los números de teléfono vinculados, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de seguridad de {product_name}" + "body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} se cambió a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de seguridad de {product_name}" }, "email_verification": { "subject": "Verifica tu dirección de correo electrónico en {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/es-ES.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/es-ES.json index 376ed531b..afa323853 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/es-ES.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/es-ES.json @@ -11,10 +11,6 @@ "subject": "La eliminación de tu cuenta de {product_name} está programada", "body": "Hola {username}:\n\nTal y como solicitaste, la eliminación permanente de tu cuenta de {product_name} está programada para el:\n\n{deletionDate, date, full} a las {deletionDate, time, short}{reason, select, null {} other {\n\nMotivo: {reason}}}\n\nTu cuenta permanecerá bloqueada hasta entonces. Si no solicitaste esto, o si quieres conservar tu cuenta, ponte en contacto con {safety_email} desde esta dirección de correo electrónico antes de esa fecha.\n\n– Equipo de {product_name}" }, - "account_disabled_suspicious": { - "subject": "Tu cuenta de {product_name} ha sido deshabilitada temporalmente", - "body": "Hola {username}:\n\nHemos deshabilitado temporalmente tu cuenta de {product_name} porque hemos detectado actividad sospechosa.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara recuperar el acceso a tu cuenta, tendrás que restablecer tu contraseña:\n\n{forgotUrl}\n\nDespués de restablecer tu contraseña, podrás iniciar sesión de nuevo.\n\nSi crees que esto ha sido un error, ponte en contacto con nuestro equipo de soporte.\n\n– Equipo de seguridad de {product_name}" - }, "account_scheduled_deletion": { "subject": "Tu cuenta de {product_name} será eliminada permanentemente", "body": "Hola {username}:\n\nSe ha programado la eliminación permanente de tu cuenta de {product_name} debido a infracciones de nuestras Condiciones del servicio o Normas de la comunidad.\n\nEliminación programada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta es una medida grave. Los datos de tu cuenta se eliminarán permanentemente en la fecha programada.\n\nPor favor, revisa:\n- Condiciones del servicio: {termsUrl}\n- Normas de la comunidad: {guidelinesUrl}\n\nProceso de apelación:\nSi crees que esta decisión fue incorrecta o injustificada, tienes 60 días para presentar una apelación. Envía un correo electrónico a {appeals_email} desde esta dirección de correo electrónico.\n\nEn tu apelación:\n- Explica claramente por qué crees que la decisión fue incorrecta o injustificada\n- Aporta las pruebas o el contexto que consideres relevantes\n\nUn miembro del Equipo de seguridad de {product_name} revisará tu apelación y podrá pausar la eliminación pendiente hasta que se haya tomado una decisión final.\n\n– Equipo de seguridad de {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Se ha cambiado tu correo electrónico en {product_name}", - "body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} ha sido cambiada a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, eliminará los números de teléfono vinculados, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de seguridad de {product_name}" + "body": "Hola {username}:\n\nLa dirección de correo electrónico de tu cuenta de {product_name} ha sido cambiada a {newEmail}.\n\nSi realizaste este cambio, no es necesario que hagas nada. Si no lo hiciste, puedes revertir el cambio y proteger tu cuenta usando este enlace:\n\n{revertUrl}\n\nEsto restaurará tu correo electrónico anterior, cerrará tu sesión en todas partes, deshabilitará la autenticación multifactor y te pedirá que establezcas una nueva contraseña.\n\n– Equipo de seguridad de {product_name}" }, "email_verification": { "subject": "Verifica tu dirección de correo electrónico en {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/fi.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/fi.json index 41cb6731a..096e13b4f 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/fi.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/fi.json @@ -11,10 +11,6 @@ "subject": "{product_name}-tilisi poistaminen on ajoitettu", "body": "Hei {username},\n\nPyyntösi mukaisesti {product_name}-tilisi on ajoitettu poistettavaksi pysyvästi:\n\n{deletionDate, date, full} klo {deletionDate, time, short}{reason, select, null {} other {\n\nSyy: {reason}}}\n\nTilisi on lukittu siihen asti. Jos et pyytänyt tätä tai haluat säilyttää tilisi, ota yhteyttä osoitteeseen {safety_email} tästä sähköpostiosoitteesta ennen tätä päivämäärää.\n\n– {product_name}-tiimi" }, - "account_disabled_suspicious": { - "subject": "Käyttäjätilisi {product_name}-palvelussa on tilapäisesti poistettu käytöstä", - "body": "Hei {username},\n\nOlemme poistaneet {product_name}-tilisi tilapäisesti käytöstä, koska havaitsimme epäilyttävää toimintaa.\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nPäästäksesi takaisin tilillesi sinun on nollattava salasanasi:\n\n{forgotUrl}\n\nKun olet nollannut salasanasi, voit kirjautua sisään uudelleen.\n\nJos uskot, että tämä oli virhe, ota yhteyttä tukitiimiimme.\n\n– {product_name}-turvallisuustiimi" - }, "account_scheduled_deletion": { "subject": "Käyttäjätilisi {product_name}-palvelussa poistetaan pysyvästi", "body": "Hei {username},\n\n{product_name}-käyttäjätilisi on ajoitettu poistettavaksi pysyvästi käyttöehtojemme tai yhteisösääntöjemme rikkomisen vuoksi.\n\nAjoitettu poisto: {deletionDate, date, full} klo {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Syy: {reason}}\n}\n\nTämä on vakava toimenpide. Tilisi tiedot poistetaan pysyvästi ajoitettuna päivänä.\n\nTutustu:\n- Käyttöehdot: {termsUrl}\n- Yhteisön säännöt: {guidelinesUrl}\n\nValitusprosessi:\nJos uskot, että tämä päätös oli virheellinen tai perusteeton, sinulla on 60 päivää aikaa tehdä valitus. Lähetä sähköpostia osoitteeseen {appeals_email} tästä sähköpostiosoitteesta.\n\nValituksessasi:\n- Selitä selkeästi, miksi uskot päätöksen olleen virheellinen tai perusteeton\n- Liitä mukaan asiaankuuluvat todisteet tai taustatiedot\n\n{product_name}-turvallisuustiimin jäsen käsittelee valituksesi ja voi keskeyttää vireillä olevan poiston, kunnes lopullinen päätös on tehty.\n\n– {product_name}-turvallisuustiimi" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "{product_name}-tilisi sähköpostiosoite on vaihdettu", - "body": "Hei {username},\n\nSähköpostiosoitteesi {product_name}-tilillä on vaihdettu osoitteeseen {newEmail}.\n\nJos teit tämän muutoksen, toimenpiteitä ei tarvita. Jos et tehnyt, voit kumota muutoksen ja turvata tilisi käyttämällä tätä linkkiä:\n\n{revertUrl}\n\nTämä palauttaa edellisen sähköpostiosoitteesi, kirjaa sinut ulos kaikkialta, poistaa linkitetyt puhelinnumerot, poistaa MFA:n käytöstä ja edellyttää uuden salasanan asettamista.\n\n– {product_name}-turvallisuustiimi" + "body": "Hei {username},\n\nSähköpostiosoitteesi {product_name}-tilillä on vaihdettu osoitteeseen {newEmail}.\n\nJos teit tämän muutoksen, toimenpiteitä ei tarvita. Jos et tehnyt, voit kumota muutoksen ja turvata tilisi käyttämällä tätä linkkiä:\n\n{revertUrl}\n\nTämä palauttaa edellisen sähköpostiosoitteesi, kirjaa sinut ulos kaikkialta, poistaa MFA:n käytöstä ja edellyttää uuden salasanan asettamista.\n\n– {product_name}-turvallisuustiimi" }, "email_verification": { "subject": "Vahvista sähköpostiosoitteesi {product_name}-tilillä", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/fr.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/fr.json index ba16f25fa..774acb86f 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/fr.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/fr.json @@ -11,10 +11,6 @@ "subject": "La suppression de votre compte {product_name} est programmée", "body": "Bonjour {username},\n\nComme vous l’avez demandé, la suppression définitive de votre compte {product_name} est prévue le :\n\n{deletionDate, date, full} à {deletionDate, time, short}{reason, select, null {} other {\n\nMotif : {reason}}}\n\nVotre compte est verrouillé d’ici là. Si vous n’êtes pas à l’origine de cette demande, ou si vous souhaitez conserver votre compte, contactez {safety_email} depuis cette adresse e-mail avant cette date.\n\n– L’équipe {product_name}" }, - "account_disabled_suspicious": { - "subject": "Votre compte {product_name} a été temporairement désactivé", - "body": "Bonjour {username},\n\nNous avons temporairement désactivé votre compte {product_name} après avoir détecté une activité suspecte.\n\n{reason, select, null {} other {Motif : {reason}}}\n\nPour retrouver l’accès à votre compte, réinitialisez votre mot de passe :\n\n{forgotUrl}\n\nVous pourrez ensuite vous connecter à nouveau.\n\nSi vous pensez qu’il s’agit d’une erreur, contactez notre équipe d’assistance.\n\n– L’équipe de sécurité de {product_name}" - }, "account_scheduled_deletion": { "subject": "Votre compte {product_name} sera définitivement supprimé", "body": "Bonjour {username},\n\nLa suppression définitive de votre compte {product_name} a été programmée en raison de violations de nos conditions d’utilisation ou des règles de la communauté.\n\nSuppression prévue : {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select, null {} other {Motif : {reason}}}\n\nIl s’agit d’une sanction importante. Les données de votre compte seront définitivement supprimées à la date prévue.\n\nVeuillez consulter :\n- Conditions d’utilisation : {termsUrl}\n- Règles de la communauté : {guidelinesUrl}\n\nProcédure de recours :\nSi vous estimez que cette décision est incorrecte ou injustifiée, vous disposez de 60 jours pour déposer un recours. Écrivez à {appeals_email} depuis cette adresse e-mail.\n\nDans votre recours :\n- Expliquez clairement pourquoi vous estimez la décision incorrecte ou injustifiée\n- Fournissez tout élément de preuve ou de contexte pertinent\n\nUn membre de l’équipe de sécurité de {product_name} examinera votre recours et pourra suspendre la suppression prévue jusqu’à la décision finale.\n\n– L’équipe de sécurité de {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Votre adresse e-mail {product_name} a été modifiée", - "body": "Bonjour {username},\n\nL’adresse e-mail de votre compte {product_name} a été remplacée par {newEmail}.\n\nSi vous avez effectué ce changement, vous n’avez rien à faire. Sinon, vous pouvez l’annuler et sécuriser votre compte avec ce lien :\n\n{revertUrl}\n\nVotre ancienne adresse e-mail sera rétablie, toutes vos sessions seront fermées, les numéros de téléphone associés seront supprimés et l’authentification multifacteur sera désactivée. Vous devrez aussi définir un nouveau mot de passe.\n\n– L’équipe de sécurité de {product_name}" + "body": "Bonjour {username},\n\nL’adresse e-mail de votre compte {product_name} a été remplacée par {newEmail}.\n\nSi vous avez effectué ce changement, vous n’avez rien à faire. Sinon, vous pouvez l’annuler et sécuriser votre compte avec ce lien :\n\n{revertUrl}\n\nVotre ancienne adresse e-mail sera rétablie, toutes vos sessions seront fermées et l’authentification multifacteur sera désactivée. Vous devrez aussi définir un nouveau mot de passe.\n\n– L’équipe de sécurité de {product_name}" }, "email_verification": { "subject": "Vérifiez votre adresse e-mail {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/he.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/he.json index e1f238dba..5a871a165 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/he.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/he.json @@ -11,10 +11,6 @@ "subject": "מחיקת חשבון ה-{product_name} שלכם מתוזמנת", "body": "שלום {username},\n\nבהתאם לבקשתכם, חשבון ה-{product_name} שלכם מתוכנן להימחק לצמיתות בתאריך:\n\n{deletionDate, date, full} בשעה {deletionDate, time, short}{reason, select, null {} other {\n\nסיבה: {reason}}}\n\nעד אז החשבון שלכם נעול. אם לא ביקשתם זאת, או שברצונכם לשמור על החשבון, צרו קשר עם {safety_email} מכתובת האימייל הזו לפני תאריך זה.\n\nצוות {product_name}" }, - "account_disabled_suspicious": { - "subject": "חשבון ה-{product_name} שלכם הושבת זמנית", - "body": "שלום {username},\n\nהשבתנו זמנית את חשבון ה-{product_name} שלכם מכיוון שזיהינו פעילות חשודה.\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nכדי לשחזר את הגישה לחשבון, תצטרכו לאפס את הסיסמה:\n\n{forgotUrl}\n\nלאחר שתאפסו את הסיסמה, תוכלו להתחבר שוב.\n\nאם אתם חושבים שזו טעות, צרו קשר עם צוות התמיכה שלנו.\n\nצוות הבטיחות של {product_name}" - }, "account_scheduled_deletion": { "subject": "חשבון ה-{product_name} שלכם יימחק לצמיתות", "body": "שלום {username},\n\nחשבון ה-{product_name} שלכם נקבע למחיקה לצמיתות עקב הפרות של תנאי השירות או הנחיות הקהילה שלנו.\n\nמחיקה מתוזמנת: {deletionDate, date, full} בשעה {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {סיבה: {reason}}\n}\n\nזוהי פעולת אכיפה חמורה. נתוני החשבון שלכם יימחקו לצמיתות בתאריך המתוכנן.\n\nאנא עיינו במסמכים הבאים:\n- תנאי השירות: {termsUrl}\n- הנחיות הקהילה: {guidelinesUrl}\n\nתהליך ערעור:\nאם אתם חושבים שהחלטת האכיפה שגויה או בלתי מוצדקת, יש לכם 60 יום להגיש ערעור. שלחו אימייל לכתובת {appeals_email} מכתובת האימייל הזו.\n\nבערעור:\n- הסבירו בבירור מדוע לדעתכם החלטת האכיפה שגויה או בלתי מוצדקת\n- צרפו כל ראיה או הקשר רלוונטיים\n\nחבר בצוות הבטיחות של {product_name} יבדוק את הערעור שלכם ועשוי להשהות את המחיקה הממתינה עד לקבלת החלטה סופית.\n\nצוות הבטיחות של {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "האימייל שלכם ב-{product_name} שונה", - "body": "שלום {username},\n\nכתובת האימייל בחשבון ה-{product_name} שלכם שונתה ל-{newEmail}.\n\nאם אתם ביצעתם שינוי זה, אין צורך בפעולה. אם לא, אתם יכולים לבטל את השינוי ולאבטח את חשבונכם באמצעות קישור זה:\n\n{revertUrl}\n\nפעולה זו תשחזר את האימייל הקודם שלכם, תנתק אתכם מכל המכשירים, תסיר מספרי טלפון מקושרים, תבטל את האימות הרב-שלבי (MFA), ותדרוש מכם להגדיר סיסמה חדשה.\n\nצוות הבטיחות של {product_name}" + "body": "שלום {username},\n\nכתובת האימייל בחשבון ה-{product_name} שלכם שונתה ל-{newEmail}.\n\nאם אתם ביצעתם שינוי זה, אין צורך בפעולה. אם לא, אתם יכולים לבטל את השינוי ולאבטח את חשבונכם באמצעות קישור זה:\n\n{revertUrl}\n\nפעולה זו תשחזר את האימייל הקודם שלכם, תנתק אתכם מכל המכשירים, תבטל את האימות הרב-שלבי (MFA), ותדרוש מכם להגדיר סיסמה חדשה.\n\nצוות הבטיחות של {product_name}" }, "email_verification": { "subject": "אימות האימייל שלכם ב-{product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hi.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hi.json index 4eff258ab..e19d9a08f 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hi.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hi.json @@ -11,10 +11,6 @@ "subject": "आपके {product_name} अकाउंट का डिलीशन शेड्यूल कर दिया गया है", "body": "नमस्ते {username},\n\nआपके अनुरोध के अनुसार, आपके {product_name} अकाउंट को हमेशा के लिए डिलीट करने के लिए शेड्यूल कर दिया गया है:\n\n{deletionDate, date, full} को {deletionDate, time, short} पर{reason, select, null {} other {\n\nवजह: {reason}}}\n\nतब तक आपका अकाउंट लॉक रहेगा। अगर आपने इसका अनुरोध नहीं किया था, या आप अपना अकाउंट रखना चाहते हैं, तो उस तारीख से पहले इसी ईमेल पते से {safety_email} पर संपर्क करें।\n\n– {product_name} टीम" }, - "account_disabled_suspicious": { - "subject": "आपका {product_name} अकाउंट अस्थायी रूप से डिसेबल कर दिया गया है", - "body": "नमस्ते {username},\n\nहमने आपके {product_name} अकाउंट को अस्थायी रूप से डिसेबल कर दिया है क्योंकि हमने संदिग्ध एक्टिविटी देखी है।\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nअपने अकाउंट का एक्सेस फिर से पाने के लिए, आपको अपना पासवर्ड रीसेट करना होगा:\n\n{forgotUrl}\n\nअपना पासवर्ड रीसेट करने के बाद, आप फिर से लॉगिन कर पाएँगे।\n\nअगर आपको लगता है कि यह गलती से हुआ है, तो कृपया हमारी सपोर्ट टीम से संपर्क करें।\n\n– {product_name} सेफ्टी टीम" - }, "account_scheduled_deletion": { "subject": "आपका {product_name} अकाउंट हमेशा के लिए डिलीट कर दिया जाएगा", "body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट को हमारी सेवा की शर्तों या कम्युनिटी गाइडलाइंस के उल्लंघन के कारण हमेशा के लिए डिलीट करने के लिए शेड्यूल किया गया है।\n\nडिलीशन की निर्धारित तारीख: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {वजह: {reason}}\n}\n\nयह एक गंभीर कार्रवाई है। आपके अकाउंट का डेटा निर्धारित तारीख पर हमेशा के लिए डिलीट कर दिया जाएगा।\n\nकृपया देखें:\n- सेवा की शर्तें: {termsUrl}\n- कम्युनिटी गाइडलाइंस: {guidelinesUrl}\n\nअपील प्रक्रिया:\nअगर आपको लगता है कि यह फैसला गलत या अनुचित था, तो आपके पास अपील सबमिट करने के लिए 60 दिन हैं। इस ईमेल पते से {appeals_email} पर ईमेल करें।\n\nअपनी अपील में:\n- साफ़ तौर पर बताएं कि आपको क्यों लगता है कि यह फैसला गलत या अनुचित था\n- कोई भी प्रासंगिक सबूत या जानकारी दें\n\n{product_name} सेफ्टी टीम का एक सदस्य आपकी अपील का रिव्यू करेगा और अंतिम फैसला आने तक डिलीट होने की प्रक्रिया को रोक सकता है।\n\n– {product_name} सेफ्टी टीम" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "आपका {product_name} ईमेल बदल दिया गया है", - "body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट पर ईमेल पता बदलकर {newEmail} कर दिया गया है।\n\nअगर आपने यह बदलाव किया है, तो किसी कार्रवाई की ज़रूरत नहीं है। अगर आपने नहीं किया है, तो आप इस लिंक का उपयोग करके बदलाव को वापस ले सकते हैं और अपना अकाउंट सुरक्षित कर सकते हैं:\n\n{revertUrl}\n\nयह आपके पिछले ईमेल को रीस्टोर करेगा, आपको हर जगह से साइन आउट करेगा, लिंक किए गए फ़ोन नंबर हटाएगा, MFA को डिसेबल करेगा, और आपको एक नया पासवर्ड सेट करने की ज़रूरत होगी।\n\n– {product_name} सेफ्टी टीम" + "body": "नमस्ते {username},\n\nआपके {product_name} अकाउंट पर ईमेल पता बदलकर {newEmail} कर दिया गया है।\n\nअगर आपने यह बदलाव किया है, तो किसी कार्रवाई की ज़रूरत नहीं है। अगर आपने नहीं किया है, तो आप इस लिंक का उपयोग करके बदलाव को वापस ले सकते हैं और अपना अकाउंट सुरक्षित कर सकते हैं:\n\n{revertUrl}\n\nयह आपके पिछले ईमेल को रीस्टोर करेगा, आपको हर जगह से साइन आउट करेगा, MFA को डिसेबल करेगा, और आपको एक नया पासवर्ड सेट करने की ज़रूरत होगी।\n\n– {product_name} सेफ्टी टीम" }, "email_verification": { "subject": "अपना {product_name} ईमेल पता वेरिफ़ाई करें", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hr.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hr.json index d6759e391..caad2c534 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hr.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hr.json @@ -11,10 +11,6 @@ "subject": "Brisanje tvog računa na {product_name}u je zakazano", "body": "Pozdrav {username},\n\nNa tvoj zahtjev, tvoj račun na {product_name}u zakazan je za trajno brisanje:\n\n{deletionDate, date, full} u {deletionDate, time, short}{reason, select, null {} other {\n\nRazlog: {reason}}}\n\nDo tada je tvoj račun zaključan. Ako ovaj zahtjev ne dolazi od tebe ili želiš zadržati račun, kontaktiraj {safety_email} s ove adrese e-pošte prije tog datuma.\n\n– Tim {product_name}a" }, - "account_disabled_suspicious": { - "subject": "Tvoj račun na {product_name}u privremeno je onemogućen", - "body": "Pozdrav {username},\n\nPrivremeno smo onemogućili tvoj račun na {product_name}u jer smo otkrili sumnjivu aktivnost.\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nZa ponovni pristup svom računu morat ćeš poništiti lozinku:\n\n{forgotUrl}\n\nNakon što poništiš lozinku, moći ćeš se ponovno prijaviti.\n\nAko misliš da je ovo pogreška, kontaktiraj naš tim za podršku.\n\n– Sigurnosni tim {product_name}a" - }, "account_scheduled_deletion": { "subject": "Tvoj račun na {product_name}u bit će trajno izbrisan", "body": "Pozdrav {username},\n\nTvoj račun na {product_name}u zakazan je za trajno brisanje zbog kršenja naših Uvjeta pružanja usluge ili Smjernica zajednice.\n\nZakazano brisanje: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Razlog: {reason}}\n}\n\nOvo je ozbiljna mjera. Podaci tvog računa bit će trajno izbrisani na zakazani datum.\n\nPregledaj:\n- Uvjeti pružanja usluge: {termsUrl}\n- Smjernice zajednice: {guidelinesUrl}\n\nPostupak žalbe:\nAko smatraš da je ova odluka bila netočna ili neopravdana, imaš 60 dana za podnošenje žalbe. Pošalji e-poštu na {appeals_email} s ove adrese e-pošte.\n\nU svojoj žalbi:\n- Jasno objasni zašto smatraš da je odluka bila netočna ili neopravdana\n- Navedi sve relevantne dokaze ili kontekst\n\nČlan Sigurnosnog tima {product_name}a pregledat će tvoju žalbu i može privremeno zaustaviti zakazano brisanje dok se ne donese konačna odluka.\n\n– Sigurnosni tim {product_name}a" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Tvoja e-pošta za {product_name} je promijenjena", - "body": "Pozdrav {username},\n\nAdresa e-pošte na tvom računu na {product_name}u promijenjena je u {newEmail}.\n\nAko ova promjena dolazi od tebe, nije potrebna nikakva radnja. Ako ne dolazi, možeš je poništiti i zaštititi svoj račun ovom poveznicom:\n\n{revertUrl}\n\nOvo će vratiti tvoju prethodnu e-poštu, odjaviti te iz svih sesija, ukloniti povezane telefonske brojeve, onemogućiti višefaktorsku autentifikaciju i zahtijevati postavljanje nove lozinke.\n\n– Sigurnosni tim {product_name}a" + "body": "Pozdrav {username},\n\nAdresa e-pošte na tvom računu na {product_name}u promijenjena je u {newEmail}.\n\nAko ova promjena dolazi od tebe, nije potrebna nikakva radnja. Ako ne dolazi, možeš je poništiti i zaštititi svoj račun ovom poveznicom:\n\n{revertUrl}\n\nOvo će vratiti tvoju prethodnu e-poštu, odjaviti te iz svih sesija, onemogućiti višefaktorsku autentifikaciju i zahtijevati postavljanje nove lozinke.\n\n– Sigurnosni tim {product_name}a" }, "email_verification": { "subject": "Potvrdi svoju e-poštu za {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hu.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hu.json index 73a30db43..d9a060569 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hu.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/hu.json @@ -11,10 +11,6 @@ "subject": "Ütemeztük {product_name}-fiókod törlését", "body": "Szia, {username}!\n\nKérésedre {product_name}-fiókod végleges törlése a következő időpontra van ütemezve:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\nIndok: {reason}}}\n\nAddig a fiókod zárolva van. Ha nem te kérted ezt, vagy meg szeretnéd tartani a fiókodat, még az időpont előtt írj erről az e-mail-címről erre a címre: {safety_email}.\n\n– {product_name} csapata" }, - "account_disabled_suspicious": { - "subject": "{product_name}-fiókodat ideiglenesen letiltottuk", - "body": "Szia, {username}!\n\nIdeiglenesen letiltottuk a {product_name}-fiókodat, mert gyanús tevékenységet észleltünk.\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nA fiókodhoz való hozzáférés visszaszerzéséhez vissza kell állítanod a jelszavadat:\n\n{forgotUrl}\n\nA jelszó visszaállítása után újra be tudsz jelentkezni.\n\nHa úgy gondolod, hogy ez tévedésből történt, vedd fel a kapcsolatot az ügyfélszolgálatunkkal.\n\n– {product_name} biztonsági csapata" - }, "account_scheduled_deletion": { "subject": "{product_name}-fiókodat véglegesen törölni fogjuk", "body": "Szia, {username}!\n\n{product_name}-fiókod végleges törlését ütemeztük a szolgáltatási feltételeink vagy a közösségi irányelveink megsértése miatt.\n\nA törlés tervezett időpontja: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Indok: {reason}}\n}\n\nEz súlyos moderációs intézkedés. Fiókod adatait a megadott időpontban véglegesen töröljük.\n\nKérjük, olvasd át az alábbiakat:\n- Szolgáltatási feltételek: {termsUrl}\n- Közösségi irányelvek: {guidelinesUrl}\n\nFellebbezés:\nHa úgy gondolod, hogy ez a döntés hibás vagy indokolatlan volt, 60 napod van fellebbezni. Erről az e-mail-címről írj a következő címre: {appeals_email}.\n\nA fellebbezésben:\n- Világosan fejtsd ki, miért gondolod, hogy a döntés hibás vagy indokolatlan volt.\n- Add meg a kapcsolódó bizonyítékokat és a körülményeket.\n\nA {product_name} biztonsági csapatának egyik tagja elbírálja a fellebbezésedet, és a végleges döntésig felfüggesztheti a tervezett törlést.\n\n– {product_name} biztonsági csapata" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Megváltozott {product_name}-fiókod e-mail-címe", - "body": "Szia, {username}!\n\n{product_name}-fiókod e-mail-címe a következőre változott: {newEmail}.\n\nHa te módosítottad, nincs további teendőd. Ha nem te voltál, az alábbi linken visszavonhatod a módosítást, és biztonságba helyezheted a fiókodat:\n\n{revertUrl}\n\nEzzel visszaállítjuk a korábbi e-mail-címedet, mindenhol kijelentkeztetünk, eltávolítjuk a kapcsolt telefonszámokat, kikapcsoljuk a többfaktoros azonosítást, és új jelszót kell beállítanod.\n\n– {product_name} biztonsági csapata" + "body": "Szia, {username}!\n\n{product_name}-fiókod e-mail-címe a következőre változott: {newEmail}.\n\nHa te módosítottad, nincs további teendőd. Ha nem te voltál, az alábbi linken visszavonhatod a módosítást, és biztonságba helyezheted a fiókodat:\n\n{revertUrl}\n\nEzzel visszaállítjuk a korábbi e-mail-címedet, mindenhol kijelentkeztetünk, kikapcsoljuk a többfaktoros azonosítást, és új jelszót kell beállítanod.\n\n– {product_name} biztonsági csapata" }, "email_verification": { "subject": "Erősítsd meg {product_name}-fiókod e-mail-címét", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/id.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/id.json index 0923e43d6..271e24115 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/id.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/id.json @@ -11,10 +11,6 @@ "subject": "Penghapusan akun {product_name} kamu telah dijadwalkan", "body": "Halo {username},\n\nSesuai permintaanmu, akun {product_name} kamu dijadwalkan untuk dihapus permanen pada:\n\n{deletionDate, date, full} pukul {deletionDate, time, short}{reason, select, null {} other {\n\nAlasan: {reason}}}\n\nAkunmu dikunci hingga saat itu. Jika kamu tidak meminta ini, atau ingin mempertahankan akunmu, hubungi {safety_email} dari alamat email ini sebelum tanggal tersebut.\n\n– Tim {product_name}" }, - "account_disabled_suspicious": { - "subject": "Akun {product_name} kamu telah dinonaktifkan sementara", - "body": "Halo {username},\n\nKami menonaktifkan sementara akun {product_name} kamu karena kami mendeteksi aktivitas mencurigakan.\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nUntuk mendapatkan kembali akses ke akunmu, kamu perlu mengatur ulang kata sandimu:\n\n{forgotUrl}\n\nSetelah mengatur ulang kata sandi, kamu bisa masuk lagi.\n\nJika kamu merasa ini keliru, silakan hubungi tim dukungan kami.\n\n– Tim Keamanan {product_name}" - }, "account_scheduled_deletion": { "subject": "Akun {product_name} kamu akan dihapus secara permanen", "body": "Halo {username},\n\nAkun {product_name} kamu telah dijadwalkan untuk dihapus permanen karena melanggar Ketentuan Layanan atau Pedoman Komunitas kami.\n\nPenghapusan terjadwal: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Alasan: {reason}}\n}\n\nIni adalah tindakan penegakan yang serius. Data akunmu akan dihapus permanen pada tanggal yang dijadwalkan.\n\nSilakan tinjau:\n- Ketentuan Layanan: {termsUrl}\n- Pedoman Komunitas: {guidelinesUrl}\n\nProses banding:\nJika kamu yakin keputusan ini keliru atau tidak beralasan, kamu punya 60 hari untuk mengajukan banding. Kirim email ke {appeals_email} dari alamat email ini.\n\nDalam bandingmu:\n- Uraikan dengan jelas kenapa kamu yakin keputusan ini keliru atau tidak beralasan\n- Berikan bukti atau konteks yang relevan\n\nAnggota Tim Keamanan {product_name} akan meninjau bandingmu dan bisa menunda penghapusan sampai keputusan akhir tercapai.\n\n– Tim Keamanan {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Email {product_name} kamu telah diubah", - "body": "Halo {username},\n\nAlamat email di akun {product_name} kamu telah diubah menjadi {newEmail}.\n\nJika ini memang kamu, tidak ada yang perlu dilakukan. Jika bukan, kamu bisa membatalkan perubahan itu dan mengamankan akunmu lewat tautan ini:\n\n{revertUrl}\n\nTindakan ini akan mengembalikan email lamamu, mengeluarkanmu dari semua perangkat, menghapus nomor telepon yang tertaut, menonaktifkan MFA, dan mengharuskanmu membuat kata sandi baru.\n\n– Tim Keamanan {product_name}" + "body": "Halo {username},\n\nAlamat email di akun {product_name} kamu telah diubah menjadi {newEmail}.\n\nJika ini memang kamu, tidak ada yang perlu dilakukan. Jika bukan, kamu bisa membatalkan perubahan itu dan mengamankan akunmu lewat tautan ini:\n\n{revertUrl}\n\nTindakan ini akan mengembalikan email lamamu, mengeluarkanmu dari semua perangkat, menonaktifkan MFA, dan mengharuskanmu membuat kata sandi baru.\n\n– Tim Keamanan {product_name}" }, "email_verification": { "subject": "Verifikasi alamat email {product_name} kamu", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/it.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/it.json index 03cd9a510..dda833de7 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/it.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/it.json @@ -11,10 +11,6 @@ "subject": "L'eliminazione del tuo account {product_name} è programmata", "body": "Ciao {username},\n\nCome da tua richiesta, il tuo account {product_name} verrà eliminato definitivamente in questa data:\n\n{deletionDate, date, full} alle {deletionDate, time, short}{reason, select, null {} other {\n\nMotivo: {reason}}}\n\nFino ad allora il tuo account è bloccato. Se non hai richiesto l'eliminazione o se vuoi mantenere il tuo account, contatta {safety_email} da questo indirizzo email prima di tale data.\n\n– Il team di {product_name}" }, - "account_disabled_suspicious": { - "subject": "Il tuo account {product_name} è stato temporaneamente disabilitato", - "body": "Ciao {username},\n\nAbbiamo temporaneamente disabilitato il tuo account {product_name} perché abbiamo rilevato attività sospette.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPer riottenere l'accesso al tuo account, dovrai reimpostare la password:\n\n{forgotUrl}\n\nDopo aver reimpostato la password, potrai accedere di nuovo.\n\nSe ritieni che ciò sia stato fatto per errore, contatta il nostro team di assistenza.\n\n– Il team per la sicurezza di {product_name}" - }, "account_scheduled_deletion": { "subject": "Il tuo account {product_name} verrà eliminato definitivamente", "body": "Ciao {username},\n\nÈ stata programmata l’eliminazione definitiva del tuo account {product_name} a causa di violazioni dei nostri Termini di servizio o delle Linee guida della community.\n\nEliminazione programmata: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nSi tratta di un provvedimento grave. I dati del tuo account verranno eliminati definitivamente alla data programmata.\n\nConsulta:\n- Termini di servizio: {termsUrl}\n- Linee guida della community: {guidelinesUrl}\n\nProcedura di ricorso:\nSe ritieni che questa decisione sia scorretta o ingiustificata, hai 60 giorni per presentare un ricorso. Invia un'email a {appeals_email} da questo indirizzo email.\n\nNel tuo ricorso:\n- Spiega chiaramente perché ritieni che la decisione sia scorretta o ingiustificata\n- Fornisci qualsiasi prova o contesto pertinente\n\nUn membro del team per la sicurezza {product_name} esaminerà il tuo ricorso e potrebbe sospendere l’eliminazione programmata fino a quando non sarà stata raggiunta una decisione finale.\n\n– Il team per la sicurezza di {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Il tuo indirizzo email su {product_name} è stato modificato", - "body": "Ciao {username},\n\nL'indirizzo email del tuo account {product_name} è stato modificato in {newEmail}.\n\nSe hai effettuato questa modifica, non è necessaria alcuna azione. In caso contrario, puoi annullare la modifica e mettere in sicurezza il tuo account utilizzando questo link:\n\n{revertUrl}\n\nQuesto ripristinerà la tua email precedente, ti disconnetterà da tutti i dispositivi, rimuoverà i numeri di telefono collegati, disabiliterà l'MFA e ti richiederà di impostare una nuova password.\n\n– Il team per la sicurezza di {product_name}" + "body": "Ciao {username},\n\nL'indirizzo email del tuo account {product_name} è stato modificato in {newEmail}.\n\nSe hai effettuato questa modifica, non è necessaria alcuna azione. In caso contrario, puoi annullare la modifica e mettere in sicurezza il tuo account utilizzando questo link:\n\n{revertUrl}\n\nQuesto ripristinerà la tua email precedente, ti disconnetterà da tutti i dispositivi, disabiliterà l'MFA e ti richiederà di impostare una nuova password.\n\n– Il team per la sicurezza di {product_name}" }, "email_verification": { "subject": "Verifica il tuo indirizzo email di {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ja.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ja.json index 1082715ad..4b2c64a12 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ja.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ja.json @@ -11,10 +11,6 @@ "subject": "{product_name}アカウントの削除が予定されています", "body": "こんにちは、{username}さん\n\nリクエストに基づき、{product_name}アカウントは以下の日時に完全に削除される予定です。\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\n理由: {reason}}}\n\nそれまでアカウントはロックされます。ご自身でリクエストしていない場合、またはアカウントを維持したい場合は、この日時までにこのメールアドレスから{safety_email}へご連絡ください。\n\n– {product_name}チーム" }, - "account_disabled_suspicious": { - "subject": "{product_name}アカウントが一時的に無効になりました", - "body": "こんにちは、{username}さん\n\n不審なアクティビティが検出されたため、{product_name}アカウントを一時的に無効にしました。\n\n{reason, select,\n null {}\n other {理由: {reason}}\n}\n\nアカウントに再度アクセスするには、パスワードをリセットする必要があります。\n\n{forgotUrl}\n\nパスワードをリセットすると、再度ログインできるようになります。\n\nこの措置が誤りであると思われる場合は、サポートチームにお問い合わせください。\n\n– {product_name}安全チーム" - }, "account_scheduled_deletion": { "subject": "{product_name}アカウントは完全に削除されます", "body": "こんにちは、{username}さん\n\n{product_name}アカウントは、利用規約またはコミュニティガイドラインへの違反のため、完全な削除が予定されています。\n\n削除予定日時: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {理由: {reason}}\n}\n\nこれは重大な措置です。アカウントデータは、予定日に完全に削除されます。\n\n以下をご確認ください。\n- 利用規約: {termsUrl}\n- コミュニティガイドライン: {guidelinesUrl}\n\n異議申し立て手続き:\nこの措置が不正確または不当であると思われる場合は、60日以内に異議申し立てを提出できます。このメールアドレスから{appeals_email}までメールを送信してください。\n\n異議申し立てには、以下を記載してください。\n- 措置が不正確または不当であると考える理由の明確な説明\n- 関連する証拠や背景情報\n\n{product_name}安全チームのメンバーが異議申し立てを審査し、最終決定が下されるまで削除を一時停止する場合があります。\n\n– {product_name}安全チーム" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "{product_name}のメールアドレスが変更されました", - "body": "こんにちは、{username}さん\n\n{product_name}アカウントのメールアドレスが{newEmail}に変更されました。\n\nこの変更を行った場合は、何もする必要はありません。変更を行っていない場合は、このリンクを使用して変更を元に戻し、アカウントを保護できます。\n\n{revertUrl}\n\nこれにより、以前のメールアドレスが復元され、すべてのデバイスからログアウトされ、連携済みの電話番号が削除され、MFAが無効になり、新しいパスワードの設定が必要になります。\n\n– {product_name}安全チーム" + "body": "こんにちは、{username}さん\n\n{product_name}アカウントのメールアドレスが{newEmail}に変更されました。\n\nこの変更を行った場合は、何もする必要はありません。変更を行っていない場合は、このリンクを使用して変更を元に戻し、アカウントを保護できます。\n\n{revertUrl}\n\nこれにより、以前のメールアドレスが復元され、すべてのデバイスからログアウトされ、MFAが無効になり、新しいパスワードの設定が必要になります。\n\n– {product_name}安全チーム" }, "email_verification": { "subject": "{product_name}のメールアドレスを確認", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ko.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ko.json index df1a1deed..5713dcba4 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ko.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ko.json @@ -11,10 +11,6 @@ "subject": "{product_name} 계정 삭제가 예정되었어요", "body": "안녕하세요, {username}님.\n\n요청하신 대로 {product_name} 계정이 다음 날짜에 영구적으로 삭제될 예정이에요:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\n사유: {reason}}}\n\n그때까지 계정은 잠겨 있어요. 요청하지 않으셨거나 계정을 유지하고 싶다면 해당 날짜 전에 이 이메일 주소에서 {safety_email}으로 문의해 주세요.\n\n– {product_name} 팀" }, - "account_disabled_suspicious": { - "subject": "{product_name} 계정이 일시적으로 비활성화되었어요", - "body": "안녕하세요, {username}님.\n\n의심스러운 활동이 감지되어 {product_name} 계정을 일시적으로 비활성화했어요.\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n계정에 다시 액세스하려면 비밀번호를 재설정해야 해요:\n\n{forgotUrl}\n\n비밀번호를 재설정한 후 다시 로그인할 수 있어요.\n\n실수로 비활성화되었다고 생각되면 고객지원팀에 문의해 주세요.\n\n– {product_name} 안전팀" - }, "account_scheduled_deletion": { "subject": "{product_name} 계정이 영구적으로 삭제될 예정이에요", "body": "안녕하세요, {username}님.\n\n서비스 약관 또는 커뮤니티 가이드라인 위반으로 인해 {product_name} 계정이 영구적으로 삭제될 예정이에요.\n\n삭제 예정일: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {사유: {reason}}\n}\n\n이는 중대한 조치이며, 계정 데이터는 예정된 날짜에 영구적으로 삭제될 예정이에요.\n\n다음 내용을 확인해 주세요:\n- 서비스 약관: {termsUrl}\n- 커뮤니티 가이드라인: {guidelinesUrl}\n\n이의 제기 절차:\n이 조치가 잘못되었거나 부당하다고 생각되면 60일 이내에 이의를 제기할 수 있어요. 이 이메일 주소에서 {appeals_email}으로 이메일을 보내 이의를 제기해 주세요.\n\n이의 제기 시에는:\n- 조치가 잘못되었거나 부당하다고 생각하는 이유를 명확하게 설명해 주세요.\n- 관련 증거 또는 맥락을 제공해 주세요.\n\n{product_name} 안전팀 담당자가 이의 제기를 검토하고 최종 결정이 내려질 때까지 삭제를 일시적으로 보류할 수 있어요.\n\n– {product_name} 안전팀" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "{product_name} 이메일이 변경되었어요", - "body": "안녕하세요, {username}님.\n\n{product_name} 계정의 이메일 주소가 {newEmail}로 변경되었어요.\n\n직접 변경하셨다면 별도의 조치는 필요 없어요. 직접 변경하지 않으셨다면 다음 링크를 사용하여 변경 사항을 되돌리고 계정을 보호할 수 있어요:\n\n{revertUrl}\n\n이전 이메일이 복원되고, 모든 기기에서 로그아웃되며, 연결된 전화번호가 제거되고, MFA가 비활성화되며, 새 비밀번호를 설정해야 해요.\n\n– {product_name} 안전팀" + "body": "안녕하세요, {username}님.\n\n{product_name} 계정의 이메일 주소가 {newEmail}로 변경되었어요.\n\n직접 변경하셨다면 별도의 조치는 필요 없어요. 직접 변경하지 않으셨다면 다음 링크를 사용하여 변경 사항을 되돌리고 계정을 보호할 수 있어요:\n\n{revertUrl}\n\n이전 이메일이 복원되고, 모든 기기에서 로그아웃되며, MFA가 비활성화되며, 새 비밀번호를 설정해야 해요.\n\n– {product_name} 안전팀" }, "email_verification": { "subject": "{product_name} 이메일 주소 인증", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/lt.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/lt.json index 8a36d92e7..bf8db4098 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/lt.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/lt.json @@ -11,10 +11,6 @@ "subject": "Tavo {product_name} paskyros ištrynimas numatytas", "body": "Sveiki, {username},\n\nTavo prašymu {product_name} paskyrą numatyta visam laikui ištrinti:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\nPriežastis: {reason}}}\n\nIki tol tavo paskyra užrakinta. Jei to neprašei arba nori išsaugoti paskyrą, iki šios datos parašyk adresu {safety_email} iš šio el. pašto adreso.\n\n– {product_name} komanda" }, - "account_disabled_suspicious": { - "subject": "Tavo {product_name} paskyra laikinai išjungta", - "body": "Sveiki, {username},\n\nLaikinai išjungėme tavo {product_name} paskyrą, nes aptikome įtartiną veiklą.\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nKad atgautum prieigą prie paskyros, turėsi iš naujo nustatyti slaptažodį:\n\n{forgotUrl}\n\nKai iš naujo nustatysi slaptažodį, galėsi vėl prisijungti.\n\nJei manai, kad tai įvyko per klaidą, susisiek su mūsų palaikymo komanda.\n\n– {product_name} saugos komanda" - }, "account_scheduled_deletion": { "subject": "Tavo {product_name} paskyra bus visam laikui ištrinta", "body": "Sveiki, {username},\n\nTavo {product_name} paskyrą numatyta visam laikui ištrinti dėl mūsų paslaugų teikimo sąlygų arba bendruomenės gairių pažeidimų.\n\nNumatytas ištrynimas: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Priežastis: {reason}}\n}\n\nTai rimta priemonė. Tavo paskyros duomenys numatytą dieną bus visam laikui ištrinti.\n\nPeržiūrėk:\n- Paslaugų teikimo sąlygos: {termsUrl}\n- Bendruomenės gairės: {guidelinesUrl}\n\nApeliacijos procesas:\nJei manai, kad šis sprendimas neteisingas arba nepagrįstas, apeliaciją gali pateikti per 60 dienų. Iš šio el. pašto adreso siųsk el. laišką adresu {appeals_email}.\n\nSavo apeliacijoje:\n- Aiškiai paaiškink, kodėl manai, kad sprendimas neteisingas arba nepagrįstas\n- Pateik visus susijusius įrodymus ar kontekstą\n\n{product_name} saugos komandos narys peržiūrės tavo apeliaciją ir gali sustabdyti numatytą ištrynimą, kol bus priimtas galutinis sprendimas.\n\n– {product_name} saugos komanda" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Tavo {product_name} el. paštas buvo pakeistas", - "body": "Sveiki, {username},\n\nTavo {product_name} paskyros el. pašto adresas pakeistas į {newEmail}.\n\nJei šį pakeitimą atlikai tu, nieko daryti nereikia. Jei ne, šia nuoroda gali atšaukti pakeitimą ir apsaugoti savo paskyrą:\n\n{revertUrl}\n\nTai atkurs ankstesnį el. pašto adresą, atjungs tave visuose įrenginiuose, pašalins susietus telefono numerius, išjungs MFA ir pareikalaus nustatyti naują slaptažodį.\n\n– {product_name} saugos komanda" + "body": "Sveiki, {username},\n\nTavo {product_name} paskyros el. pašto adresas pakeistas į {newEmail}.\n\nJei šį pakeitimą atlikai tu, nieko daryti nereikia. Jei ne, šia nuoroda gali atšaukti pakeitimą ir apsaugoti savo paskyrą:\n\n{revertUrl}\n\nTai atkurs ankstesnį el. pašto adresą, atjungs tave visuose įrenginiuose, išjungs MFA ir pareikalaus nustatyti naują slaptažodį.\n\n– {product_name} saugos komanda" }, "email_verification": { "subject": "Patvirtink savo {product_name} el. pašto adresą", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/nl.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/nl.json index 9e97ce6e6..0f7a134b5 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/nl.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/nl.json @@ -11,10 +11,6 @@ "subject": "De verwijdering van je {product_name}-account staat gepland", "body": "Hallo {username},\n\nZoals je hebt verzocht, staat je {product_name}-account gepland voor permanente verwijdering op:\n\n{deletionDate, date, full} om {deletionDate, time, short}{reason, select, null {} other {\n\nReden: {reason}}}\n\nJe account is tot die tijd vergrendeld. Als je dit niet hebt aangevraagd of je account wilt behouden, neem dan vóór die datum vanaf dit e-mailadres contact op met {safety_email}.\n\n– Het team van {product_name}" }, - "account_disabled_suspicious": { - "subject": "Je {product_name}-account is tijdelijk uitgeschakeld", - "body": "Hallo {username},\n\nWe hebben je {product_name}-account tijdelijk uitgeschakeld omdat we verdachte activiteit hebben gedetecteerd.\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nOm weer toegang te krijgen tot je account, moet je je wachtwoord opnieuw instellen:\n\n{forgotUrl}\n\nNadat je je wachtwoord opnieuw hebt ingesteld, kun je weer inloggen.\n\nAls je denkt dat dit een fout is, neem dan contact op met ons supportteam.\n\n– Het veiligheidsteam van {product_name}" - }, "account_scheduled_deletion": { "subject": "Je {product_name}-account wordt permanent verwijderd", "body": "Hallo {username},\n\nJe {product_name}-account staat gepland voor permanente verwijdering vanwege schendingen van onze Gebruiksvoorwaarden of Communityrichtlijnen.\n\nGeplande verwijdering: {deletionDate, date, full} om {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reden: {reason}}\n}\n\nDit is een ingrijpende handhavingsmaatregel. Je accountgegevens worden permanent verwijderd op de geplande datum.\n\nBekijk ook:\n- Gebruiksvoorwaarden: {termsUrl}\n- Communityrichtlijnen: {guidelinesUrl}\n\nBezwaarprocedure:\nAls je van mening bent dat deze handhavingsbeslissing onjuist of ongerechtvaardigd was, heb je 60 dagen de tijd om bezwaar te maken. Stuur een e-mail naar {appeals_email} vanaf dit e-mailadres.\n\nVermeld in je bezwaar:\n- Een duidelijke uitleg waarom je van mening bent dat de handhavingsbeslissing onjuist of ongerechtvaardigd was\n- Alle relevante bewijzen of context\n\nEen medewerker van het veiligheidsteam van {product_name} zal je bezwaar beoordelen en kan de geplande verwijdering uitstellen totdat een definitieve beslissing is genomen.\n\n– Het veiligheidsteam van {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Je e-mailadres op {product_name} is gewijzigd", - "body": "Hallo {username},\n\nHet e-mailadres van je {product_name}-account is gewijzigd naar {newEmail}.\n\nAls je deze wijziging zelf hebt aangebracht, hoef je niets te doen. Als je dit niet hebt gedaan, kun je de wijziging ongedaan maken en je account beveiligen via deze link:\n\n{revertUrl}\n\nDit herstelt je vorige e-mailadres, meldt je overal af, verwijdert gekoppelde telefoonnummers, schakelt MFA uit en vereist dat je een nieuw wachtwoord instelt.\n\n– Het veiligheidsteam van {product_name}" + "body": "Hallo {username},\n\nHet e-mailadres van je {product_name}-account is gewijzigd naar {newEmail}.\n\nAls je deze wijziging zelf hebt aangebracht, hoef je niets te doen. Als je dit niet hebt gedaan, kun je de wijziging ongedaan maken en je account beveiligen via deze link:\n\n{revertUrl}\n\nDit herstelt je vorige e-mailadres, meldt je overal af, schakelt MFA uit en vereist dat je een nieuw wachtwoord instelt.\n\n– Het veiligheidsteam van {product_name}" }, "email_verification": { "subject": "Verifieer je e-mailadres op {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/no.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/no.json index 531ff1f45..e5ea5dc17 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/no.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/no.json @@ -11,10 +11,6 @@ "subject": "Slettingen av {product_name}-kontoen din er planlagt", "body": "Hei {username},\n\nSom du ba om, er {product_name}-kontoen din planlagt for permanent sletting:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}{reason, select, null {} other {\n\nÅrsak: {reason}}}\n\nKontoen din er låst frem til da. Hvis du ikke ba om dette, eller hvis du vil beholde kontoen din, kan du kontakte {safety_email} fra denne e-postadressen før denne datoen.\n\n– {product_name}-teamet" }, - "account_disabled_suspicious": { - "subject": "{product_name}-kontoen din er midlertidig deaktivert", - "body": "Hei {username},\n\nVi deaktiverte {product_name}-kontoen din midlertidig fordi vi oppdaget mistenkelig aktivitet.\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nFor å få tilgang til kontoen din igjen må du tilbakestille passordet ditt:\n\n{forgotUrl}\n\nEtter at du har tilbakestilt passordet ditt, kan du logge inn igjen.\n\nHvis du mener dette er en feil, kan du kontakte kundestøtten vår.\n\n– Sikkerhetsteamet hos {product_name}" - }, "account_scheduled_deletion": { "subject": "{product_name}-kontoen din blir permanent slettet", "body": "Hei {username},\n\nVi har planlagt permanent sletting av {product_name}-kontoen din på grunn av brudd på våre vilkår for bruk eller retningslinjer for fellesskapet.\n\nPlanlagt sletting: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Årsak: {reason}}\n}\n\nDette er et alvorlig tiltak. Kontodataene dine blir permanent slettet på den planlagte datoen.\n\nLes gjennom:\n- Vilkår for bruk: {termsUrl}\n- Retningslinjer for fellesskapet: {guidelinesUrl}\n\nKlageprosessen:\nHvis du mener avgjørelsen var feil eller uberettiget, har du 60 dager på deg til å sende inn en klage. Send en e-post til {appeals_email} fra denne e-postadressen.\n\nI klagen din:\n- Forklar tydelig hvorfor du mener avgjørelsen var feil eller uberettiget\n- Legg ved relevante bevis eller opplysninger\n\nEt medlem av sikkerhetsteamet hos {product_name} vil vurdere klagen din og kan utsette slettingen til en endelig avgjørelse er tatt.\n\n– Sikkerhetsteamet hos {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "E-postadressen på {product_name}-kontoen din er endret", - "body": "Hei {username},\n\nE-postadressen på {product_name}-kontoen din ble endret til {newEmail}.\n\nHvis du gjorde denne endringen, trenger du ikke å gjøre noe. Hvis det ikke var deg, kan du angre endringen og sikre kontoen din via denne lenken:\n\n{revertUrl}\n\nDette gjenoppretter den forrige e-postadressen din, logger deg ut overalt, fjerner tilknyttede telefonnumre, deaktiverer flerfaktorautentisering (MFA) og krever at du angir et nytt passord.\n\n– Sikkerhetsteamet hos {product_name}" + "body": "Hei {username},\n\nE-postadressen på {product_name}-kontoen din ble endret til {newEmail}.\n\nHvis du gjorde denne endringen, trenger du ikke å gjøre noe. Hvis det ikke var deg, kan du angre endringen og sikre kontoen din via denne lenken:\n\n{revertUrl}\n\nDette gjenoppretter den forrige e-postadressen din, logger deg ut overalt, deaktiverer flerfaktorautentisering (MFA) og krever at du angir et nytt passord.\n\n– Sikkerhetsteamet hos {product_name}" }, "email_verification": { "subject": "Bekreft e-postadressen din for {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/pl.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/pl.json index 0382224d2..2355ee3d2 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/pl.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/pl.json @@ -11,10 +11,6 @@ "subject": "Usunięcie Twojego konta {product_name} zostało zaplanowane", "body": "Witaj {username},\n\nZgodnie z Twoją prośbą zaplanowaliśmy trwałe usunięcie konta {product_name}. Termin usunięcia:\n\n{deletionDate, date, full} o {deletionDate, time, short}{reason, select, null {} other {\n\nPowód: {reason}}}\n\nDo tego czasu Twoje konto jest zablokowane. Jeśli nie prosiłeś o to lub chcesz zachować konto, skontaktuj się z {safety_email} z tego adresu e-mail przed tym terminem.\n\n– Zespół {product_name}" }, - "account_disabled_suspicious": { - "subject": "Twoje konto {product_name} zostało tymczasowo wyłączone", - "body": "Witaj {username},\n\nTymczasowo wyłączyliśmy Twoje konto {product_name}, ponieważ wykryliśmy podejrzaną aktywność.\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nAby odzyskać dostęp do konta, musisz zresetować hasło:\n\n{forgotUrl}\n\nPo zresetowaniu hasła możesz ponownie się zalogować.\n\nJeśli uważasz, że to błąd, skontaktuj się z naszym zespołem wsparcia.\n\n– Zespół ds. bezpieczeństwa {product_name}" - }, "account_scheduled_deletion": { "subject": "Twoje konto {product_name} zostanie trwale usunięte", "body": "Witaj {username},\n\nZaplanowaliśmy trwałe usunięcie Twojego konta {product_name} z powodu naruszenia naszych warunków korzystania z usługi lub zasad społeczności.\n\nZaplanowane usunięcie: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Powód: {reason}}\n}\n\nJest to poważna sankcja. Dane Twojego konta zostaną usunięte na stałe w zaplanowanym terminie.\n\nSprawdź:\n- Warunki korzystania z usługi: {termsUrl}\n- Zasady społeczności: {guidelinesUrl}\n\nProces odwoławczy:\nJeśli uważasz, że ta decyzja była błędna lub nieuzasadniona, masz 60 dni na złożenie odwołania. Wyślij e-mail na adres {appeals_email} z tego adresu e-mail.\n\nW swoim odwołaniu:\n- Wyjaśnij jasno, dlaczego uważasz, że decyzja była błędna lub nieuzasadniona\n- Przedstaw wszelkie istotne dowody lub kontekst\n\nCzłonek zespołu ds. bezpieczeństwa {product_name} rozpatrzy Twoje odwołanie i może wstrzymać usunięcie do czasu podjęcia ostatecznej decyzji.\n\n– Zespół ds. bezpieczeństwa {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Twój adres e-mail w {product_name} został zmieniony", - "body": "Witaj {username},\n\nAdres e-mail przypisany do Twojego konta {product_name} został zmieniony na {newEmail}.\n\nJeśli ta zmiana została dokonana przez Ciebie, nie musisz nic robić. Jeśli nie, możesz cofnąć zmianę i zabezpieczyć swoje konto, korzystając z tego linku:\n\n{revertUrl}\n\nSpowoduje to przywrócenie poprzedniego adresu e-mail, wylogowanie ze wszystkich urządzeń, usunięcie powiązanych numerów telefonów, wyłączenie MFA i konieczność ustawienia nowego hasła.\n\n– Zespół ds. bezpieczeństwa {product_name}" + "body": "Witaj {username},\n\nAdres e-mail przypisany do Twojego konta {product_name} został zmieniony na {newEmail}.\n\nJeśli ta zmiana została dokonana przez Ciebie, nie musisz nic robić. Jeśli nie, możesz cofnąć zmianę i zabezpieczyć swoje konto, korzystając z tego linku:\n\n{revertUrl}\n\nSpowoduje to przywrócenie poprzedniego adresu e-mail, wylogowanie ze wszystkich urządzeń, wyłączenie MFA i konieczność ustawienia nowego hasła.\n\n– Zespół ds. bezpieczeństwa {product_name}" }, "email_verification": { "subject": "Zweryfikuj adres e-mail w {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/pt-BR.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/pt-BR.json index 637dcee59..bfe148ed8 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/pt-BR.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/pt-BR.json @@ -11,10 +11,6 @@ "subject": "A exclusão da sua conta do {product_name} está agendada", "body": "Olá, {username},\n\nConforme solicitado, sua conta do {product_name} está agendada para exclusão permanente em:\n\n{deletionDate, date, full} às {deletionDate, time, short}{reason, select, null {} other {\n\nMotivo: {reason}}}\n\nSua conta permanecerá bloqueada até lá. Se você não solicitou isso, ou se quiser manter sua conta, entre em contato com {safety_email} usando este endereço de e-mail antes dessa data.\n\n– Equipe do {product_name}" }, - "account_disabled_suspicious": { - "subject": "Sua conta do {product_name} foi desativada temporariamente", - "body": "Olá, {username},\n\nDesativamos temporariamente sua conta do {product_name} porque detectamos atividades suspeitas.\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nPara acessar sua conta novamente, você precisará redefinir sua senha:\n\n{forgotUrl}\n\nDepois de redefinir sua senha, você poderá entrar novamente.\n\nSe você acredita que isso foi um erro, entre em contato com nossa equipe de suporte.\n\n– equipe de segurança do {product_name}" - }, "account_scheduled_deletion": { "subject": "Sua conta do {product_name} será excluída permanentemente", "body": "Olá, {username},\n\nA exclusão permanente da sua conta do {product_name} foi agendada devido a violações de nossos Termos de serviço ou Diretrizes da comunidade.\n\nExclusão agendada: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motivo: {reason}}\n}\n\nEsta é uma medida séria. Os dados da sua conta serão excluídos permanentemente na data agendada.\n\nPor favor, revise:\n- Termos de serviço: {termsUrl}\n- Diretrizes da comunidade: {guidelinesUrl}\n\nProcesso de recurso:\nSe você acredita que esta decisão foi incorreta ou injustificada, você tem 60 dias para enviar um recurso. Envie um e-mail para {appeals_email} a partir deste endereço de e-mail.\n\nEm seu recurso:\n- Explique claramente por que você acredita que a decisão foi incorreta ou injustificada\n- Forneça quaisquer evidências ou contexto relevantes\n\nUm membro da equipe de segurança do {product_name} revisará seu recurso e poderá pausar a exclusão pendente até que uma decisão final seja tomada.\n\n– equipe de segurança do {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "O e-mail da sua conta do {product_name} foi alterado", - "body": "Olá, {username},\n\nO endereço de e-mail da sua conta do {product_name} foi alterado para {newEmail}.\n\nSe você fez essa alteração, nenhuma ação é necessária. Se você não fez, pode reverter a alteração e proteger sua conta usando este link:\n\n{revertUrl}\n\nIsso restaurará seu e-mail anterior, encerrará todas as suas sessões, removerá números de telefone vinculados, desativará a autenticação multifator (MFA) e exigirá que você defina uma nova senha.\n\n– equipe de segurança do {product_name}" + "body": "Olá, {username},\n\nO endereço de e-mail da sua conta do {product_name} foi alterado para {newEmail}.\n\nSe você fez essa alteração, nenhuma ação é necessária. Se você não fez, pode reverter a alteração e proteger sua conta usando este link:\n\n{revertUrl}\n\nIsso restaurará seu e-mail anterior, encerrará todas as suas sessões, desativará a autenticação multifator (MFA) e exigirá que você defina uma nova senha.\n\n– equipe de segurança do {product_name}" }, "email_verification": { "subject": "Verifique o endereço de e-mail da sua conta do {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ro.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ro.json index 620bdf40f..736dbf4d3 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ro.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ro.json @@ -11,10 +11,6 @@ "subject": "Ștergerea contului {product_name} a fost programată", "body": "Salut {username},\n\nConform solicitării tale, contul tău {product_name} este programat pentru ștergere permanentă la:\n\n{deletionDate, date, full} la ora {deletionDate, time, short}{reason, select, null {} other {\n\nMotiv: {reason}}}\n\nPână atunci, contul tău este blocat. Dacă nu ai solicitat acest lucru sau vrei să îți păstrezi contul, scrie la {safety_email} de pe această adresă de e-mail înainte de această dată.\n\n– Echipa {product_name}" }, - "account_disabled_suspicious": { - "subject": "Contul tău {product_name} a fost dezactivat temporar", - "body": "Salut {username},\n\nAm dezactivat temporar contul tău {product_name} deoarece am detectat activitate suspectă.\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nPentru a recăpăta accesul la cont, va trebui să îți resetezi parola:\n\n{forgotUrl}\n\nDupă ce îți resetezi parola, te vei putea conecta din nou.\n\nDacă crezi că este o greșeală, te rugăm să contactezi asistența.\n\n– Echipa de siguranță {product_name}" - }, "account_scheduled_deletion": { "subject": "Contul tău {product_name} va fi șters permanent", "body": "Salut {username},\n\nContul tău {product_name} a fost programat pentru ștergere permanentă din cauza încălcării Termenilor și condițiilor sau a regulilor comunității.\n\nȘtergere programată: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Motiv: {reason}}\n}\n\nAceasta este o măsură disciplinară serioasă. Datele contului tău vor fi șterse permanent la data programată.\n\nTe rugăm să consulți:\n- Termeni și condiții: {termsUrl}\n- Regulile comunității: {guidelinesUrl}\n\nProcesul de contestare:\nDacă crezi că această decizie a fost incorectă sau nejustificată, ai la dispoziție 60 de zile pentru a depune o contestație. Trimite un e-mail la {appeals_email} de la această adresă.\n\nÎn contestația ta:\n- Explică clar de ce crezi că decizia a fost incorectă sau nejustificată\n- Adaugă orice dovadă sau context relevant\n\nUn membru al echipei de siguranță {product_name} va analiza contestația ta și poate suspenda ștergerea programată până la luarea unei decizii finale.\n\n– Echipa de siguranță {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Adresa de e-mail pentru {product_name} a fost schimbată", - "body": "Salut {username},\n\nAdresa de e-mail a contului tău {product_name} a fost schimbată în {newEmail}.\n\nDacă tu ai făcut această modificare, nu trebuie să faci nimic. Dacă nu ai făcut-o tu, poți anula modificarea și îți poți securiza contul folosind acest link:\n\n{revertUrl}\n\nAceasta va restabili adresa ta de e-mail anterioară, te va deconecta de pe toate dispozitivele, va elimina numerele de telefon asociate, va dezactiva MFA și îți va cere să setezi o parolă nouă.\n\n– Echipa de siguranță {product_name}" + "body": "Salut {username},\n\nAdresa de e-mail a contului tău {product_name} a fost schimbată în {newEmail}.\n\nDacă tu ai făcut această modificare, nu trebuie să faci nimic. Dacă nu ai făcut-o tu, poți anula modificarea și îți poți securiza contul folosind acest link:\n\n{revertUrl}\n\nAceasta va restabili adresa ta de e-mail anterioară, te va deconecta de pe toate dispozitivele, va dezactiva MFA și îți va cere să setezi o parolă nouă.\n\n– Echipa de siguranță {product_name}" }, "email_verification": { "subject": "Verifică-ți adresa de e-mail pentru {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ru.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ru.json index c07a7d7ef..122c2fadf 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ru.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/ru.json @@ -11,10 +11,6 @@ "subject": "Запланировано удаление твоего аккаунта {product_name}", "body": "Привет, {username},\n\nПо твоему запросу безвозвратное удаление аккаунта {product_name} запланировано на:\n\n{deletionDate, date, full} в {deletionDate, time, short}{reason, select, null {} other {\n\nПричина: {reason}}}\n\nДо этого момента твой аккаунт заблокирован. Если ты не запрашивал удаление или хочешь сохранить аккаунт, напиши на {safety_email} с этого адреса электронной почты до этой даты.\n\n– Команда {product_name}" }, - "account_disabled_suspicious": { - "subject": "Твой аккаунт {product_name} временно отключён", - "body": "Привет, {username},\n\nМы временно отключили твой аккаунт {product_name}, так как обнаружили подозрительную активность.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЧтобы восстановить доступ к аккаунту, тебе нужно сбросить пароль:\n\n{forgotUrl}\n\nПосле сброса пароля ты сможешь снова войти в аккаунт.\n\nЕсли ты считаешь, что это ошибка, пожалуйста, свяжись с нашей службой поддержки.\n\n– Команда безопасности {product_name}" - }, "account_scheduled_deletion": { "subject": "Твой аккаунт {product_name} будет безвозвратно удалён", "body": "Привет, {username},\n\nМы запланировали безвозвратное удаление твоего аккаунта {product_name} из-за нарушения наших Условий использования или Правил сообщества.\n\nЗапланированное удаление: {deletionDate, date, full} в {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЭто серьёзная мера. Данные твоего аккаунта будут безвозвратно удалены в запланированную дату.\n\nПожалуйста, ознакомься:\n- Условия использования: {termsUrl}\n- Правила сообщества: {guidelinesUrl}\n\nПроцесс апелляции:\nЕсли ты считаешь, что это решение было неверным или необоснованным, у тебя есть 60 дней, чтобы подать апелляцию. Отправь письмо на {appeals_email} с этого адреса электронной почты.\n\nВ своей апелляции:\n- Чётко объясни, почему ты считаешь, что решение было неверным или необоснованным\n- Предоставь любые соответствующие доказательства или контекст\n\nСотрудник команды безопасности {product_name} рассмотрит твою апелляцию и может приостановить запланированное удаление до принятия окончательного решения.\n\n– Команда безопасности {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Адрес электронной почты твоего аккаунта {product_name} был изменён", - "body": "Привет, {username},\n\nАдрес электронной почты твоего аккаунта {product_name} был изменён на {newEmail}.\n\nЕсли это изменение сделал ты, ничего делать не нужно. Если нет, ты можешь отменить его и защитить свой аккаунт по этой ссылке:\n\n{revertUrl}\n\nЭто восстановит твой предыдущий адрес электронной почты, завершит все активные сессии, удалит привязанные номера телефонов, отключит MFA и потребует задать новый пароль.\n\n– Команда безопасности {product_name}" + "body": "Привет, {username},\n\nАдрес электронной почты твоего аккаунта {product_name} был изменён на {newEmail}.\n\nЕсли это изменение сделал ты, ничего делать не нужно. Если нет, ты можешь отменить его и защитить свой аккаунт по этой ссылке:\n\n{revertUrl}\n\nЭто восстановит твой предыдущий адрес электронной почты, завершит все активные сессии, отключит MFA и потребует задать новый пароль.\n\n– Команда безопасности {product_name}" }, "email_verification": { "subject": "Подтверди адрес электронной почты для {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/sv-SE.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/sv-SE.json index 3a4242867..e4ebc8144 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/sv-SE.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/sv-SE.json @@ -11,10 +11,6 @@ "subject": "Raderingen av ditt {product_name}-konto är schemalagd", "body": "Hej {username},\n\nSom du har begärt är permanent radering av ditt {product_name}-konto planerad till följande tidpunkt:\n\n{deletionDate, date, full} kl. {deletionDate, time, short}{reason, select, null {} other {\n\nAnledning: {reason}}}\n\nDitt konto är låst fram till dess. Om du inte begärde detta, eller om du vill behålla ditt konto, kontakta {safety_email} från den här e-postadressen före det datumet.\n\n– {product_name}-teamet" }, - "account_disabled_suspicious": { - "subject": "Ditt {product_name}-konto har tillfälligt inaktiverats", - "body": "Hej {username},\n\nVi har tillfälligt inaktiverat ditt {product_name}-konto eftersom vi upptäckte misstänkt aktivitet.\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nFör att återfå åtkomst till ditt konto måste du återställa ditt lösenord:\n\n{forgotUrl}\n\nEfter att du har återställt ditt lösenord kan du logga in igen.\n\nOm du anser att detta har skett av misstag, kontakta vårt supportteam.\n\n– Säkerhetsteamet på {product_name}" - }, "account_scheduled_deletion": { "subject": "Ditt {product_name}-konto kommer att raderas permanent", "body": "Hej {username},\n\nDitt {product_name}-konto har schemalagts för permanent radering på grund av brott mot våra användarvillkor eller communityriktlinjer.\n\nSchemalagd radering: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Anledning: {reason}}\n}\n\nDetta är en allvarlig åtgärd. Dina kontodata kommer att raderas permanent på det schemalagda datumet.\n\nGranska:\n- Användarvillkor: {termsUrl}\n- Communityriktlinjer: {guidelinesUrl}\n\nÖverklagandeprocess:\nOm du anser att detta beslut var felaktigt eller obefogat har du 60 dagar på dig att överklaga. Mejla {appeals_email} från den här e-postadressen.\n\nI ditt överklagande:\n- Förklara tydligt varför du anser att beslutet var felaktigt eller obefogat\n- Bifoga relevanta bevis eller bakgrundsinformation\n\nEn medarbetare i säkerhetsteamet på {product_name} kommer att granska ditt överklagande och kan pausa den planerade raderingen tills ett slutgiltigt beslut har fattats.\n\n– Säkerhetsteamet på {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Din e-postadress på {product_name} har ändrats", - "body": "Hej {username},\n\nE-postadressen för ditt {product_name}-konto har ändrats till {newEmail}.\n\nOm du gjorde denna ändring behövs ingen åtgärd. Om du inte gjorde det kan du ångra ändringen och säkra ditt konto med denna länk:\n\n{revertUrl}\n\nDetta återställer din tidigare e-postadress, loggar ut dig överallt, tar bort kopplade telefonnummer, inaktiverar flerfaktorsautentisering (MFA) och kräver att du väljer ett nytt lösenord.\n\n– Säkerhetsteamet på {product_name}" + "body": "Hej {username},\n\nE-postadressen för ditt {product_name}-konto har ändrats till {newEmail}.\n\nOm du gjorde denna ändring behövs ingen åtgärd. Om du inte gjorde det kan du ångra ändringen och säkra ditt konto med denna länk:\n\n{revertUrl}\n\nDetta återställer din tidigare e-postadress, loggar ut dig överallt, inaktiverar flerfaktorsautentisering (MFA) och kräver att du väljer ett nytt lösenord.\n\n– Säkerhetsteamet på {product_name}" }, "email_verification": { "subject": "Verifiera din e-postadress på {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/th.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/th.json index bbe5ef8b0..631c7cacc 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/th.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/th.json @@ -11,10 +11,6 @@ "subject": "บัญชี {product_name} ของคุณถูกกำหนดให้ลบแล้ว", "body": "สวัสดี {username},\n\nตามที่คุณร้องขอ บัญชี {product_name} ของคุณถูกกำหนดให้ลบอย่างถาวรในวันที่:\n\n{deletionDate, date, full} เวลา {deletionDate, time, short}{reason, select, null {} other {\n\nเหตุผล: {reason}}}\n\nบัญชีของคุณจะถูกล็อกจนถึงวันนั้น หากคุณไม่ได้ร้องขอ หรือต้องการเก็บบัญชีไว้ โปรดติดต่อ {safety_email} จากที่อยู่อีเมลนี้ก่อนวันดังกล่าว\n\n– ทีม {product_name}" }, - "account_disabled_suspicious": { - "subject": "บัญชี {product_name} ของคุณถูกปิดใช้งานชั่วคราว", - "body": "สวัสดี {username},\n\nเราปิดใช้งานบัญชี {product_name} ของคุณชั่วคราว เนื่องจากเราตรวจพบกิจกรรมที่น่าสงสัย\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nหากต้องการเข้าถึงบัญชีอีกครั้ง ให้รีเซ็ตรหัสผ่าน:\n\n{forgotUrl}\n\nหลังจากรีเซ็ตรหัสผ่านแล้ว คุณจะสามารถเข้าสู่ระบบได้อีกครั้ง\n\nหากคุณเชื่อว่านี่เป็นข้อผิดพลาด โปรดติดต่อทีมสนับสนุนของเรา\n\n– ทีมความปลอดภัย {product_name}" - }, "account_scheduled_deletion": { "subject": "บัญชี {product_name} ของคุณจะถูกลบอย่างถาวร", "body": "สวัสดี {username},\n\nบัญชี {product_name} ของคุณถูกกำหนดให้ลบอย่างถาวรเนื่องจากละเมิดข้อกำหนดในการให้บริการหรือแนวทางปฏิบัติของคอมมูนิตี้ของเรา\n\nกำหนดการลบ: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {เหตุผล: {reason}}\n}\n\nนี่เป็นการดำเนินการบังคับใช้ที่ร้ายแรง ข้อมูลบัญชีของคุณจะถูกลบอย่างถาวรตามวันที่กำหนด\n\nโปรดตรวจสอบ:\n- ข้อกำหนดในการให้บริการ: {termsUrl}\n- แนวทางปฏิบัติของคอมมูนิตี้: {guidelinesUrl}\n\nกระบวนการอุทธรณ์:\nหากคุณเชื่อว่าการตัดสินใจนี้ไม่ถูกต้องหรือไม่ยุติธรรม คุณมีเวลา 60 วันในการยื่นอุทธรณ์ ส่งอีเมลไปที่ {appeals_email} จากที่อยู่อีเมลนี้\n\nในการอุทธรณ์ของคุณ:\n- อธิบายให้ชัดเจนว่าทำไมคุณถึงเชื่อว่าการตัดสินใจนั้นไม่ถูกต้องหรือไม่ยุติธรรม\n- แนบหลักฐานหรือบริบทที่เกี่ยวข้อง\n\nสมาชิกของทีมความปลอดภัย {product_name} จะตรวจสอบคำอุทธรณ์ของคุณและอาจระงับการลบที่รอดำเนินการไว้จนกว่าจะมีการตัดสินใจขั้นสุดท้าย\n\n– ทีมความปลอดภัย {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "อีเมลบัญชี {product_name} ของคุณถูกเปลี่ยนแล้ว", - "body": "สวัสดี {username},\n\nที่อยู่อีเมลในบัญชี {product_name} ของคุณถูกเปลี่ยนเป็น {newEmail}\n\nหากคุณทำการเปลี่ยนแปลงนี้ ไม่ต้องดำเนินการใด ๆ หากคุณไม่ได้เปลี่ยน คุณสามารถย้อนกลับการเปลี่ยนแปลงและรักษาความปลอดภัยบัญชีของคุณโดยใช้ลิงก์นี้:\n\n{revertUrl}\n\nซึ่งจะกู้คืนอีเมลก่อนหน้าของคุณ นำคุณออกจากระบบในทุกอุปกรณ์ ลบหมายเลขโทรศัพท์ที่เชื่อมโยง ปิดใช้งาน MFA และกำหนดให้คุณต้องตั้งรหัสผ่านใหม่\n\n– ทีมความปลอดภัย {product_name}" + "body": "สวัสดี {username},\n\nที่อยู่อีเมลในบัญชี {product_name} ของคุณถูกเปลี่ยนเป็น {newEmail}\n\nหากคุณทำการเปลี่ยนแปลงนี้ ไม่ต้องดำเนินการใด ๆ หากคุณไม่ได้เปลี่ยน คุณสามารถย้อนกลับการเปลี่ยนแปลงและรักษาความปลอดภัยบัญชีของคุณโดยใช้ลิงก์นี้:\n\n{revertUrl}\n\nซึ่งจะกู้คืนอีเมลก่อนหน้าของคุณ นำคุณออกจากระบบในทุกอุปกรณ์ ปิดใช้งาน MFA และกำหนดให้คุณต้องตั้งรหัสผ่านใหม่\n\n– ทีมความปลอดภัย {product_name}" }, "email_verification": { "subject": "ยืนยันที่อยู่อีเมลสำหรับ {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/tr.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/tr.json index ea72c0a5a..1c22007d2 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/tr.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/tr.json @@ -11,10 +11,6 @@ "subject": "{product_name} hesabının silinmesi planlandı", "body": "Merhaba {username},\n\nTalebin doğrultusunda {product_name} hesabın şu tarihte kalıcı olarak silinmek üzere planlandı:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\nSebep: {reason}}}\n\nHesabın o zamana kadar kilitli. Bunu sen talep etmediysen ya da hesabını korumak istiyorsan bu tarihten önce bu e-posta adresinden {safety_email} adresine ulaş.\n\n– {product_name} Ekibi" }, - "account_disabled_suspicious": { - "subject": "{product_name} hesabın geçici olarak devre dışı bırakıldı", - "body": "Merhaba {username},\n\nŞüpheli etkinlik tespit ettiğimiz için {product_name} hesabını geçici olarak devre dışı bıraktık.\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nHesabına tekrar erişmek için şifreni sıfırlaman gerekiyor:\n\n{forgotUrl}\n\nŞifreni sıfırladıktan sonra tekrar giriş yapabilirsin.\n\nBunun bir hata olduğunu düşünüyorsan, lütfen destek ekibimizle iletişime geç.\n\n– {product_name} Güvenlik Ekibi" - }, "account_scheduled_deletion": { "subject": "{product_name} hesabın kalıcı olarak silinecek", "body": "Merhaba {username},\n\nHizmet Şartlarımızı veya Topluluk Kurallarımızı ihlal ettiğin için {product_name} hesabın kalıcı olarak silinmek üzere planlandı.\n\nPlanlanan silme tarihi: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Sebep: {reason}}\n}\n\nBu, ciddi bir yaptırım işlemidir. Hesap verilerin planlanan tarihte kalıcı olarak silinecektir.\n\nLütfen şunları incele:\n- Hizmet Şartları: {termsUrl}\n- Topluluk Kuralları: {guidelinesUrl}\n\nİtiraz süreci:\nBu yaptırım kararının yanlış veya haksız olduğuna inanıyorsan, itiraz göndermek için 60 günün var. Bu e-posta adresinden {appeals_email} adresine e-posta gönder.\n\nİtirazında:\n- Yaptırım kararının neden yanlış veya haksız olduğunu düşündüğünü açıkça anlat\n- İlgili kanıtı veya bağlamı paylaş\n\n{product_name} Güvenlik Ekibinden bir üye itirazını inceleyecek ve nihai karar verilene kadar bekleyen silme işlemini duraklatabilir.\n\n– {product_name} Güvenlik Ekibi" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "{product_name} e-posta adresin değiştirildi", - "body": "Merhaba {username},\n\n{product_name} hesabındaki e-posta adresi {newEmail} olarak değiştirildi.\n\nBu değişikliği sen yaptıysan, herhangi bir işlem yapmana gerek yok. Yapmadıysan, bu bağlantıyı kullanarak değişikliği geri alabilir ve hesabını güvence altına alabilirsin:\n\n{revertUrl}\n\nBu işlem önceki e-posta adresini geri yükleyecek, tüm cihazlardaki oturumlarını kapatacak, bağlı telefon numaralarını kaldıracak, MFA'yı devre dışı bırakacak ve yeni bir şifre belirlemeni gerektirecek.\n\n– {product_name} Güvenlik Ekibi" + "body": "Merhaba {username},\n\n{product_name} hesabındaki e-posta adresi {newEmail} olarak değiştirildi.\n\nBu değişikliği sen yaptıysan, herhangi bir işlem yapmana gerek yok. Yapmadıysan, bu bağlantıyı kullanarak değişikliği geri alabilir ve hesabını güvence altına alabilirsin:\n\n{revertUrl}\n\nBu işlem önceki e-posta adresini geri yükleyecek, tüm cihazlardaki oturumlarını kapatacak, MFA'yı devre dışı bırakacak ve yeni bir şifre belirlemeni gerektirecek.\n\n– {product_name} Güvenlik Ekibi" }, "email_verification": { "subject": "{product_name} e-posta adresini doğrula", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/uk.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/uk.json index cfa69326b..a07539cfc 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/uk.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/uk.json @@ -11,10 +11,6 @@ "subject": "Видалення акаунта {product_name} заплановано", "body": "Привіт, {username},\n\nНа твій запит остаточне видалення акаунта {product_name} заплановано на:\n\n{deletionDate, date, full} о {deletionDate, time, short}{reason, select, null {} other {\n\nПричина: {reason}}}\n\nДо того часу твій акаунт заблоковано. Якщо цей запит не від тебе або ти хочеш зберегти акаунт, напиши на {safety_email} з цієї електронної адреси до цієї дати.\n\n– Команда {product_name}" }, - "account_disabled_suspicious": { - "subject": "Твій акаунт {product_name} тимчасово деактивовано", - "body": "Привіт, {username},\n\nМи тимчасово деактивували твій акаунт {product_name}, оскільки виявили підозрілу активність.\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЩоб відновити доступ до акаунта, тобі потрібно скинути пароль:\n\n{forgotUrl}\n\nПісля скидання пароля ти зможеш знову увійти.\n\nЯкщо ти вважаєш, що це помилка, будь ласка, зв'яжися з нашою службою підтримки.\n\n– Команда безпеки {product_name}" - }, "account_scheduled_deletion": { "subject": "Твій акаунт {product_name} буде остаточно видалено", "body": "Привіт, {username},\n\nМи запланували остаточне видалення твого акаунта {product_name} через порушення наших Умов використання або Правил спільноти.\n\nВидалення заплановано на: {deletionDate, date, full} о {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Причина: {reason}}\n}\n\nЦе серйозне рішення. Дані твого акаунта буде остаточно видалено у заплановану дату.\n\nБудь ласка, переглянь:\n- Умови використання: {termsUrl}\n- Правила спільноти: {guidelinesUrl}\n\nПроцес апеляції:\nЯкщо ти вважаєш, що це рішення було неправильним або необґрунтованим, у тебе є 60 днів, щоб подати апеляцію. Надішли електронний лист на {appeals_email} з цієї електронної адреси.\n\nУ твоїй апеляції:\n- Чітко поясни, чому ти вважаєш, що рішення було неправильним або необґрунтованим\n- Надай будь-які відповідні докази або контекст\n\nКоманда безпеки {product_name} розгляне твою апеляцію та може призупинити видалення до ухвалення остаточного рішення.\n\n– Команда безпеки {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Електронну адресу твого акаунта {product_name} змінено", - "body": "Привіт, {username},\n\nЕлектронну адресу твого акаунта {product_name} змінено на {newEmail}.\n\nЯкщо ти знаєш про цю зміну, робити нічого не потрібно. Якщо ні, ти можеш скасувати зміну та захистити свій акаунт за цим посиланням:\n\n{revertUrl}\n\nЦе відновить твою попередню електронну адресу, завершить усі сесії, видалить пов'язані номери телефонів, вимкне MFA та вимагатиме встановити новий пароль.\n\n– Команда безпеки {product_name}" + "body": "Привіт, {username},\n\nЕлектронну адресу твого акаунта {product_name} змінено на {newEmail}.\n\nЯкщо ти знаєш про цю зміну, робити нічого не потрібно. Якщо ні, ти можеш скасувати зміну та захистити свій акаунт за цим посиланням:\n\n{revertUrl}\n\nЦе відновить твою попередню електронну адресу, завершить усі сесії, вимкне MFA та вимагатиме встановити новий пароль.\n\n– Команда безпеки {product_name}" }, "email_verification": { "subject": "Підтвердь свою електронну адресу для {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/vi.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/vi.json index 6f927b579..68610c13b 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/vi.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/vi.json @@ -11,10 +11,6 @@ "subject": "Tài khoản {product_name} của bạn đã được lên lịch xóa", "body": "Xin chào {username},\n\nTheo yêu cầu của bạn, tài khoản {product_name} của bạn được lên lịch xóa vĩnh viễn vào:\n\n{deletionDate, date, full} lúc {deletionDate, time, short}{reason, select, null {} other {\n\nLý do: {reason}}}\n\nTài khoản của bạn sẽ bị khóa cho đến lúc đó. Nếu bạn không yêu cầu điều này, hoặc bạn muốn giữ tài khoản, hãy liên hệ {safety_email} từ địa chỉ email này trước ngày đó.\n\n– Đội ngũ {product_name}" }, - "account_disabled_suspicious": { - "subject": "Tài khoản {product_name} của bạn đã bị tạm thời vô hiệu hóa", - "body": "Xin chào {username},\n\nChúng tôi đã tạm thời vô hiệu hóa tài khoản {product_name} của bạn vì phát hiện hoạt động đáng ngờ.\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nĐể truy cập lại tài khoản, bạn cần đặt lại mật khẩu:\n\n{forgotUrl}\n\nSau khi đặt lại mật khẩu, bạn sẽ có thể đăng nhập lại.\n\nNếu bạn cho rằng đây là nhầm lẫn, vui lòng liên hệ đội ngũ hỗ trợ của chúng tôi.\n\n– Đội ngũ An toàn {product_name}" - }, "account_scheduled_deletion": { "subject": "Tài khoản {product_name} của bạn sẽ bị xóa vĩnh viễn", "body": "Xin chào {username},\n\nTài khoản {product_name} của bạn đã được lên lịch xóa vĩnh viễn do vi phạm Điều khoản dịch vụ hoặc Nguyên tắc cộng đồng của chúng tôi.\n\nThời gian xóa theo lịch: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Lý do: {reason}}\n}\n\nĐây là một biện pháp xử lý nghiêm trọng. Dữ liệu tài khoản của bạn sẽ bị xóa vĩnh viễn vào ngày đã lên lịch.\n\nVui lòng xem lại:\n- Điều khoản dịch vụ: {termsUrl}\n- Nguyên tắc cộng đồng: {guidelinesUrl}\n\nQuy trình khiếu nại:\nNếu bạn cho rằng quyết định này không chính xác hoặc không hợp lý, bạn có 60 ngày để gửi khiếu nại. Gửi email đến {appeals_email} từ địa chỉ email này.\n\nTrong khiếu nại của bạn:\n- Giải thích rõ ràng lý do bạn cho rằng quyết định này không chính xác hoặc không hợp lý\n- Cung cấp bằng chứng hoặc thông tin liên quan nếu có\n\nMột thành viên của Đội ngũ An toàn {product_name} sẽ xem xét khiếu nại của bạn và có thể tạm dừng việc xóa đang chờ xử lý cho đến khi có quyết định cuối cùng.\n\n– Đội ngũ An toàn {product_name}" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Email của bạn trên {product_name} đã được thay đổi", - "body": "Xin chào {username},\n\nĐịa chỉ email trên tài khoản {product_name} của bạn đã được thay đổi thành {newEmail}.\n\nNếu bạn đã thực hiện thay đổi này, bạn không cần thực hiện hành động nào. Nếu không, bạn có thể hoàn tác thay đổi và bảo mật tài khoản của mình bằng cách sử dụng liên kết này:\n\n{revertUrl}\n\nThao tác này sẽ khôi phục email trước đó của bạn, đăng xuất khỏi tất cả thiết bị, xóa số điện thoại đã liên kết, tắt MFA và yêu cầu bạn đặt mật khẩu mới.\n\n– Đội ngũ An toàn {product_name}" + "body": "Xin chào {username},\n\nĐịa chỉ email trên tài khoản {product_name} của bạn đã được thay đổi thành {newEmail}.\n\nNếu bạn đã thực hiện thay đổi này, bạn không cần thực hiện hành động nào. Nếu không, bạn có thể hoàn tác thay đổi và bảo mật tài khoản của mình bằng cách sử dụng liên kết này:\n\n{revertUrl}\n\nThao tác này sẽ khôi phục email trước đó của bạn, đăng xuất khỏi tất cả thiết bị, tắt MFA và yêu cầu bạn đặt mật khẩu mới.\n\n– Đội ngũ An toàn {product_name}" }, "email_verification": { "subject": "Xác minh địa chỉ email của bạn trên {product_name}", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/zh-CN.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/zh-CN.json index 9cccb6dc1..28f6cd39c 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/zh-CN.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/zh-CN.json @@ -11,10 +11,6 @@ "subject": "你的 {product_name} 账号已安排删除", "body": "你好 {username},\n\n根据你的请求,你的 {product_name} 账号将于以下时间永久删除:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\n原因:{reason}}}\n\n在此之前,你的账号将被锁定。如果你未请求此操作,或者想保留账号,请在该日期前使用此邮箱地址联系 {safety_email}。\n\n– {product_name} 团队" }, - "account_disabled_suspicious": { - "subject": "你的 {product_name} 账号已被暂时禁用", - "body": "你好 {username},\n\n我们检测到你的 {product_name} 账号存在可疑活动,因此暂时禁用了你的账号。\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n要重新访问你的账号,你需要重置密码:\n\n{forgotUrl}\n\n重置密码后,你将能够再次登录。\n\n如果你认为这是误判,请联系我们的支持团队。\n\n– {product_name} 安全团队" - }, "account_scheduled_deletion": { "subject": "你的 {product_name} 账号将被永久删除", "body": "你好 {username},\n\n由于违反了我们的《服务条款》或《社区准则》,你的 {product_name} 账号已被安排永久删除。\n\n计划删除时间:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n这是一项严重的处罚措施。你的账号数据将在预定日期被永久删除。\n\n请查阅:\n- 服务条款:{termsUrl}\n- 社区准则:{guidelinesUrl}\n\n申诉流程:\n如果你认为此处罚决定不正确或不合理,你有 60 天时间提交申诉。请使用此邮箱地址发送邮件至 {appeals_email}。\n\n在你的申诉中:\n- 清楚说明你认为处罚决定不正确或不合理的原因\n- 提供任何相关证据或背景信息\n\n{product_name} 安全团队成员将审核你的申诉,并可能在做出最终决定前暂停此次删除。\n\n– {product_name} 安全团队" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "你的 {product_name} 邮箱已变更", - "body": "你好 {username},\n\n你的 {product_name} 账号邮箱已变更为 {newEmail}。\n\n如果你进行了此更改,则无需采取任何操作。如果不是你本人操作,请使用此链接撤销更改并保护账号安全:\n\n{revertUrl}\n\n这将恢复你之前的邮箱,让你在所有设备上退出登录,移除关联的手机号,禁用 MFA,并要求你设置新密码。\n\n– {product_name} 安全团队" + "body": "你好 {username},\n\n你的 {product_name} 账号邮箱已变更为 {newEmail}。\n\n如果你进行了此更改,则无需采取任何操作。如果不是你本人操作,请使用此链接撤销更改并保护账号安全:\n\n{revertUrl}\n\n这将恢复你之前的邮箱,让你在所有设备上退出登录,禁用 MFA,并要求你设置新密码。\n\n– {product_name} 安全团队" }, "email_verification": { "subject": "验证你的 {product_name} 邮箱地址", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/zh-TW.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/zh-TW.json index 1a73ee09a..9a46f4b96 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/zh-TW.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/locales/zh-TW.json @@ -11,10 +11,6 @@ "subject": "您的 {product_name} 帳號已排定刪除", "body": "哈囉 {username},\n\n依照您的要求,您的 {product_name} 帳號已排定於以下時間永久刪除:\n\n{deletionDate, date, full} {deletionDate, time, short}{reason, select, null {} other {\n\n原因:{reason}}}\n\n在此之前,您的帳號將被鎖定。如果您沒有提出此要求,或想保留帳號,請在該日期前使用此電子郵件地址聯絡 {safety_email}。\n\n– {product_name} 團隊" }, - "account_disabled_suspicious": { - "subject": "您的 {product_name} 帳號已暫時停用", - "body": "哈囉 {username},\n\n我們偵測到您的 {product_name} 帳號有可疑活動,因此已暫時停用您的帳號。\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n若要重新取得帳號存取權,您需要重設密碼:\n\n{forgotUrl}\n\n重設密碼後,您將可以再次登入。\n\n如果您認為這是誤判,請聯絡我們的支援團隊。\n\n– {product_name} 安全團隊" - }, "account_scheduled_deletion": { "subject": "您的 {product_name} 帳號將被永久刪除", "body": "哈囉 {username},\n\n由於您違反了我們的服務條款或社群準則,您的 {product_name} 帳號已排定永久刪除。\n\n排定刪除時間:{deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {原因:{reason}}\n}\n\n這是一項嚴重的處分。您的帳號資料將在排定日期永久刪除。\n\n請參閱:\n- 服務條款:{termsUrl}\n- 社群準則:{guidelinesUrl}\n\n申訴流程:\n如果您認為此處分不正確或不合理,您有 60 天的時間可以提交申訴。請使用此電子郵件地址寄信至 {appeals_email}。\n\n在您的申訴中:\n- 請清楚說明您認為此處分不正確或不合理的原因\n- 提供任何相關證據或背景資訊\n\n{product_name} 安全團隊的成員將會審查您的申訴,並可能在做出最終決定前暫停這項刪除。\n\n– {product_name} 安全團隊" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "您的 {product_name} 電子郵件已變更", - "body": "哈囉 {username},\n\n您的 {product_name} 帳號電子郵件地址已變更為 {newEmail}。\n\n如果您進行了此變更,則無需採取任何行動。如果您沒有進行此變更,可以使用此連結還原變更並保護您的帳號安全:\n\n{revertUrl}\n\n這將會還原您先前的電子郵件、將您從所有裝置登出、移除連結的電話號碼、停用多重要素驗證,並要求您設定新密碼。\n\n– {product_name} 安全團隊" + "body": "哈囉 {username},\n\n您的 {product_name} 帳號電子郵件地址已變更為 {newEmail}。\n\n如果您進行了此變更,則無需採取任何行動。如果您沒有進行此變更,可以使用此連結還原變更並保護您的帳號安全:\n\n{revertUrl}\n\n這將會還原您先前的電子郵件、將您從所有裝置登出、停用多重要素驗證,並要求您設定新密碼。\n\n– {product_name} 安全團隊" }, "email_verification": { "subject": "驗證您的 {product_name} 電子郵件地址", diff --git a/fluxer_api/pkgs/email/src/email_i18n/weblate/messages.json b/fluxer_api/pkgs/email/src/email_i18n/weblate/messages.json index 13c0215ae..8bb2d2853 100644 --- a/fluxer_api/pkgs/email/src/email_i18n/weblate/messages.json +++ b/fluxer_api/pkgs/email/src/email_i18n/weblate/messages.json @@ -11,10 +11,6 @@ "subject": "Your {product_name} account deletion is scheduled", "body": "Hello {username},\n\nAs you requested, your {product_name} account is scheduled for permanent deletion on:\n\n{deletionDate, date, full} at {deletionDate, time, short}{reason, select, null {} other {\n\nReason: {reason}}}\n\nYour account is locked until then. If you didn't request this, or you want to keep your account, contact {safety_email} from this email address before that date.\n\n– {product_name} Team" }, - "account_disabled_suspicious": { - "subject": "Your {product_name} account has been temporarily disabled", - "body": "Hello {username},\n\nWe temporarily disabled your {product_name} account because we detected suspicious activity.\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nTo regain access to your account, you'll need to reset your password:\n\n{forgotUrl}\n\nAfter you reset your password, you'll be able to log in again.\n\nIf you believe this was done in error, please contact our support team.\n\n– {product_name} Safety Team" - }, "account_scheduled_deletion": { "subject": "Your {product_name} account will be permanently deleted", "body": "Hello {username},\n\nYour {product_name} account has been scheduled for permanent deletion due to violations of our Terms of Service or Community Guidelines.\n\nScheduled deletion: {deletionDate, date, full} {deletionDate, time, short}\n\n{reason, select,\n null {}\n other {Reason: {reason}}\n}\n\nThis is a serious enforcement action. Your account data will be permanently deleted on the scheduled date.\n\nPlease review:\n- Terms of Service: {termsUrl}\n- Community Guidelines: {guidelinesUrl}\n\nAppeals process:\nIf you believe this enforcement decision was incorrect or unjustified, you have 60 days to submit an appeal. Email {appeals_email} from this email address.\n\nIn your appeal:\n- Clearly explain why you believe the enforcement decision was incorrect or unjustified\n- Provide any relevant evidence or context\n\nA member of the {product_name} Safety Team will review your appeal and may pause the pending deletion until a final decision has been reached.\n\n– {product_name} Safety Team" @@ -45,7 +41,7 @@ }, "email_change_revert": { "subject": "Your {product_name} email was changed", - "body": "Hello {username},\n\nThe email address on your {product_name} account was changed to {newEmail}.\n\nIf you made this change, no action is needed. If you didn't, you can revert the change and secure your account using this link:\n\n{revertUrl}\n\nThis will restore your previous email, sign you out everywhere, remove linked phone numbers, disable MFA, and require you to set a new password.\n\n– {product_name} Safety Team" + "body": "Hello {username},\n\nThe email address on your {product_name} account was changed to {newEmail}.\n\nIf you made this change, no action is needed. If you didn't, you can revert the change and secure your account using this link:\n\n{revertUrl}\n\nThis will restore your previous email, sign you out everywhere, disable MFA, and require you to set a new password.\n\n– {product_name} Safety Team" }, "email_verification": { "subject": "Verify your {product_name} email address", diff --git a/fluxer_api/src/api/Config.test.ts b/fluxer_api/src/api/Config.test.ts index 049a47cd1..a36b44104 100644 --- a/fluxer_api/src/api/Config.test.ts +++ b/fluxer_api/src/api/Config.test.ts @@ -211,41 +211,3 @@ describe('buildAPIConfigFromMaster optional outbound lookups', () => { expect(config.breachedPasswordCheck.enabled).toBe(false); }); }); - -function withPhoneVerification(master: MasterConfig, selfHosted: boolean, enabled?: boolean): MasterConfig { - return { - ...master, - instance: { - ...master.instance, - self_hosted: selfHosted, - phone_verification_enabled: enabled, - }, - }; -} - -describe('buildAPIConfigFromMaster phone verification', () => { - let master: MasterConfig; - beforeAll(async () => { - master = await loadConfig(); - }); - - it('is on by default when the instance is not self-hosted', () => { - expect(buildAPIConfigFromMaster(withPhoneVerification(master, false)).instance.phoneVerificationEnabled).toBe(true); - }); - - it('is off by default on a self-hosted instance', () => { - expect(buildAPIConfigFromMaster(withPhoneVerification(master, true)).instance.phoneVerificationEnabled).toBe(false); - }); - - it('lets a self-hosted operator switch it on', () => { - expect(buildAPIConfigFromMaster(withPhoneVerification(master, true, true)).instance.phoneVerificationEnabled).toBe( - true, - ); - }); - - it('lets an operator switch it off when the instance is not self-hosted', () => { - expect( - buildAPIConfigFromMaster(withPhoneVerification(master, false, false)).instance.phoneVerificationEnabled, - ).toBe(false); - }); -}); diff --git a/fluxer_api/src/api/Config.ts b/fluxer_api/src/api/Config.ts index d8ed4a9aa..97ab5c51d 100644 --- a/fluxer_api/src/api/Config.ts +++ b/fluxer_api/src/api/Config.ts @@ -367,7 +367,6 @@ export function buildAPIConfigFromMaster(master: MasterConfig): APIConfig { }, instance: { selfHosted: master.instance.self_hosted, - phoneVerificationEnabled: master.instance.phone_verification_enabled ?? !master.instance.self_hosted, autoJoinInviteCode: master.instance.auto_join_invite_code, visionariesGuildId: master.instance.visionaries_guild_id, visionariesGuildVisionaryRoleId: master.instance.visionaries_guild_visionary_role_id, diff --git a/fluxer_api/src/api/admin/controllers/BulkAdminController.ts b/fluxer_api/src/api/admin/controllers/BulkAdminController.ts index 7c5d78897..c1f534e78 100644 --- a/fluxer_api/src/api/admin/controllers/BulkAdminController.ts +++ b/fluxer_api/src/api/admin/controllers/BulkAdminController.ts @@ -16,7 +16,6 @@ import {BulkJobResponse} from '@fluxer/schema/src/domains/admin/AdminSchemas'; const BULK_TASK_ACLS: Record = { [AdminBulkTaskType.UPDATE_USER_FLAGS]: AdminACLs.BULK_UPDATE_USER_FLAGS, - [AdminBulkTaskType.UPDATE_SUSPICIOUS_ACTIVITY_FLAGS]: AdminACLs.BULK_UPDATE_SUSPICIOUS_ACTIVITY, [AdminBulkTaskType.UPDATE_GUILD_FEATURES]: AdminACLs.BULK_UPDATE_GUILD_FEATURES, [AdminBulkTaskType.ADD_GUILD_MEMBERS]: AdminACLs.BULK_ADD_GUILD_MEMBERS, [AdminBulkTaskType.SCHEDULE_USER_DELETION]: AdminACLs.BULK_DELETE_USERS, @@ -43,18 +42,6 @@ async function queueBulkJob( }, options, ); - case AdminBulkTaskType.UPDATE_SUSPICIOUS_ACTIVITY_FLAGS: - return await workerService.addJob( - 'bulkUpdateSuspiciousActivityFlags', - { - user_ids: body.user_ids.map((id) => id.toString()), - add_flags: body.add_flags, - remove_flags: body.remove_flags, - admin_user_id: adminUserId.toString(), - audit_log_reason: auditLogReason, - }, - options, - ); case AdminBulkTaskType.UPDATE_GUILD_FEATURES: return await workerService.addJob( 'bulkUpdateGuildFeatures', @@ -112,7 +99,6 @@ export function BulkAdminController(app: HonoApp) { Validator('json', AdminBulkJobCreateRequest), requireAnyAdminACL([ AdminACLs.BULK_UPDATE_USER_FLAGS, - AdminACLs.BULK_UPDATE_SUSPICIOUS_ACTIVITY, AdminACLs.BULK_UPDATE_GUILD_FEATURES, AdminACLs.BULK_ADD_GUILD_MEMBERS, AdminACLs.BULK_DELETE_USERS, @@ -122,7 +108,7 @@ export function BulkAdminController(app: HonoApp) { operationId: 'create_admin_bulk_job', summary: 'Queue a bulk job', description: - 'Enqueue one background administrative job. The `task` discriminator selects both the body variant and the ACL evaluated for the request: `update_user_flags` needs bulk:update:user_flags, `update_suspicious_activity_flags` needs bulk:update:suspicious_activity, `update_guild_features` needs bulk:update:guild_features, `add_guild_members` needs bulk:add:guild_members, `schedule_user_deletion` needs bulk:delete:users, and `delete_user_messages` needs bulk:delete:user_messages. Returns a job_id immediately; observe progress at /admin/jobs/:job_id.', + 'Enqueue one background administrative job. The `task` discriminator selects both the body variant and the ACL evaluated for the request: `update_user_flags` needs bulk:update:user_flags, `update_guild_features` needs bulk:update:guild_features, `add_guild_members` needs bulk:add:guild_members, `schedule_user_deletion` needs bulk:delete:users, and `delete_user_messages` needs bulk:delete:user_messages. Returns a job_id immediately; observe progress at /admin/jobs/:job_id.', responseSchema: BulkJobResponse, statusCode: 200, security: 'adminApiKey', diff --git a/fluxer_api/src/api/admin/controllers/UserAdminController.ts b/fluxer_api/src/api/admin/controllers/UserAdminController.ts index 3b7206bb0..6106dfb28 100644 --- a/fluxer_api/src/api/admin/controllers/UserAdminController.ts +++ b/fluxer_api/src/api/admin/controllers/UserAdminController.ts @@ -31,12 +31,9 @@ import { AdminUserFlagsUpdateRequest, AdminUserGuildListQuery, AdminUserListQuery, - AdminUserPhoneVerificationRequest, AdminUserPremiumFlagsUpdateRequest, AdminUserRelationshipCategoryQuery, AdminUserRelationshipParam, - AdminUserSuspiciousActivityFlagsRequest, - AdminUserSuspiciousDisableRequest, AdminUserSystemStatusRequest, AdminUsersMeResponse, AdminUserTraitsRequest, @@ -1129,38 +1126,6 @@ export function UserAdminController(app: HonoApp) { ); }, ); - app.put( - '/admin/users/:user_id/phone-verification', - RateLimitMiddleware(RateLimitConfigs.ADMIN_USER_MODIFY), - requireAdminACL(AdminACLs.USER_UPDATE_PHONE), - Validator('param', UserIdParam), - Validator('json', AdminUserPhoneVerificationRequest), - OpenAPI({ - operationId: 'update_admin_user_phone_verification', - summary: 'Update user phone verification flag', - responseSchema: UserMutationResponse, - statusCode: 200, - security: 'adminApiKey', - tags: 'Admin', - description: - 'Set whether a user is treated as having completed phone verification. This is the only supported path for clearing the irreversible user-facing phone verification flag. Requires USER_UPDATE_PHONE permission.', - }), - async (ctx) => { - const adminService = ctx.get('adminService'); - const adminUserId = ctx.get('adminUserId'); - const auditLogReason = ctx.get('auditLogReason'); - const adminUserAcls = ctx.get('adminUserAcls'); - const {user_id: userId} = ctx.req.valid('param'); - return ctx.json( - await adminService.userService.securityService.updateHasVerifiedPhone( - {user_id: userId, ...ctx.req.valid('json')}, - adminUserId, - auditLogReason, - adminUserAcls, - ), - ); - }, - ); app.patch( '/admin/users/:user_id/date-of-birth', RateLimitMiddleware(RateLimitConfigs.ADMIN_USER_MODIFY), @@ -1193,68 +1158,4 @@ export function UserAdminController(app: HonoApp) { ); }, ); - app.put( - '/admin/users/:user_id/suspicious-activity-flags', - RateLimitMiddleware(RateLimitConfigs.ADMIN_USER_MODIFY), - requireAdminACL(AdminACLs.USER_UPDATE_SUSPICIOUS_ACTIVITY), - Validator('param', UserIdParam), - Validator('json', AdminUserSuspiciousActivityFlagsRequest), - OpenAPI({ - operationId: 'update_admin_user_suspicious_activity_flags', - summary: 'Update suspicious activity flags', - responseSchema: UserMutationResponse, - statusCode: 200, - security: 'adminApiKey', - tags: 'Admin', - description: - 'Flag user as suspicious for account abuse, fraud, or policy violations. Enables enforcement actions and rate limiting. Creates audit log entry. Requires USER_UPDATE_SUSPICIOUS_ACTIVITY permission.', - }), - async (ctx) => { - const adminService = ctx.get('adminService'); - const adminUserId = ctx.get('adminUserId'); - const auditLogReason = ctx.get('auditLogReason'); - const adminUserAcls = ctx.get('adminUserAcls'); - const {user_id: userId} = ctx.req.valid('param'); - return ctx.json( - await adminService.userService.securityService.updateSuspiciousActivityFlags( - {user_id: userId, ...ctx.req.valid('json')}, - adminUserId, - auditLogReason, - adminUserAcls, - ), - ); - }, - ); - app.put( - '/admin/users/:user_id/suspicious-activity-disablement', - RateLimitMiddleware(RateLimitConfigs.ADMIN_USER_MODIFY), - requireAdminACL(AdminACLs.USER_DISABLE_SUSPICIOUS), - Validator('param', UserIdParam), - Validator('json', AdminUserSuspiciousDisableRequest), - OpenAPI({ - operationId: 'disable_admin_user_suspicious', - summary: 'Disable user for suspicious activity', - responseSchema: UserMutationResponse, - statusCode: 200, - security: 'adminApiKey', - tags: 'Admin', - description: - 'Disable user account due to suspicious activity or abuse. Account is locked pending review. User cannot access services. Emails the user unless notify_user is false. Creates audit log entry. Requires USER_DISABLE_SUSPICIOUS permission.', - }), - async (ctx) => { - const adminService = ctx.get('adminService'); - const adminUserId = ctx.get('adminUserId'); - const auditLogReason = ctx.get('auditLogReason'); - const adminUserAcls = ctx.get('adminUserAcls'); - const {user_id: userId} = ctx.req.valid('param'); - return ctx.json( - await adminService.userService.securityService.disableForSuspiciousActivity( - {user_id: userId, ...ctx.req.valid('json')}, - adminUserId, - auditLogReason, - adminUserAcls, - ), - ); - }, - ); } diff --git a/fluxer_api/src/api/admin/models/UserTypes.ts b/fluxer_api/src/api/admin/models/UserTypes.ts index fca8b9fb6..2efe869a1 100644 --- a/fluxer_api/src/api/admin/models/UserTypes.ts +++ b/fluxer_api/src/api/admin/models/UserTypes.ts @@ -3,7 +3,6 @@ import type {User} from '@app/api/models/User'; import {getIpAddressReverse, lookupGeoip} from '@app/api/utils/IpUtils'; import {AdminACLs} from '@fluxer/constants/src/AdminACLs'; -import {DEFERRED_PHONE_ON_COMMUNITY_JOIN} from '@fluxer/constants/src/UserConstants'; import type {UserAdminResponse} from '@fluxer/schema/src/domains/admin/AdminUserSchemas'; import type {ICacheService} from '@pkgs/cache/src/ICacheService'; import {formatGeoipLocation} from '@pkgs/geoip/src/GeoipLookup'; @@ -50,7 +49,6 @@ export async function mapUserToAdminResponse( email: canViewEmail ? (user.email ?? null) : null, email_verified: canViewEmail ? user.emailVerified : false, email_bounced: canViewEmail ? user.emailBounced : false, - has_verified_phone: user.hasVerifiedPhone, date_of_birth: canViewDob ? user.dateOfBirth : null, locale: user.locale, premium_type: user.premiumType, @@ -58,8 +56,6 @@ export async function mapUserToAdminResponse( premium_until: user.premiumUntil?.toISOString() ?? null, premium_grace_ends_at: user.premiumGraceEndsAt?.toISOString() ?? null, premium_lifetime_sequence: user.premiumLifetimeSequence ?? null, - suspicious_activity_flags: user.suspiciousActivityFlags, - phone_verification_deferred: ((user.suspiciousActivityFlags ?? 0) & DEFERRED_PHONE_ON_COMMUNITY_JOIN) !== 0, temp_banned_until: user.tempBannedUntil && user.tempBannedUntil.getTime() > Date.now() ? user.tempBannedUntil.toISOString() : null, pending_deletion_at: user.pendingDeletionAt?.toISOString() ?? null, diff --git a/fluxer_api/src/api/admin/services/AdminUserBanService.ts b/fluxer_api/src/api/admin/services/AdminUserBanService.ts index 19fd2e749..bbf992366 100644 --- a/fluxer_api/src/api/admin/services/AdminUserBanService.ts +++ b/fluxer_api/src/api/admin/services/AdminUserBanService.ts @@ -49,14 +49,8 @@ export class AdminUserBanService { } else { tempBannedUntil.setHours(tempBannedUntil.getHours() + data.duration_hours); } - const updatedUser = await userRepository.patchUpsert( - userId, - { - temp_banned_until: tempBannedUntil, - flags: user.flags | UserFlags.DISABLED, - }, - user.toRow(), - ); + const bannedUser = await userRepository.patchUpsert(userId, {temp_banned_until: tempBannedUntil}, user.toRow()); + const updatedUser = (await userRepository.updateFlags(userId, (flags) => flags | UserFlags.DISABLED)) ?? bannedUser; await AuthSession.terminateAllUserSessions(this.deps.apiContext, userId); await updatePropagator.propagateUserUpdate({userId, oldUser: user, updatedUser: updatedUser}); const email = user.email; @@ -146,14 +140,9 @@ export class AdminUserBanService { throw new UnknownUserError(); } const wasTempBanned = isTemporarilyBanned(user) && !isAccountClosed(user); - const updatedUser = await userRepository.patchUpsert( - userId, - { - temp_banned_until: null, - flags: user.flags & ~UserFlags.DISABLED, - }, - user.toRow(), - ); + const unbannedUser = await userRepository.patchUpsert(userId, {temp_banned_until: null}, user.toRow()); + const updatedUser = + (await userRepository.updateFlags(userId, (flags) => flags & ~UserFlags.DISABLED)) ?? unbannedUser; await updatePropagator.propagateUserUpdate({userId, oldUser: user, updatedUser: updatedUser}); const email = user.email; const notificationSent = diff --git a/fluxer_api/src/api/admin/services/AdminUserProfileService.ts b/fluxer_api/src/api/admin/services/AdminUserProfileService.ts index e8438c37b..c6a2af011 100644 --- a/fluxer_api/src/api/admin/services/AdminUserProfileService.ts +++ b/fluxer_api/src/api/admin/services/AdminUserProfileService.ts @@ -4,7 +4,6 @@ import type {ApiContext} from '@app/api/ApiContext'; import {mapUserToAdminResponse} from '@app/api/admin/models/UserTypes'; import type {AdminAuditService} from '@app/api/admin/services/AdminAuditService'; import type {AdminUserUpdatePropagator} from '@app/api/admin/services/AdminUserUpdatePropagator'; -import {EMAIL_CLEARABLE_SUSPICIOUS_ACTIVITY_FLAGS} from '@app/api/auth/AuthEmail'; import {createUserID, type UserID} from '@app/api/BrandedTypes'; import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate'; import {GuildMemberSearchIndexService} from '@app/api/guild/services/member/GuildMemberSearchIndexService'; @@ -188,21 +187,11 @@ export class AdminUserProfileService { if (!user) { throw new UnknownUserError(); } - const updates: { - email_verified: boolean; - email_bounced: boolean; - suspicious_activity_flags?: number; - } = { - email_verified: true, - email_bounced: false, - }; - if (user.suspiciousActivityFlags !== null && user.suspiciousActivityFlags !== 0) { - const newFlags = user.suspiciousActivityFlags & ~EMAIL_CLEARABLE_SUSPICIOUS_ACTIVITY_FLAGS; - if (newFlags !== user.suspiciousActivityFlags) { - updates.suspicious_activity_flags = newFlags; - } - } - const updatedUser = await userRepository.patchUpsert(userId, updates, user.toRow()); + const updatedUser = await userRepository.patchUpsert( + userId, + {email_verified: true, email_bounced: false}, + user.toRow(), + ); await updatePropagator.propagateUserUpdate({userId, oldUser: user, updatedUser: updatedUser}); await auditService.createAuditLog({ adminUserId, diff --git a/fluxer_api/src/api/admin/services/AdminUserSecurityService.ts b/fluxer_api/src/api/admin/services/AdminUserSecurityService.ts index 410954a5a..95334ecca 100644 --- a/fluxer_api/src/api/admin/services/AdminUserSecurityService.ts +++ b/fluxer_api/src/api/admin/services/AdminUserSecurityService.ts @@ -3,7 +3,6 @@ import type {ApiContext} from '@app/api/ApiContext'; import {mapUserToAdminResponse} from '@app/api/admin/models/UserTypes'; import type {AdminAuditService} from '@app/api/admin/services/AdminAuditService'; -import {trySendAdminNotification} from '@app/api/admin/services/AdminNotification'; import type {AdminUserUpdatePropagator} from '@app/api/admin/services/AdminUserUpdatePropagator'; import * as AuthEmail from '@app/api/auth/AuthEmail'; import * as AuthMfa from '@app/api/auth/AuthMfa'; @@ -11,10 +10,10 @@ import * as AuthSession from '@app/api/auth/AuthSession'; import * as AuthUtility from '@app/api/auth/AuthUtility'; import {visibleWebAuthnCredentials} from '@app/api/auth/services/PasskeyRelyingParty'; import {createPasswordResetToken, createUserID, type UserID} from '@app/api/BrandedTypes'; -import type {UserRow} from '@app/api/database/types/UserTypes'; import {emitAdminAction} from '@app/api/infrastructure/activity/AccountChangeEvents'; import {Logger} from '@app/api/Logger'; import {getInstanceConfigRepository} from '@app/api/middleware/ServiceSingletons'; +import {User} from '@app/api/models/User'; import {clearNewConversationLimit} from '@app/api/user/NewConversationLimit'; import {mapWebAuthnCredentialToResponse} from '@app/api/user/UserMappers'; import {resolveAssignedTraits} from '@app/api/user/UserTraits'; @@ -22,13 +21,7 @@ import {getIpAddressReverse, getLocationLabelFromIp} from '@app/api/utils/IpUtil import {resolveSessionClientInfo} from '@app/api/utils/SessionClientIdentity'; import {AdminACLs} from '@fluxer/constants/src/AdminACLs'; import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import { - ADMIN_PHONE_TOGGLE_CLEARABLE_FLAGS, - DEFERRABLE_PHONE_FLAGS, - DEFERRED_PHONE_ON_COMMUNITY_JOIN, - PHONE_GATE_PROMOTED_FROM_DEFERRAL, - UserFlags, -} from '@fluxer/constants/src/UserConstants'; +import {UserFlags} from '@fluxer/constants/src/UserConstants'; import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes'; import {AccessDeniedError} from '@fluxer/errors/src/domains/core/AccessDeniedError'; import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError'; @@ -37,7 +30,6 @@ import {ServiceUnavailableError} from '@fluxer/errors/src/domains/core/ServiceUn import {UnknownUserError} from '@fluxer/errors/src/domains/user/UnknownUserError'; import type { DeleteWebAuthnCredentialRequest, - DisableForSuspiciousActivityRequest, DisableMfaRequest, ListWebAuthnCredentialsRequest, ResendVerificationEmailRequest, @@ -45,8 +37,6 @@ import type { SetUserAclsRequest, SetUserTraitsRequest, TerminateSessionsRequest, - UpdateHasVerifiedPhoneRequest, - UpdateSuspiciousActivityFlagsRequest, } from '@fluxer/schema/src/domains/admin/AdminUserSchemas'; import type {WebAuthnCredentialListResponse} from '@fluxer/schema/src/domains/auth/AuthSchemas'; @@ -132,23 +122,21 @@ export class AdminUserSecurityService { }) { const {users: userRepository, cache: cacheService} = this.deps.apiContext.services; const {auditService, updatePropagator} = this.deps; - const user = await userRepository.findUnique(userId); - if (!user) { + let previousFlags = 0n; + const updatedUser = await userRepository.updateFlags(userId, (flags) => { + previousFlags = flags; + return applyBigIntFlagUpdates(flags, data.addFlags, data.removeFlags); + }); + if (!updatedUser) { throw new UnknownUserError(); } - const newFlags = applyBigIntFlagUpdates(user.flags, data.addFlags, data.removeFlags); - const updatedUser = await userRepository.patchUpsert( - userId, - { - flags: newFlags, - }, - user.toRow(), - ); - const trusted = (newFlags & UserFlags.NOT_SUSPICIOUS) !== 0n && (user.flags & UserFlags.NOT_SUSPICIOUS) === 0n; - if (trusted || (user.flags & ~newFlags) !== 0n) { + const newFlags = updatedUser.flags; + const trusted = (newFlags & UserFlags.LIMIT_EXEMPT) !== 0n && (previousFlags & UserFlags.LIMIT_EXEMPT) === 0n; + if (trusted || (previousFlags & ~newFlags) !== 0n) { await clearNewConversationLimit(userId, {cache: cacheService}); } - await updatePropagator.propagateUserUpdate({userId, oldUser: user, updatedUser: updatedUser}); + const oldUser = new User({...updatedUser.toRow(), flags: previousFlags}); + await updatePropagator.propagateUserUpdate({userId, oldUser, updatedUser}); await auditService.createAuditLog({ adminUserId, targetType: 'user', @@ -399,150 +387,6 @@ export class AdminUserSecurityService { }; } - async updateHasVerifiedPhone( - data: UpdateHasVerifiedPhoneRequest, - adminUserId: UserID, - auditLogReason: string | null, - acls: ReadonlySet, - ) { - const {users: userRepository, cache: cacheService} = this.deps.apiContext.services; - const {auditService, updatePropagator} = this.deps; - const userId = createUserID(data.user_id); - const user = await userRepository.findUnique(userId); - if (!user) { - throw new UnknownUserError(); - } - const phonePatch: Partial = {has_verified_phone: data.has_verified_phone}; - if (data.has_verified_phone) { - const clearedFlags = (user.suspiciousActivityFlags ?? 0) & ~ADMIN_PHONE_TOGGLE_CLEARABLE_FLAGS; - if (clearedFlags !== (user.suspiciousActivityFlags ?? 0)) { - phonePatch.suspicious_activity_flags = clearedFlags; - } - } - const updatedUser = await userRepository.patchUpsert(userId, phonePatch, user.toRow()); - await updatePropagator.propagateUserUpdate({userId, oldUser: user, updatedUser}); - await auditService.createAuditLog({ - adminUserId, - targetType: 'user', - targetId: BigInt(userId), - action: 'update_has_verified_phone', - auditLogReason, - metadata: new Map( - phonePatch.suspicious_activity_flags === undefined - ? [['has_verified_phone', String(data.has_verified_phone)]] - : [ - ['has_verified_phone', String(data.has_verified_phone)], - ['suspicious_activity_flags_before', String(user.suspiciousActivityFlags ?? 0)], - ['suspicious_activity_flags_after', String(phonePatch.suspicious_activity_flags)], - ], - ), - }); - await emitAdminAction(adminUserId, userId, 'set_phone_verified'); - return { - user: await mapUserToAdminResponse(updatedUser, cacheService, acls), - }; - } - - async updateSuspiciousActivityFlags( - data: UpdateSuspiciousActivityFlagsRequest, - adminUserId: UserID, - auditLogReason: string | null, - acls: ReadonlySet, - ) { - const {users: userRepository, cache: cacheService} = this.deps.apiContext.services; - const {auditService, updatePropagator} = this.deps; - const userId = createUserID(data.user_id); - const user = await userRepository.findUnique(userId); - if (!user) { - throw new UnknownUserError(); - } - const currentFlags = user.suspiciousActivityFlags ?? 0; - const keepsDeferral = - (currentFlags & DEFERRED_PHONE_ON_COMMUNITY_JOIN) !== 0 && - (data.flags & DEFERRABLE_PHONE_FLAGS) !== 0 && - (data.flags & DEFERRABLE_PHONE_FLAGS) === (currentFlags & DEFERRABLE_PHONE_FLAGS); - const keepsPromotion = - (currentFlags & PHONE_GATE_PROMOTED_FROM_DEFERRAL) !== 0 && - (data.flags & DEFERRABLE_PHONE_FLAGS) !== 0 && - (data.flags & DEFERRABLE_PHONE_FLAGS) === (currentFlags & DEFERRABLE_PHONE_FLAGS); - const newFlags = - (keepsDeferral ? data.flags | DEFERRED_PHONE_ON_COMMUNITY_JOIN : data.flags) | - (keepsPromotion ? PHONE_GATE_PROMOTED_FROM_DEFERRAL : 0); - const updatedUser = await userRepository.patchUpsert( - userId, - { - suspicious_activity_flags: newFlags, - }, - user.toRow(), - ); - if ((currentFlags & ~newFlags) !== 0) { - await clearNewConversationLimit(userId, {cache: cacheService}); - } - await updatePropagator.propagateUserUpdate({userId, oldUser: user, updatedUser: updatedUser}); - await auditService.createAuditLog({ - adminUserId, - targetType: 'user', - targetId: BigInt(userId), - action: 'update_suspicious_activity_flags', - auditLogReason, - metadata: new Map([['flags', data.flags.toString()]]), - }); - await emitAdminAction(adminUserId, userId, 'set_suspicious_flags'); - return { - user: await mapUserToAdminResponse(updatedUser, cacheService, acls), - }; - } - - async disableForSuspiciousActivity( - data: DisableForSuspiciousActivityRequest, - adminUserId: UserID, - auditLogReason: string | null, - acls: ReadonlySet, - ) { - const {users: userRepository, email: emailService, cache: cacheService} = this.deps.apiContext.services; - const {auditService, updatePropagator} = this.deps; - const userId = createUserID(data.user_id); - const user = await userRepository.findUnique(userId); - if (!user) { - throw new UnknownUserError(); - } - const updatedUser = await userRepository.patchUpsert( - userId, - { - flags: user.flags | UserFlags.DISABLED_SUSPICIOUS_ACTIVITY, - suspicious_activity_flags: data.flags, - password_hash: null, - }, - user.toRow(), - ); - await AuthSession.terminateAllUserSessions(this.deps.apiContext, userId); - await updatePropagator.propagateUserUpdate({userId, oldUser: user, updatedUser: updatedUser}); - const email = user.email; - const notificationSent = - data.notify_user && email - ? await trySendAdminNotification( - () => emailService.sendAccountDisabledForSuspiciousActivityEmail(email, user.username, null, user.locale), - {action: 'disable_suspicious_activity', targetId: userId.toString()}, - ) - : false; - await auditService.createAuditLog({ - adminUserId, - targetType: 'user', - targetId: BigInt(userId), - action: 'disable_suspicious_activity', - auditLogReason, - metadata: new Map([ - ['flags', data.flags.toString()], - ['notify_user', data.notify_user ? 'true' : 'false'], - ['notification_sent', notificationSent ? 'true' : 'false'], - ]), - }); - await emitAdminAction(adminUserId, userId, 'disable_suspicious'); - return { - user: await mapUserToAdminResponse(updatedUser, cacheService, acls), - }; - } - async listWebAuthnCredentials( data: ListWebAuthnCredentialsRequest, adminUserId: UserID, diff --git a/fluxer_api/src/api/admin/services/guild/AdminGuildMembershipService.ts b/fluxer_api/src/api/admin/services/guild/AdminGuildMembershipService.ts index b9af21746..e76446d1e 100644 --- a/fluxer_api/src/api/admin/services/guild/AdminGuildMembershipService.ts +++ b/fluxer_api/src/api/admin/services/guild/AdminGuildMembershipService.ts @@ -48,6 +48,7 @@ export class AdminGuildMembershipService { guildId, sendJoinMessage, skipBanCheck: true, + skipAccountLimitCheck: true, joinSourceType: JoinSourceTypes.ADMIN_FORCE_ADD, requestCache, initiatorId: adminUserId, diff --git a/fluxer_api/src/api/admin/tests/AdminSearchFieldCoverage.test.ts b/fluxer_api/src/api/admin/tests/AdminSearchFieldCoverage.test.ts index 8139be16a..fe4458b89 100644 --- a/fluxer_api/src/api/admin/tests/AdminSearchFieldCoverage.test.ts +++ b/fluxer_api/src/api/admin/tests/AdminSearchFieldCoverage.test.ts @@ -5,7 +5,7 @@ import {createGuild} from '@app/api/channel/tests/ChannelTestUtils'; import {getUserActivityBuffer} from '@app/api/middleware/ServiceSingletons'; import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness'; import {HTTP_STATUS} from '@app/api/test/TestConstants'; -import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder'; +import {createBuilder} from '@app/api/test/TestRequestBuilder'; import type {GuildAdminResponse} from '@fluxer/schema/src/domains/admin/AdminGuildSchemas'; import type {UserAdminResponse} from '@fluxer/schema/src/domains/admin/AdminUserSchemas'; import {afterEach, beforeEach, describe, expect, test} from 'vitest'; @@ -20,21 +20,6 @@ interface GuildSearchResponse { total: number; } -async function setContactInfo( - harness: ApiTestHarness, - userId: string, - data: { - has_verified_phone?: boolean; - email?: string | null; - }, -): Promise { - await createBuilderWithoutAuth(harness) - .post(`/test/users/${userId}/set-contact-info`) - .body(data) - .expect(HTTP_STATUS.OK) - .execute(); -} - async function setLastActiveIp(harness: ApiTestHarness, token: string, ip: string): Promise { await createBuilder(harness, `${token}`) .get('/users/@me') @@ -197,7 +182,6 @@ describe('Admin Search Field Coverage', () => { const email = `fields-check-${Date.now()}@fieldtest.example`; const username = `fieldcheck_${Date.now()}`; const targetUser = await createTestAccount(harness, {email, username}); - await setContactInfo(harness, targetUser.userId, {has_verified_phone: true}); const result = await createBuilder(harness, `${admin.token}`) .get(`/admin/users?q=${encodeURIComponent(email)}&limit=10&offset=0`) .expect(HTTP_STATUS.OK) @@ -207,7 +191,6 @@ describe('Admin Search Field Coverage', () => { expect(found!.id).toBe(targetUser.userId); expect(found!.username).toBe(username); expect(found!.email).toBe(email); - expect(found!.has_verified_phone).toBe(true); expect(found!).toHaveProperty('discriminator'); expect(found!).toHaveProperty('global_name'); expect(found!).toHaveProperty('flags'); @@ -215,7 +198,6 @@ describe('Admin Search Field Coverage', () => { expect(found!).toHaveProperty('email_bounced'); expect(found!).toHaveProperty('premium_type'); expect(found!).toHaveProperty('acls'); - expect(found!).toHaveProperty('suspicious_activity_flags'); }); }); describe('user search isolation across fields', () => { diff --git a/fluxer_api/src/api/admin/tests/AdminStaffNotifications.test.ts b/fluxer_api/src/api/admin/tests/AdminStaffNotifications.test.ts index b0d657191..dbd45e173 100644 --- a/fluxer_api/src/api/admin/tests/AdminStaffNotifications.test.ts +++ b/fluxer_api/src/api/admin/tests/AdminStaffNotifications.test.ts @@ -15,7 +15,6 @@ import {HTTP_STATUS} from '@app/api/test/TestConstants'; import {createBuilder} from '@app/api/test/TestRequestBuilder'; import {AdminACLs} from '@fluxer/constants/src/AdminACLs'; import {DeletionReasons} from '@fluxer/constants/src/Core'; -import {SuspiciousActivityFlags} from '@fluxer/constants/src/UserConstants'; import {afterEach, beforeEach, describe, expect, test} from 'vitest'; const DELETION_TEMPLATES = [ @@ -257,29 +256,6 @@ describe('Admin staff notifications', () => { }); }); - describe('suspicious activity disable', () => { - test.each([ - [undefined, true], - [false, false], - ])('notify_user %s emails %s', async (notifyUser, expected) => { - const target = await createTestAccount(harness); - await clearTestEmails(harness); - await createBuilder(harness, admin.token) - .put(`/admin/users/${target.userId}/suspicious-activity-disablement`) - .body({ - flags: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE, - ...(notifyUser === undefined ? {} : {notify_user: notifyUser}), - }) - .expect(HTTP_STATUS.OK) - .execute(); - const types = (await emailsTo(target)).map((email) => email.type); - expect(types.includes('account_disabled_suspicious')).toBe(expected); - const metadata = await auditMetadata('disable_suspicious_activity', target.userId); - expect(metadata?.get('notify_user')).toBe(expected ? 'true' : 'false'); - expect(metadata?.get('notification_sent')).toBe(expected ? 'true' : 'false'); - }); - }); - describe('report resolve', () => { async function fileReport(): Promise<{reporter: TestAccount; reportId: string}> { const reporter = await createTestAccount(harness); diff --git a/fluxer_api/src/api/admin/tests/AdminUserChangeLogAndFlags.test.ts b/fluxer_api/src/api/admin/tests/AdminUserChangeLogAndFlags.test.ts index 5deb55e3d..4ad4deb6b 100644 --- a/fluxer_api/src/api/admin/tests/AdminUserChangeLogAndFlags.test.ts +++ b/fluxer_api/src/api/admin/tests/AdminUserChangeLogAndFlags.test.ts @@ -5,7 +5,7 @@ import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHa import {HTTP_STATUS, TEST_CREDENTIALS} from '@app/api/test/TestConstants'; import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder'; import {AdminACLs} from '@fluxer/constants/src/AdminACLs'; -import {SuspiciousActivityFlags} from '@fluxer/constants/src/UserConstants'; +import {UserFlags} from '@fluxer/constants/src/UserConstants'; import {afterAll, beforeAll, beforeEach, describe, expect, test} from 'vitest'; interface ChangeLogResponse { @@ -24,7 +24,7 @@ interface ChangeLogResponse { interface UserMutationResponse { user: { id: string; - suspicious_activity_flags: number; + flags: string; }; } @@ -33,11 +33,10 @@ interface VerifyEmailMutationResponse { id: string; email_verified: boolean; email_bounced: boolean; - suspicious_activity_flags: number; }; } -describe('Admin User Change Log and Suspicious Flags', () => { +describe('Admin User Change Log and Flags', () => { let harness: ApiTestHarness; beforeAll(async () => { harness = await createApiTestHarness(); @@ -130,101 +129,23 @@ describe('Admin User Change Log and Suspicious Flags', () => { .execute(); }); }); - describe('PUT /admin/users/{user_id}/suspicious-activity-flags', () => { - test('sets suspicious activity flags', async () => { + describe('PATCH /admin/users/{user_id}/flags account limitation', () => { + test('sets and clears the account limitation', async () => { const admin = await createTestAccount(harness); await setUserACLs(harness, admin, [AdminACLs.AUTHENTICATE, AdminACLs.WILDCARD]); const target = await createTestAccount(harness); - const flags = SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL | SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE; - const result = await createBuilder(harness, `${admin.token}`) - .put(`/admin/users/${target.userId}/suspicious-activity-flags`) - .body({flags}) + const limited = await createBuilder(harness, `${admin.token}`) + .patch(`/admin/users/${target.userId}/flags`) + .body({add_flags: [UserFlags.ACCOUNT_LIMITED.toString()]}) .expect(HTTP_STATUS.OK) .execute(); - expect(result.user.suspicious_activity_flags).toBe(flags); - }); - test('clears all suspicious activity flags by setting to zero', async () => { - const admin = await createTestAccount(harness); - await setUserACLs(harness, admin, [AdminACLs.AUTHENTICATE, AdminACLs.WILDCARD]); - const target = await createTestAccount(harness); - await createBuilder(harness, `${admin.token}`) - .put(`/admin/users/${target.userId}/suspicious-activity-flags`) - .body({flags: SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL}) + expect(BigInt(limited.user.flags) & UserFlags.ACCOUNT_LIMITED).toBe(UserFlags.ACCOUNT_LIMITED); + const lifted = await createBuilder(harness, `${admin.token}`) + .patch(`/admin/users/${target.userId}/flags`) + .body({remove_flags: [UserFlags.ACCOUNT_LIMITED.toString()]}) .expect(HTTP_STATUS.OK) .execute(); - const result = await createBuilder(harness, `${admin.token}`) - .put(`/admin/users/${target.userId}/suspicious-activity-flags`) - .body({flags: 0}) - .expect(HTTP_STATUS.OK) - .execute(); - expect(result.user.suspicious_activity_flags).toBe(0); - }); - test('rejects invalid user_id format', async () => { - const admin = await createTestAccount(harness); - await setUserACLs(harness, admin, [AdminACLs.AUTHENTICATE, AdminACLs.WILDCARD]); - await createBuilder(harness, `${admin.token}`) - .put('/admin/users/not-a-snowflake/suspicious-activity-flags') - .body({flags: 1}) - .expect(HTTP_STATUS.BAD_REQUEST, 'INVALID_FORM_BODY') - .execute(); - }); - test('rejects missing flags', async () => { - const admin = await createTestAccount(harness); - await setUserACLs(harness, admin, [AdminACLs.AUTHENTICATE, AdminACLs.WILDCARD]); - const target = await createTestAccount(harness); - await createBuilder(harness, `${admin.token}`) - .put(`/admin/users/${target.userId}/suspicious-activity-flags`) - .body({}) - .expect(HTTP_STATUS.BAD_REQUEST, 'INVALID_FORM_BODY') - .execute(); - }); - test('rejects negative flags', async () => { - const admin = await createTestAccount(harness); - await setUserACLs(harness, admin, [AdminACLs.AUTHENTICATE, AdminACLs.WILDCARD]); - const target = await createTestAccount(harness); - await createBuilder(harness, `${admin.token}`) - .put(`/admin/users/${target.userId}/suspicious-activity-flags`) - .body({flags: -1}) - .expect(HTTP_STATUS.BAD_REQUEST, 'INVALID_FORM_BODY') - .execute(); - }); - test('rejects non-existent user', async () => { - const admin = await createTestAccount(harness); - await setUserACLs(harness, admin, [AdminACLs.AUTHENTICATE, AdminACLs.WILDCARD]); - await createBuilder(harness, `${admin.token}`) - .put('/admin/users/999999999999999999/suspicious-activity-flags') - .body({flags: 1}) - .expect(HTTP_STATUS.NOT_FOUND) - .execute(); - }); - test('requires USER_UPDATE_SUSPICIOUS_ACTIVITY ACL', async () => { - const admin = await createTestAccount(harness); - await setUserACLs(harness, admin, [AdminACLs.AUTHENTICATE, AdminACLs.USER_LOOKUP]); - const target = await createTestAccount(harness); - await createBuilder(harness, `${admin.token}`) - .put(`/admin/users/${target.userId}/suspicious-activity-flags`) - .body({flags: 1}) - .expect(HTTP_STATUS.FORBIDDEN) - .execute(); - }); - test('updates flags multiple times in sequence', async () => { - const admin = await createTestAccount(harness); - await setUserACLs(harness, admin, [AdminACLs.AUTHENTICATE, AdminACLs.WILDCARD]); - const target = await createTestAccount(harness); - const result1 = await createBuilder(harness, `${admin.token}`) - .put(`/admin/users/${target.userId}/suspicious-activity-flags`) - .body({flags: SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL}) - .expect(HTTP_STATUS.OK) - .execute(); - expect(result1.user.suspicious_activity_flags).toBe(SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL); - const combined = - SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL | SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL; - const result2 = await createBuilder(harness, `${admin.token}`) - .put(`/admin/users/${target.userId}/suspicious-activity-flags`) - .body({flags: combined}) - .expect(HTTP_STATUS.OK) - .execute(); - expect(result2.user.suspicious_activity_flags).toBe(combined); + expect(BigInt(lifted.user.flags) & UserFlags.ACCOUNT_LIMITED).toBe(0n); }); }); describe('DELETE /admin/users/{user_id}/mfa', () => { @@ -256,7 +177,7 @@ describe('Admin User Change Log and Suspicious Flags', () => { }); }); describe('PUT /admin/users/{user_id}/email-verification', () => { - test('verifying email clears email_bounced and only email-related suspicious flags', async () => { + test('verifying email clears email_bounced', async () => { const admin = await createTestAccount(harness); await setUserACLs(harness, admin, [AdminACLs.AUTHENTICATE, AdminACLs.WILDCARD]); const target = await createTestAccount(harness); @@ -265,7 +186,6 @@ describe('Admin User Change Log and Suspicious Flags', () => { .body({ email_bounced: true, email_verified: false, - suspicious_activity_flag_names: ['REQUIRE_REVERIFIED_EMAIL', 'REQUIRE_VERIFIED_PHONE'], }) .expect(HTTP_STATUS.OK) .execute(); @@ -275,7 +195,6 @@ describe('Admin User Change Log and Suspicious Flags', () => { .execute(); expect(result.user.email_verified).toBe(true); expect(result.user.email_bounced).toBe(false); - expect(result.user.suspicious_activity_flags).toBe(SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE); }); }); describe('POST /admin/users/{user_id}/verification-email', () => { diff --git a/fluxer_api/src/api/admin/tests/audit_coverage/UserWriteAdminAuditCases.ts b/fluxer_api/src/api/admin/tests/audit_coverage/UserWriteAdminAuditCases.ts index dd1a768f2..6500e5516 100644 --- a/fluxer_api/src/api/admin/tests/audit_coverage/UserWriteAdminAuditCases.ts +++ b/fluxer_api/src/api/admin/tests/audit_coverage/UserWriteAdminAuditCases.ts @@ -25,7 +25,7 @@ import type {User} from '@app/api/models/User'; import {createBuilder} from '@app/api/test/TestRequestBuilder'; import {AdminACLs} from '@fluxer/constants/src/AdminACLs'; import {DeletionReasons} from '@fluxer/constants/src/Core'; -import {PremiumFlags, SuspiciousActivityFlags, UserFlags} from '@fluxer/constants/src/UserConstants'; +import {PremiumFlags, UserFlags} from '@fluxer/constants/src/UserConstants'; import {expect} from 'vitest'; async function loadUser(account: TestAccount): Promise { @@ -533,34 +533,6 @@ export const UserWriteAdminAuditCases: ReadonlyArray = [ }; }, }, - { - method: 'PUT', - route: '/admin/users/:user_id/phone-verification', - async prepare(context) { - const target = await createTestAccount(context.harness); - const flags = SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL | SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE; - await adminBuilder(context) - .put(`/admin/users/${target.userId}/suspicious-activity-flags`) - .body({flags}) - .execute(); - return { - request: { - path: `/admin/users/${target.userId}/phone-verification`, - body: {has_verified_phone: true}, - }, - expected: { - action: 'update_has_verified_phone', - targetType: 'user', - targetId: target.userId, - metadata: { - has_verified_phone: 'true', - suspicious_activity_flags_before: flags.toString(), - suspicious_activity_flags_after: SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL.toString(), - }, - }, - }; - }, - }, { method: 'PATCH', route: '/admin/users/:user_id/date-of-birth', @@ -577,38 +549,4 @@ export const UserWriteAdminAuditCases: ReadonlyArray = [ }; }, }, - { - method: 'PUT', - route: '/admin/users/:user_id/suspicious-activity-flags', - async prepare({harness}) { - const target = await createTestAccount(harness); - const flags = SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL | SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE; - return { - request: {path: `/admin/users/${target.userId}/suspicious-activity-flags`, body: {flags}}, - expected: { - action: 'update_suspicious_activity_flags', - targetType: 'user', - targetId: target.userId, - metadata: {flags: flags.toString()}, - }, - }; - }, - }, - { - method: 'PUT', - route: '/admin/users/:user_id/suspicious-activity-disablement', - async prepare({harness}) { - const target = await createTestAccount(harness); - const flags = SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE; - return { - request: {path: `/admin/users/${target.userId}/suspicious-activity-disablement`, body: {flags}}, - expected: { - action: 'disable_suspicious_activity', - targetType: 'user', - targetId: target.userId, - metadata: {flags: flags.toString(), notify_user: 'true', notification_sent: 'true'}, - }, - }; - }, - }, ]; diff --git a/fluxer_api/src/api/app/APILifecycle.ts b/fluxer_api/src/api/app/APILifecycle.ts index 9582b59cd..68cf9baec 100644 --- a/fluxer_api/src/api/app/APILifecycle.ts +++ b/fluxer_api/src/api/app/APILifecycle.ts @@ -2,7 +2,6 @@ import {randomUUID} from 'node:crypto'; import {ensureDeletionQueueState} from '@app/api/app/DeletionQueueStartup'; -import {renderPhoneRpcMetrics, setPhoneRpcConnection} from '@app/api/auth/PhoneVerificationClient'; import type {APIConfig} from '@app/api/config/APIConfig'; import {hasDatabaseQueryExecutor, setDatabaseQueryExecutor} from '@app/api/database/CassandraQueryExecution'; import {ensurePostgresKvSchema, PostgresKvQueryExecutor} from '@app/api/database/PostgresKvQueryExecutor'; @@ -49,7 +48,6 @@ import {VoiceDataInitializer} from '@app/api/voice/VoiceDataInitializer'; import {JetStreamWorkerQueue} from '@app/api/worker/JetStreamWorkerQueue'; import {WorkerService} from '@app/api/worker/WorkerService'; import {registerMetricsSection} from '@fluxer/hono/src/middleware/Metrics'; -import type {JetStreamClient} from '@nats-io/jetstream'; import {initCassandra, shutdownCassandra} from '@pkgs/cassandra/src/Client'; import {ensureGeoipDatabaseOnStartup} from '@pkgs/geoip/src/GeoipStartup'; import {JetStreamConnectionManager} from '@pkgs/nats/src/JetStreamConnectionManager'; @@ -58,11 +56,6 @@ import {getDefaultPostgresClient, initPostgres, shutdownPostgres} from '@pkgs/po let jsConnectionManager: JetStreamConnectionManager | null = null; const unregisterMetricsSections: Array<() => void> = []; -export function getActivityJetStream(): JetStreamClient | null { - if (!jsConnectionManager || jsConnectionManager.isClosed()) return null; - return jsConnectionManager.getJetStreamClient(); -} - interface RefreshCacheLifecycle { initialize(): Promise; shutdown(): Promise; @@ -192,11 +185,9 @@ export function createInitializer(config: APIConfig, logger: ILogger): () => Pro }); startRequestErrorTelemetry(); startSharedListWatch(connection.getJetStreamClient()); - setPhoneRpcConnection(() => (connection.isClosed() ? null : connection.getConnection())); unregisterMetricsSections.push( registerMetricsSection(renderActivityMetrics), registerMetricsSection(renderSharedListMetrics), - registerMetricsSection(renderPhoneRpcMetrics), ); logger.info('Activity events initialized'); } @@ -282,7 +273,6 @@ export function createShutdown(config: APIConfig, logger: ILogger): () => Promis } stopRequestErrorTelemetry(); stopSharedListWatch(); - setPhoneRpcConnection(null); for (const unregister of unregisterMetricsSections.splice(0)) unregister(); await shutdownActivityEvents(); if (jsConnectionManager) { diff --git a/fluxer_api/src/api/app/ControllerRegistry.ts b/fluxer_api/src/api/app/ControllerRegistry.ts index 74517f913..5f2dd82ba 100644 --- a/fluxer_api/src/api/app/ControllerRegistry.ts +++ b/fluxer_api/src/api/app/ControllerRegistry.ts @@ -1,7 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import {registerAdminControllers} from '@app/api/admin/controllers/index'; -import {getActivityJetStream} from '@app/api/app/APILifecycle'; import {AttachmentController} from '@app/api/attachment/AttachmentController'; import {AuthController} from '@app/api/auth/AuthController'; import {OriginHandoffController} from '@app/api/auth/OriginHandoffController'; @@ -36,7 +35,6 @@ import {ThemeController} from '@app/api/theme/ThemeController'; import type {HonoApp} from '@app/api/types/HonoEnv'; import {UnfurlController} from '@app/api/unfurl/UnfurlController'; import {UserController} from '@app/api/user/controllers/UserController'; -import {installSmsWebhookForwarder} from '@app/api/webhook/SmsWebhookForwarder'; import {WebhookController} from '@app/api/webhook/WebhookController'; export function registerControllers(routes: HonoApp, config: APIConfig): void { @@ -69,7 +67,6 @@ export function registerControllers(routes: HonoApp, config: APIConfig): void { TestHarnessController(routes); } UserController(routes); - installSmsWebhookForwarder(routes, getActivityJetStream); StoreBillingController(routes); WebhookController(routes); OAuth2Controller(routes); diff --git a/fluxer_api/src/api/auth/AuthController.ts b/fluxer_api/src/api/auth/AuthController.ts index 6069a161d..4f3b42e31 100644 --- a/fluxer_api/src/api/auth/AuthController.ts +++ b/fluxer_api/src/api/auth/AuthController.ts @@ -2,7 +2,7 @@ import {requireSudoMode} from '@app/api/auth/services/SudoVerificationService'; import {Config} from '@app/api/Config'; -import {DefaultUserOnly, LoginRequiredAllowSuspicious} from '@app/api/middleware/AuthMiddleware'; +import {DefaultUserOnly, LoginRequired} from '@app/api/middleware/AuthMiddleware'; import {CaptchaMiddleware} from '@app/api/middleware/CaptchaMiddleware'; import {LocalAuthMiddleware} from '@app/api/middleware/LocalAuthMiddleware'; import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware'; @@ -182,7 +182,7 @@ export function AuthController(app: HonoApp) { app.post( '/auth/logout', RateLimitMiddleware(RateLimitConfigs.AUTH_LOGOUT), - LoginRequiredAllowSuspicious, + LoginRequired, OpenAPI({ operationId: 'logout_user', summary: 'Logout account', @@ -222,7 +222,7 @@ export function AuthController(app: HonoApp) { '/auth/verify/resend', LocalAuthMiddleware, RateLimitMiddleware(RateLimitConfigs.AUTH_RESEND_VERIFICATION), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, OpenAPI({ operationId: 'resend_verification_email', @@ -332,7 +332,7 @@ export function AuthController(app: HonoApp) { app.get( '/auth/sessions', RateLimitMiddleware(RateLimitConfigs.AUTH_SESSIONS_GET), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, OpenAPI({ operationId: 'list_auth_sessions', @@ -352,7 +352,7 @@ export function AuthController(app: HonoApp) { app.post( '/auth/sessions/logout', RateLimitMiddleware(RateLimitConfigs.AUTH_SESSIONS_LOGOUT), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, SudoModeMiddleware, Validator('json', LogoutAuthSessionsWithVerificationRequest), diff --git a/fluxer_api/src/api/auth/AuthEmail.ts b/fluxer_api/src/api/auth/AuthEmail.ts index ac81a89c0..ce59d41b1 100644 --- a/fluxer_api/src/api/auth/AuthEmail.ts +++ b/fluxer_api/src/api/auth/AuthEmail.ts @@ -5,20 +5,12 @@ import {createEmailVerificationToken} from '@app/api/BrandedTypes'; import type {User} from '@app/api/models/User'; import {mapUserToPrivateResponse} from '@app/api/user/UserMappers'; import * as RandomUtils from '@app/api/utils/RandomUtils'; -import {SuspiciousActivityFlags, UserFlags} from '@fluxer/constants/src/UserConstants'; +import {UserFlags} from '@fluxer/constants/src/UserConstants'; import {BotUserAuthEndpointAccessDeniedError} from '@fluxer/errors/src/domains/auth/BotUserAuthEndpointAccessDeniedError'; import {RateLimitError} from '@fluxer/errors/src/domains/core/RateLimitError'; import type {VerifyEmailRequest} from '@fluxer/schema/src/domains/auth/AuthSchemas'; import {ms} from 'itty-time'; -export const EMAIL_CLEARABLE_SUSPICIOUS_ACTIVITY_FLAGS = - SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL | - SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL | - SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE | - SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE | - SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE | - SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE; - function assertNonBotUser(user: User): void { if (user.isBot) { throw new BotUserAuthEndpointAccessDeniedError(); @@ -43,21 +35,7 @@ export async function verifyEmail(ctx: ApiContext, data: VerifyEmailRequest): Pr ) { return false; } - const updates: { - email_verified: boolean; - email_bounced: boolean; - suspicious_activity_flags?: number; - } = { - email_verified: true, - email_bounced: false, - }; - if (user.suspiciousActivityFlags !== null && user.suspiciousActivityFlags !== 0) { - const newFlags = user.suspiciousActivityFlags & ~EMAIL_CLEARABLE_SUSPICIOUS_ACTIVITY_FLAGS; - if (newFlags !== user.suspiciousActivityFlags) { - updates.suspicious_activity_flags = newFlags; - } - } - const updatedUser = await users.patchUpsert(user.id, updates, user.toRow()); + const updatedUser = await users.patchUpsert(user.id, {email_verified: true, email_bounced: false}, user.toRow()); await users.deleteEmailVerificationToken(data.token); await gateway.dispatchPresence({ userId: user.id, @@ -70,13 +48,7 @@ export async function verifyEmail(ctx: ApiContext, data: VerifyEmailRequest): Pr export async function resendVerificationEmail(ctx: ApiContext, user: User): Promise { const {users, email, rateLimit} = ctx.services; assertNonBotUser(user); - const allowReverification = - user.suspiciousActivityFlags !== null && - ((user.suspiciousActivityFlags & SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL) !== 0 || - (user.suspiciousActivityFlags & SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE) !== 0 || - (user.suspiciousActivityFlags & SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE) !== 0 || - (user.suspiciousActivityFlags & SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE) !== 0); - if (user.emailVerified && !allowReverification) { + if (user.emailVerified) { return; } const limit = await rateLimit.checkLimit({ diff --git a/fluxer_api/src/api/auth/AuthPhone.ts b/fluxer_api/src/api/auth/AuthPhone.ts deleted file mode 100644 index 2bdba99ba..000000000 --- a/fluxer_api/src/api/auth/AuthPhone.ts +++ /dev/null @@ -1,147 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import type {ApiContext} from '@app/api/ApiContext'; -import { - errorForPhoneReply, - getPhoneVerificationClient, - type PhoneRpcRequestInfo, -} from '@app/api/auth/PhoneVerificationClient'; -import type {UserID} from '@app/api/BrandedTypes'; -import {emitActivity} from '@app/api/infrastructure/activity/ActivityEvents'; -import type {Challenge, PhoneChannel} from '@app/api/infrastructure/activity/Contract.generated'; -import {Logger} from '@app/api/Logger'; -import {getAdminRepository} from '@app/api/middleware/ServiceSingletons'; -import type {User} from '@app/api/models/User'; -import {accountStateDepsFromContext, applyPhoneVerified, outcomeOf} from '@app/api/user/services/AccountStateApplier'; -import {UserFlags} from '@fluxer/constants/src/UserConstants'; -import {BotUserAuthEndpointAccessDeniedError} from '@fluxer/errors/src/domains/auth/BotUserAuthEndpointAccessDeniedError'; -import {InvalidPhoneNumberError} from '@fluxer/errors/src/domains/auth/InvalidPhoneNumberError'; -import {PhoneVerificationRequiredError} from '@fluxer/errors/src/domains/auth/PhoneVerificationRequiredError'; -import {SmsVerificationUnavailableError} from '@fluxer/errors/src/domains/auth/SmsVerificationUnavailableError'; -import {UnknownUserError} from '@fluxer/errors/src/domains/user/UnknownUserError'; -import {PHONE_E164_REGEX} from '@fluxer/schema/src/primitives/UserValidators'; - -type PhoneVerificationStartResult = - | {channel: 'sms'} - | { - channel: 'inbound_challenge'; - challengeCode: string; - ourNumber: string; - expiresAt: Date; - }; - -interface IssuedChallenge { - challengeCode: string; - ourNumber: string; - expiresAt: Date; -} - -interface SendPhoneVerificationOptions { - clientIp: string; - channel?: PhoneChannel; - hasCaptchaToken: boolean; - verifyCaptcha: () => Promise; -} - -function assertPhoneFormat(phone: string): void { - if (!PHONE_E164_REGEX.test(phone)) { - throw new InvalidPhoneNumberError(); - } -} - -async function loadRequestingUser(ctx: ApiContext, userId: UserID): Promise { - const user = await ctx.services.users.findUnique(userId); - if (!user) throw new UnknownUserError(); - if (user.isBot) throw new BotUserAuthEndpointAccessDeniedError(); - return user; -} - -function requestInfo(ctx: ApiContext, userId: UserID, phone: string): PhoneRpcRequestInfo { - return {userId: userId.toString(), phone, requestId: ctx.request.requestId}; -} - -function toIssuedChallenge(challenge: Challenge): IssuedChallenge { - return { - challengeCode: challenge.challenge_code, - ourNumber: challenge.our_number, - expiresAt: new Date(challenge.expires_at_ms), - }; -} - -export async function sendPhoneVerificationCode( - ctx: ApiContext, - phone: string, - userId: UserID, - options: SendPhoneVerificationOptions, -): Promise { - assertPhoneFormat(phone); - const user = await loadRequestingUser(ctx, userId); - const start = (captchaPassed: boolean) => - getPhoneVerificationClient().start( - { - user_id: user.id.toString(), - user_flags: user.flags.toString(), - has_verified_phone: user.hasVerifiedPhone, - phone, - requested_channel: options.channel ?? null, - client_ip: options.clientIp, - captcha_passed: captchaPassed, - }, - requestInfo(ctx, userId, phone), - ); - const captchaPassed = options.hasCaptchaToken && (await options.verifyCaptcha()); - const reply = await start(captchaPassed); - if (reply.result === 'error' && reply.code === 'captcha_required' && !captchaPassed) { - await options.verifyCaptcha(); - Logger.warn({userId: userId.toString()}, 'Phone verification asked for a captcha without a captcha check'); - } - switch (reply.result) { - case 'sms_sent': - return {channel: 'sms'}; - case 'inbound_challenge': - return {channel: 'inbound_challenge', ...toIssuedChallenge(reply)}; - case 'error': - throw errorForPhoneReply(reply); - } -} - -export async function startInboundPhoneChallenge(ctx: ApiContext, userId: UserID): Promise { - const user = await loadRequestingUser(ctx, userId); - const reply = await getPhoneVerificationClient().challenge( - {user_id: user.id.toString()}, - requestInfo(ctx, userId, ''), - ); - if (reply.result === 'error') throw errorForPhoneReply(reply); - return toIssuedChallenge(reply); -} - -export async function verifyPhoneCode(ctx: ApiContext, phone: string, code: string, userId: UserID): Promise { - assertPhoneFormat(phone); - const user = await ctx.services.users.findUnique(userId); - if (!user || (user.flags & UserFlags.DELETED) !== 0n) throw new PhoneVerificationRequiredError(); - if (user.isBot) throw new BotUserAuthEndpointAccessDeniedError(); - const reply = await getPhoneVerificationClient().check( - { - user_id: user.id.toString(), - user_flags: user.flags.toString(), - phone, - code, - client_ip: ctx.request.clientIp ?? '', - }, - requestInfo(ctx, userId, phone), - ); - if (reply.result === 'error') throw errorForPhoneReply(reply); - const action = reply.action; - if (action.type !== 'phone_verified' || action.user_id !== user.id.toString()) { - Logger.error({actionType: action.type}, 'Phone verification returned an unexpected action'); - throw new SmsVerificationUnavailableError(); - } - if (action.expires_at_ms <= Date.now()) { - const expired = outcomeOf(action, 'expired'); - await emitActivity('action_outcome', action.key, expired, null, expired.action_id); - throw new SmsVerificationUnavailableError(); - } - const outcome = await applyPhoneVerified(accountStateDepsFromContext(ctx, getAdminRepository()), action); - await emitActivity('action_outcome', action.key, outcome, null, outcome.action_id); - if (outcome.status === 'ineligible') throw new PhoneVerificationRequiredError(); -} diff --git a/fluxer_api/src/api/auth/AuthRegistration.ts b/fluxer_api/src/api/auth/AuthRegistration.ts index 8baeb69af..382caa03c 100644 --- a/fluxer_api/src/api/auth/AuthRegistration.ts +++ b/fluxer_api/src/api/auth/AuthRegistration.ts @@ -224,7 +224,6 @@ export async function register( stripe_subscription_id: null, stripe_customer_id: null, has_ever_purchased: null, - suspicious_activity_flags: null, terms_agreed_at: requiresTermsConsent ? now : null, privacy_agreed_at: requiresPrivacyConsent ? now : null, last_active_at: now, @@ -303,7 +302,6 @@ export async function register( locale: userLocale, timezone: null, invite_code: data.invite_code?.trim() || null, - suspicious_flags: user.suspiciousActivityFlags ?? 0, flags: user.flags.toString(), }, null, diff --git a/fluxer_api/src/api/auth/AuthUtility.ts b/fluxer_api/src/api/auth/AuthUtility.ts index bb0efd1b2..b769b4b99 100644 --- a/fluxer_api/src/api/auth/AuthUtility.ts +++ b/fluxer_api/src/api/auth/AuthUtility.ts @@ -110,14 +110,8 @@ export async function handleBanStatus(ctx: ApiContext, user: User): Promise flags & ~UserFlags.DISABLED)) ?? patched; } return user; } @@ -130,11 +124,7 @@ export async function reactivateOnSignIn( const {users} = ctx.services; let currentUser = user; if ((currentUser.flags & UserFlags.DISABLED) !== 0n && !currentUser.tempBannedUntil) { - currentUser = await users.patchUpsert( - currentUser.id, - {flags: currentUser.flags & ~UserFlags.DISABLED}, - currentUser.toRow(), - ); + currentUser = (await users.updateFlags(currentUser.id, (flags) => flags & ~UserFlags.DISABLED)) ?? currentUser; Logger.info({userId: currentUser.id}, 'Auto-undisabled user on sign-in'); } if ((currentUser.flags & UserFlags.SELF_DELETED) !== 0n) { diff --git a/fluxer_api/src/api/auth/PhoneVerificationClient.ts b/fluxer_api/src/api/auth/PhoneVerificationClient.ts deleted file mode 100644 index 8364d904d..000000000 --- a/fluxer_api/src/api/auth/PhoneVerificationClient.ts +++ /dev/null @@ -1,250 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {createHash, randomUUID} from 'node:crypto'; -import type { - ChallengeReply, - ChallengeReq, - CheckReply, - CheckReq, - PhoneError, - StartReply, - StartReq, -} from '@app/api/infrastructure/activity/Contract.generated'; -import { - HEADER, - PHONE_CLIENT_TIMEOUT_SLACK_MS, - PHONE_DEADLINE_MS, - PHONE_RETRY_MIN_REMAINING_MS, - PHONE_RPC_VERSION, - RPC_PHONE_CHALLENGE, - RPC_PHONE_CHECK, - RPC_PHONE_START, -} from '@app/api/infrastructure/activity/Contract.generated'; -import {Logger} from '@app/api/Logger'; -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {InvalidPhoneNumberError} from '@fluxer/errors/src/domains/auth/InvalidPhoneNumberError'; -import {InvalidPhoneVerificationCodeError} from '@fluxer/errors/src/domains/auth/InvalidPhoneVerificationCodeError'; -import {PhoneAlreadyUsedError} from '@fluxer/errors/src/domains/auth/PhoneAlreadyUsedError'; -import {PhoneCountryNotSupportedError} from '@fluxer/errors/src/domains/auth/PhoneCountryNotSupportedError'; -import {PhoneInboundVerificationRequiredError} from '@fluxer/errors/src/domains/auth/PhoneInboundVerificationRequiredError'; -import {PhoneLookupUnavailableError} from '@fluxer/errors/src/domains/auth/PhoneLookupUnavailableError'; -import {PhoneNumberNotInServiceError} from '@fluxer/errors/src/domains/auth/PhoneNumberNotInServiceError'; -import {PhoneNumberNotMobileError} from '@fluxer/errors/src/domains/auth/PhoneNumberNotMobileError'; -import {PhoneVerificationNeedsReviewError} from '@fluxer/errors/src/domains/auth/PhoneVerificationNeedsReviewError'; -import {SmsVerificationUnavailableError} from '@fluxer/errors/src/domains/auth/SmsVerificationUnavailableError'; -import {RateLimitError} from '@fluxer/errors/src/domains/core/RateLimitError'; -import type {FluxerError} from '@fluxer/errors/src/FluxerError'; -import {type NatsConnection, headers as natsHeaders, RequestError, TimeoutError} from '@nats-io/transport-node'; - -type PhoneOp = keyof typeof PHONE_DEADLINE_MS; - -export interface PhoneRpcTransport { - request( - subject: string, - payload: string, - options: {timeoutMs: number; headers: Record}, - ): Promise; -} - -export class PhoneRpcUnreachableError extends Error { - constructor( - readonly reason: 'no_responders' | 'timeout' | 'not_configured', - options?: {cause?: unknown}, - ) { - super(`Phone verification service unreachable: ${reason}`, options); - this.name = 'PhoneRpcUnreachableError'; - } -} - -export interface PhoneRpcRequestInfo { - userId: string; - phone: string; - requestId: string; -} - -const SUBJECTS: Record = { - start: RPC_PHONE_START, - check: RPC_PHONE_CHECK, - challenge: RPC_PHONE_CHALLENGE, -}; -const rpcCounts = new Map(); - -function countRpc(op: PhoneOp, result: string): void { - const key = `op="${op}",result="${result}"`; - rpcCounts.set(key, (rpcCounts.get(key) ?? 0) + 1); -} - -export function renderPhoneRpcMetrics(): string { - return [ - '# HELP fluxer_api_phone_rpc_total Phone verification requests by operation and result', - '# TYPE fluxer_api_phone_rpc_total counter', - ...[...rpcCounts].map(([labels, value]) => `fluxer_api_phone_rpc_total{${labels}} ${value}`), - ].join('\n'); -} - -export function phoneIdempotencyKey(op: PhoneOp, info: PhoneRpcRequestInfo, nonce: string): string { - return createHash('sha256').update(`${op}\n${info.userId}\n${info.phone}\n${nonce}`).digest('base64url'); -} - -function replyLabel(reply: {result: string; code?: unknown}): string { - return reply.result === 'error' && typeof reply.code === 'string' ? reply.code : reply.result; -} - -export function natsPhoneRpcTransport(connection: () => NatsConnection | null): PhoneRpcTransport { - return { - async request(subject, payload, options) { - const nc = connection(); - if (!nc) throw new PhoneRpcUnreachableError('not_configured'); - const h = natsHeaders(); - for (const [name, value] of Object.entries(options.headers)) h.set(name, value); - try { - const reply = await nc.request(subject, payload, {timeout: options.timeoutMs, headers: h}); - return reply.string(); - } catch (error) { - if (error instanceof RequestError && error.isNoResponders()) { - throw new PhoneRpcUnreachableError('no_responders', {cause: error}); - } - if (error instanceof TimeoutError || error instanceof RequestError) { - throw new PhoneRpcUnreachableError('timeout', {cause: error}); - } - throw error; - } - }, - }; -} - -export class PhoneVerificationClient { - constructor( - private readonly transport: PhoneRpcTransport | null, - private readonly now: () => number = Date.now, - private readonly nonce: () => string = randomUUID, - ) {} - - start(req: Omit, info: PhoneRpcRequestInfo): Promise { - return this.call('start', {v: PHONE_RPC_VERSION, ...req}, info); - } - - check(req: Omit, info: PhoneRpcRequestInfo): Promise { - return this.call('check', {v: PHONE_RPC_VERSION, ...req}, info); - } - - challenge(req: Omit, info: PhoneRpcRequestInfo): Promise { - return this.call('challenge', {v: PHONE_RPC_VERSION, ...req}, info); - } - - private async call(op: PhoneOp, body: object, info: PhoneRpcRequestInfo): Promise { - if (!this.transport) { - countRpc(op, 'not_configured'); - throw new SmsVerificationUnavailableError(); - } - const deadline = this.now() + PHONE_DEADLINE_MS[op]; - const headers = { - [HEADER.deadline]: String(deadline), - [HEADER.idempotencyKey]: phoneIdempotencyKey(op, info, this.nonce()), - [HEADER.requestId]: info.requestId, - }; - const payload = JSON.stringify(body); - for (let attempt = 0; ; attempt++) { - const remaining = deadline - this.now(); - try { - const raw = await this.transport.request(SUBJECTS[op], payload, { - timeoutMs: Math.max(1, remaining + PHONE_CLIENT_TIMEOUT_SLACK_MS), - headers, - }); - const reply = parseReply(raw); - if (!reply) { - countRpc(op, 'invalid_reply'); - Logger.error({op}, 'Phone verification service returned an unreadable reply'); - throw new SmsVerificationUnavailableError(); - } - countRpc(op, replyLabel(reply)); - return reply; - } catch (error) { - if (!(error instanceof PhoneRpcUnreachableError)) throw error; - const left = deadline - this.now(); - if (attempt === 0 && error.reason !== 'not_configured' && left >= PHONE_RETRY_MIN_REMAINING_MS) { - continue; - } - countRpc(op, error.reason); - Logger.warn({op, reason: error.reason}, 'Phone verification service unreachable'); - throw new SmsVerificationUnavailableError(); - } - } - } -} - -function parseReply(raw: string): T | null { - try { - const value = JSON.parse(raw) as unknown; - if (typeof value === 'object' && value !== null && typeof (value as {result?: unknown}).result === 'string') { - return value as T; - } - } catch { - return null; - } - return null; -} - -export function errorForPhoneReply(error: PhoneError): FluxerError { - switch (error.code) { - case 'invalid_phone': - return new InvalidPhoneNumberError(); - case 'country_not_supported': - return new PhoneCountryNotSupportedError(); - case 'lookup_unavailable': - return new PhoneLookupUnavailableError(); - case 'not_in_service': - return new PhoneNumberNotInServiceError(); - case 'not_mobile': - return new PhoneNumberNotMobileError(); - case 'needs_review': - return new PhoneVerificationNeedsReviewError(); - case 'inbound_required': - return new PhoneInboundVerificationRequiredError(); - case 'already_used': - return new PhoneAlreadyUsedError(); - case 'captcha_required': { - const retryAfter = 24 * 60 * 60; - return new RateLimitError({ - code: APIErrorCodes.PHONE_RATE_LIMIT_EXCEEDED, - retryAfter, - retryAfterDecimal: retryAfter, - limit: 1, - resetTime: new Date(Date.now() + retryAfter * 1000), - resetAfterDecimal: retryAfter, - scope: 'user', - }); - } - case 'invalid_code': - return new InvalidPhoneVerificationCodeError(); - case 'rate_limited': { - const retryAfter = error.retry_after_s ?? 60; - return new RateLimitError({ - code: APIErrorCodes.PHONE_RATE_LIMIT_EXCEEDED, - message: error.message ?? undefined, - retryAfter, - retryAfterDecimal: retryAfter, - limit: error.limit ?? 1, - resetTime: new Date(Date.now() + retryAfter * 1000), - resetAfterDecimal: retryAfter, - scope: error.rate_limit_scope ?? 'user', - }); - } - case 'unsupported_contract': - Logger.error({code: error.code}, 'Phone verification service rejected the request contract'); - return new SmsVerificationUnavailableError(); - case 'unavailable': - case 'deadline_exceeded': - return new SmsVerificationUnavailableError(); - } -} - -let phoneConnection: (() => NatsConnection | null) | null = null; - -export function setPhoneRpcConnection(connection: (() => NatsConnection | null) | null): void { - phoneConnection = connection; -} - -export function getPhoneVerificationClient(): PhoneVerificationClient { - return new PhoneVerificationClient(phoneConnection ? natsPhoneRpcTransport(phoneConnection) : null); -} diff --git a/fluxer_api/src/api/auth/services/SsoService.ts b/fluxer_api/src/api/auth/services/SsoService.ts index 65683c348..4bb9d2f20 100644 --- a/fluxer_api/src/api/auth/services/SsoService.ts +++ b/fluxer_api/src/api/auth/services/SsoService.ts @@ -492,7 +492,6 @@ export class SsoService { email: claims.email.toLowerCase(), email_verified: claims.emailVerified, email_bounced: false, - phone: null, password_hash: null, password_last_changed_at: null, totp_secret: null, @@ -520,7 +519,6 @@ export class SsoService { stripe_subscription_id: null, stripe_customer_id: null, has_ever_purchased: false, - suspicious_activity_flags: 0, terms_agreed_at: now, privacy_agreed_at: now, last_active_at: now, @@ -585,7 +583,6 @@ export class SsoService { locale: user.locale, timezone: null, invite_code: null, - suspicious_flags: user.suspiciousActivityFlags ?? 0, flags: user.flags.toString(), }, null, diff --git a/fluxer_api/src/api/auth/tests/AuthTestUtils.ts b/fluxer_api/src/api/auth/tests/AuthTestUtils.ts index abfcb4a20..48fad628d 100644 --- a/fluxer_api/src/api/auth/tests/AuthTestUtils.ts +++ b/fluxer_api/src/api/auth/tests/AuthTestUtils.ts @@ -123,7 +123,6 @@ export async function createTestAccount( if (!params?.skipEmailVerification) { const securityFlagsBuilder = createBuilder(harness, '').post(`/test/users/${reg.user_id}/security-flags`).body({ email_verified: true, - suspicious_activity_flags: 0, }); if (ipAddress) { securityFlagsBuilder.header('x-forwarded-for', ipAddress); diff --git a/fluxer_api/src/api/auth/tests/BouncedEmailRecoveryFlow.test.ts b/fluxer_api/src/api/auth/tests/BouncedEmailRecoveryFlow.test.ts index c1d41885f..2518610ed 100644 --- a/fluxer_api/src/api/auth/tests/BouncedEmailRecoveryFlow.test.ts +++ b/fluxer_api/src/api/auth/tests/BouncedEmailRecoveryFlow.test.ts @@ -29,14 +29,12 @@ interface UserPrivateResponse { email: string | null; verified: boolean; email_bounced?: boolean; - required_actions: Array | null; } async function markEmailAsBounced(harness: ApiTestHarness, account: TestAccount): Promise { await createBuilderWithoutAuth(harness) .post(`/test/users/${account.userId}/security-flags`) .body({ - suspicious_activity_flag_names: ['REQUIRE_REVERIFIED_EMAIL'], email_bounced: true, email_verified: false, }) @@ -63,7 +61,8 @@ describe('Bounced email recovery flow', () => { .get('/users/@me') .expect(200) .execute(); - expect(initialMe.required_actions).toContain('REQUIRE_REVERIFIED_EMAIL'); + expect(initialMe.email_bounced).toBe(true); + expect(initialMe.verified).toBe(false); const startResponse = await createBuilder(harness, account.token) .post('/users/@me/email-change/start') .body({}) @@ -92,7 +91,6 @@ describe('Bounced email recovery flow', () => { expect(updatedUser.email).toBe(replacementEmail); expect(updatedUser.verified).toBe(true); expect(updatedUser.email_bounced).toBe(false); - expect(updatedUser.required_actions).toEqual([]); const finalMe = await createBuilder(harness, account.token).get('/users/@me').execute(); expect(finalMe.email).toBe(replacementEmail); expect(finalMe.email_bounced).toBe(false); diff --git a/fluxer_api/src/api/auth/tests/CaptchaChallenge.test.ts b/fluxer_api/src/api/auth/tests/CaptchaChallenge.test.ts index 92f9e40cc..b1a4a6561 100644 --- a/fluxer_api/src/api/auth/tests/CaptchaChallenge.test.ts +++ b/fluxer_api/src/api/auth/tests/CaptchaChallenge.test.ts @@ -1,7 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later -import {setPhoneRpcConnection} from '@app/api/auth/PhoneVerificationClient'; -import {createTestAccount, setUserACLs, type TestAccount} from '@app/api/auth/tests/AuthTestUtils'; +import {createTestAccount, setUserACLs} from '@app/api/auth/tests/AuthTestUtils'; import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness'; import { CAPTCHA_TEST_HEADER, @@ -13,10 +12,8 @@ import {HTTP_STATUS} from '@app/api/test/TestConstants'; import {createBuilder, createBuilderWithoutAuth, type TestRequestBuilder} from '@app/api/test/TestRequestBuilder'; import {AdminACLs} from '@fluxer/constants/src/AdminACLs'; import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {SuspiciousActivityFlags} from '@fluxer/constants/src/UserConstants'; import type {CaptchaConfigResponse} from '@fluxer/schema/src/domains/admin/CaptchaSchemas'; -import type {NatsConnection} from '@nats-io/transport-node'; -import {afterAll, afterEach, beforeAll, beforeEach, describe, expect, it} from 'vitest'; +import {afterAll, beforeAll, beforeEach, describe, expect, it} from 'vitest'; async function rejectWith(builder: TestRequestBuilder, code: string): Promise { const {json} = await builder.expect(HTTP_STATUS.BAD_REQUEST, code).executeWithResponse(); @@ -31,58 +28,6 @@ function forgot(harness: ApiTestHarness): TestRequestBuilder { .body({email: 'captcha-nobody@example.com'}); } -async function createPhoneRequiredAccount(harness: ApiTestHarness): Promise { - const account = await createTestAccount(harness); - await createBuilder(harness, '') - .post(`/test/users/${account.userId}/security-flags`) - .body({email_verified: true, suspicious_activity_flags: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE}) - .expect(HTTP_STATUS.OK) - .execute(); - return account; -} - -function usePhoneServiceThatAsksForCaptcha(): Array { - const captchaPassed: Array = []; - const connection = { - async request(_subject: string, payload: string) { - const passed = (JSON.parse(payload) as {captcha_passed: boolean}).captcha_passed; - captchaPassed.push(passed); - const reply = passed - ? {result: 'sms_sent'} - : { - result: 'error', - code: 'captcha_required', - retry_after_s: null, - rate_limit_scope: null, - limit: null, - message: null, - }; - return {string: () => JSON.stringify(reply)}; - }, - } as unknown as NatsConnection; - setPhoneRpcConnection(() => connection); - return captchaPassed; -} - -function sendPhoneCode(harness: ApiTestHarness, account: TestAccount): TestRequestBuilder { - return createBuilder(harness, account.token) - .post('/users/@me/phone/send-verification') - .header(CAPTCHA_TEST_HEADER, 'true') - .body({phone: '+15551230001'}); -} - -async function turnCaptchaOff(harness: ApiTestHarness): Promise { - const admin = await setUserACLs(harness, await createTestAccount(harness), [ - AdminACLs.AUTHENTICATE, - AdminACLs.INSTANCE_CONFIG_VIEW, - AdminACLs.INSTANCE_CONFIG_UPDATE, - ]); - await createBuilder(harness, admin.token) - .patch('/admin/instance/config') - .body({captcha: {enabled: false}}) - .execute(); -} - describe('Captcha challenge', () => { let harness: ApiTestHarness; @@ -95,10 +40,6 @@ describe('Captcha challenge', () => { await useCheapCaptcha(); }); - afterEach(() => { - setPhoneRpcConnection(null); - }); - afterAll(async () => { await harness.shutdown(); }); @@ -157,29 +98,6 @@ describe('Captcha challenge', () => { await forgot(harness).expect(HTTP_STATUS.NO_CONTENT).execute(); }); - it('challenges a phone send the phone service flags and lets it through once solved', async () => { - const captchaPassed = usePhoneServiceThatAsksForCaptcha(); - const account = await createPhoneRequiredAccount(harness); - const required = await rejectWith(sendPhoneCode(harness, account), APIErrorCodes.CAPTCHA_REQUIRED); - expect(required.altcha_challenge?.signature).toBeTruthy(); - expect(captchaPassed).toEqual([false]); - const token = await solveCaptchaChallenge(required); - - await sendPhoneCode(harness, account).header('X-Captcha-Token', token).expect(HTTP_STATUS.OK).execute(); - expect(captchaPassed).toEqual([false, true]); - }); - - it('refuses a flagged phone send while the check is off', async () => { - await turnCaptchaOff(harness); - const captchaPassed = usePhoneServiceThatAsksForCaptcha(); - const account = await createPhoneRequiredAccount(harness); - - const {response, json} = await sendPhoneCode(harness, account).executeRaw(); - expect(response.status).toBe(429); - expect(json).toMatchObject({code: APIErrorCodes.PHONE_RATE_LIMIT_EXCEEDED}); - expect(captchaPassed).toEqual([false]); - }); - it('skips the check in test mode unless the request opts in', async () => { await createBuilderWithoutAuth(harness) .post('/auth/forgot') diff --git a/fluxer_api/src/api/auth/tests/EmailChangeFlow.test.ts b/fluxer_api/src/api/auth/tests/EmailChangeFlow.test.ts index 2166d2799..66550e9ce 100644 --- a/fluxer_api/src/api/auth/tests/EmailChangeFlow.test.ts +++ b/fluxer_api/src/api/auth/tests/EmailChangeFlow.test.ts @@ -41,7 +41,6 @@ interface EmailChangeVerifyNewResponse { interface UserPrivateResponse { id: string; email: string; - phone?: string | null; username: string; discriminator: string; global_name: string; @@ -50,7 +49,6 @@ interface UserPrivateResponse { mfa_enabled: boolean; authenticator_types: Array; password_last_changed_at?: string; - required_actions?: Array | null; has_ever_purchased: boolean; } @@ -343,79 +341,13 @@ describe('Email change flow', () => { .execute(); expect(updated.email).toBe(newEmail); }); - it('allows suspicious accounts to complete email change and clears email-related flags', async () => { - const account = await createTestAccount(harness); - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({ - suspicious_activity_flag_names: ['REQUIRE_REVERIFIED_EMAIL', 'REQUIRE_VERIFIED_PHONE'], - }) - .expect(200) - .execute(); - const login = await loginUser(harness, {email: account.email, password: account.password}); - if ('mfa' in login) { - throw new Error('Expected non-MFA login'); - } - const suspiciousAccount: TestAccount = {...account, token: login.token}; - const startResp = await startEmailChange(harness, suspiciousAccount, account.password); - const emails = await listTestEmails(harness, {recipient: account.email}); - const originalEmail = findLastTestEmail(emails, 'email_change_original'); - expect(startResp.require_original).toBe(true); - expect(originalEmail?.metadata?.code).toBeDefined(); - const originalProof = await verifyOriginalEmailChange( - harness, - suspiciousAccount, - startResp.ticket, - originalEmail!.metadata!.code!, - account.password, - ); - const newEmail = `integration-suspicious-${Date.now()}@example.com`; - await requestNewEmailChange( - harness, - suspiciousAccount, - startResp.ticket, - newEmail, - originalProof, - account.password, - ); - const newEmails = await listTestEmails(harness, {recipient: newEmail}); - const newEmailData = findLastTestEmail(newEmails, 'email_change_new'); - expect(newEmailData?.metadata?.code).toBeDefined(); - const token = await verifyNewEmailChange( - harness, - suspiciousAccount, - startResp.ticket, - newEmailData!.metadata!.code!, - originalProof, - account.password, - ); - const updated = await createBuilder(harness, suspiciousAccount.token) - .patch('/users/@me') - .body({ - email_token: token, - password: account.password, - }) - .expect(200) - .execute(); - expect(updated.email).toBe(newEmail); - expect(updated.verified).toBe(true); - expect(updated.required_actions).toContain('REQUIRE_VERIFIED_PHONE'); - expect(updated.required_actions).not.toContain('REQUIRE_REVERIFIED_EMAIL'); - }); - it('does not add suspicion on email change for users who have ever purchased', async () => { + it('applies email changes for users who have ever purchased', async () => { const account = await createTestAccount(harness); await createBuilderWithoutAuth(harness) .post(`/test/users/${account.userId}/premium`) .body({has_ever_purchased: true}) .expect(200) .execute(); - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({ - suspicious_activity_flag_names: ['REQUIRE_REVERIFIED_EMAIL'], - }) - .expect(200) - .execute(); const startResp = await startEmailChange(harness, account, account.password); let originalProof: string; if (startResp.require_original) { @@ -455,8 +387,6 @@ describe('Email change flow', () => { .execute(); expect(updated.email).toBe(newEmail); expect(updated.has_ever_purchased).toBe(true); - expect(updated.required_actions).not.toContain('REQUIRE_REVERIFIED_EMAIL'); - expect(updated.required_actions).not.toContain('REQUIRE_VERIFIED_PHONE'); }); it('applies ordinary claimed email changes', async () => { const account = await createTestAccount(harness); @@ -493,7 +423,8 @@ describe('Email change flow', () => { }) .expect(200) .execute(); - expect(updated.required_actions ?? []).not.toContain('REQUIRE_VERIFIED_PHONE'); + expect(updated.email).toBe(newEmail); + expect(updated.verified).toBe(true); }); it('requires MFA (not password) for email_token apply when user has TOTP enabled', async () => { const account = await createTestAccount(harness); @@ -751,7 +682,6 @@ describe('Email change flow', () => { .execute(); expect(updated.email).toBe(newEmail); expect(updated.verified).toBe(true); - expect(updated.required_actions).not.toContain('REQUIRE_VERIFIED_PHONE'); }); it('e2e: reporter scenario — MFA user with TOTP completes "Use Different Email" recovery without sudo loop', async () => { const account = await createTestAccount(harness); diff --git a/fluxer_api/src/api/auth/tests/EmailRevertFlow.test.ts b/fluxer_api/src/api/auth/tests/EmailRevertFlow.test.ts index 6c0eb8e5f..97538389d 100644 --- a/fluxer_api/src/api/auth/tests/EmailRevertFlow.test.ts +++ b/fluxer_api/src/api/auth/tests/EmailRevertFlow.test.ts @@ -39,7 +39,6 @@ interface EmailChangeVerifyNewResponse { interface UserPrivateResponse { id: string; email: string; - has_verified_phone: boolean; username: string; discriminator: string; global_name: string; @@ -192,7 +191,6 @@ describe('Email revert flow', () => { expect(user.email).toBe(account.email); expect(user.mfa_enabled).toBe(false); expect(user.authenticator_types?.length ?? 0).toBe(0); - expect(user.has_verified_phone).toBe(false); expect(user.password_last_changed_at).toBeDefined(); const login = await loginUser(harness, {email: account.email, password: newPassword}); expect('mfa' in login).toBe(false); diff --git a/fluxer_api/src/api/auth/tests/EmailVerificationSuspiciousFlags.test.ts b/fluxer_api/src/api/auth/tests/EmailVerificationSuspiciousFlags.test.ts deleted file mode 100644 index 3e5b224ce..000000000 --- a/fluxer_api/src/api/auth/tests/EmailVerificationSuspiciousFlags.test.ts +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import { - clearTestEmails, - createAuthHarness, - createTestAccount, - findLastTestEmail, - listTestEmails, -} from '@app/api/auth/tests/AuthTestUtils'; -import type {ApiTestHarness} from '@app/api/test/ApiTestHarness'; -import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder'; -import {SuspiciousActivityFlags} from '@fluxer/constants/src/UserConstants'; -import {afterAll, beforeAll, beforeEach, describe, expect, it} from 'vitest'; - -interface SuspiciousActivityErrorResponse { - error: string; - data: { - suspicious_activity_flags: number; - }; -} - -describe('Email verification suspicious flags', () => { - let harness: ApiTestHarness; - beforeAll(async () => { - harness = await createAuthHarness(); - }); - beforeEach(async () => { - await harness.reset(); - await clearTestEmails(harness); - }); - afterAll(async () => { - await harness?.shutdown(); - }); - it('clears only email-related suspicious flags after verification', async () => { - const account = await createTestAccount(harness); - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({ - suspicious_activity_flag_names: ['REQUIRE_REVERIFIED_EMAIL', 'REQUIRE_VERIFIED_PHONE'], - }) - .expect(200) - .execute(); - const checkSuspiciousFlags = async (expected: number): Promise => { - const errBody = await createBuilder(harness, account.token) - .patch('/users/@me') - .body({bio: 'blocked-while-suspicious'}) - .expect(403) - .execute(); - expect(errBody.data.suspicious_activity_flags).toBe(expected); - }; - await checkSuspiciousFlags( - SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL | SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE, - ); - await createBuilder(harness, account.token).post('/auth/verify/resend').body({}).expect(204).execute(); - const emails = await listTestEmails(harness, {recipient: account.email}); - const verificationEmail = findLastTestEmail(emails, 'email_verification'); - expect(verificationEmail?.metadata?.token).toBeDefined(); - const token = verificationEmail!.metadata!.token!; - await createBuilderWithoutAuth(harness).post('/auth/verify').body({token}).expect(204).execute(); - await checkSuspiciousFlags(SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE); - }); -}); diff --git a/fluxer_api/src/api/auth/tests/OriginHandoff.test.ts b/fluxer_api/src/api/auth/tests/OriginHandoff.test.ts index 2a0351194..084487407 100644 --- a/fluxer_api/src/api/auth/tests/OriginHandoff.test.ts +++ b/fluxer_api/src/api/auth/tests/OriginHandoff.test.ts @@ -8,7 +8,6 @@ import type {ApiTestHarness} from '@app/api/test/ApiTestHarness'; import {HTTP_STATUS} from '@app/api/test/TestConstants'; import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder'; import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {SuspiciousActivityFlags} from '@fluxer/constants/src/UserConstants'; import { ORIGIN_HANDOFF_MAX_PAYLOAD_LENGTH, type OriginHandoffCreateResponse, @@ -113,19 +112,6 @@ describe('Origin handoff', () => { .execute(); }); - it('refuses to create a handoff for an account flagged as suspicious', async () => { - const account = await createTestAccount(harness); - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({suspicious_activity_flags: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE}) - .execute(); - await createBuilder(harness, account.token) - .post(CREATE_PATH) - .body({nonce_hash: createNonce().nonceHash, payload: PAYLOAD}) - .expect(HTTP_STATUS.FORBIDDEN, APIErrorCodes.ACCOUNT_SUSPICIOUS_ACTIVITY) - .execute(); - }); - it('refuses a create body larger than the payload ceiling before parsing it', async () => { const account = await createTestAccount(harness); await createBuilder(harness, account.token) diff --git a/fluxer_api/src/api/auth/tests/PhoneVerificationClient.test.ts b/fluxer_api/src/api/auth/tests/PhoneVerificationClient.test.ts deleted file mode 100644 index 006793e01..000000000 --- a/fluxer_api/src/api/auth/tests/PhoneVerificationClient.test.ts +++ /dev/null @@ -1,215 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {createHash} from 'node:crypto'; -import { - errorForPhoneReply, - natsPhoneRpcTransport, - type PhoneRpcTransport, - PhoneRpcUnreachableError, - PhoneVerificationClient, - phoneIdempotencyKey, - renderPhoneRpcMetrics, -} from '@app/api/auth/PhoneVerificationClient'; -import {HEADER, RPC_PHONE_CHECK, RPC_PHONE_START} from '@app/api/infrastructure/activity/Contract.generated'; -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {PhoneAlreadyUsedError} from '@fluxer/errors/src/domains/auth/PhoneAlreadyUsedError'; -import {SmsVerificationUnavailableError} from '@fluxer/errors/src/domains/auth/SmsVerificationUnavailableError'; -import {RateLimitError} from '@fluxer/errors/src/domains/core/RateLimitError'; -import {connect, type NatsConnection} from '@nats-io/transport-node'; -import {afterAll, beforeAll, describe, expect, it} from 'vitest'; - -interface RecordedRequest { - subject: string; - payload: Record; - timeoutMs: number; - headers: Record; -} - -class ScriptedTransport implements PhoneRpcTransport { - readonly requests: Array = []; - constructor(private readonly script: Array) {} - - async request(subject: string, payload: string, options: {timeoutMs: number; headers: Record}) { - this.requests.push({subject, payload: JSON.parse(payload), timeoutMs: options.timeoutMs, headers: options.headers}); - const next = this.script.shift(); - if (next === undefined) throw new Error('no scripted reply'); - if (next instanceof Error) throw next; - return next; - } -} - -const INFO = {userId: '1174109840998400001', phone: '+15555550123', requestId: 'req-1'}; -const START = { - user_id: INFO.userId, - user_flags: '0', - has_verified_phone: false, - phone: INFO.phone, - requested_channel: null, - client_ip: '203.0.113.9', - captcha_passed: false, -}; - -describe('phone verification client', () => { - it('sends an absolute deadline, a stable idempotency key and the request id', async () => { - let now = 1_000_000; - const transport = new ScriptedTransport([JSON.stringify({result: 'sms_sent'})]); - const client = new PhoneVerificationClient( - transport, - () => now, - () => 'nonce-1', - ); - const reply = await client.start(START, INFO); - expect(reply).toEqual({result: 'sms_sent'}); - const [request] = transport.requests; - expect(request.subject).toBe(RPC_PHONE_START); - expect(request.payload).toEqual({v: 1, ...START}); - expect(request.headers[HEADER.deadline]).toBe(String(now + 12_000)); - expect(request.headers[HEADER.requestId]).toBe('req-1'); - expect(request.headers[HEADER.idempotencyKey]).toBe( - createHash('sha256').update(`start\n${INFO.userId}\n${INFO.phone}\nnonce-1`).digest('base64url'), - ); - expect(request.timeoutMs).toBe(12_250); - now += 1; - expect(phoneIdempotencyKey('check', INFO, 'n')).not.toBe(phoneIdempotencyKey('start', INFO, 'n')); - }); - - it('never derives the idempotency key from the client request id', async () => { - const transport = new ScriptedTransport([ - JSON.stringify({result: 'sms_sent'}), - JSON.stringify({result: 'sms_sent'}), - ]); - const client = new PhoneVerificationClient(transport); - await client.start(START, INFO); - await client.start(START, INFO); - const [first, second] = transport.requests; - expect(first.headers[HEADER.requestId]).toBe(second.headers[HEADER.requestId]); - expect(first.headers[HEADER.idempotencyKey]).not.toBe(second.headers[HEADER.idempotencyKey]); - }); - - it('counts error replies by their code so unavailable is alertable', async () => { - const transport = new ScriptedTransport([JSON.stringify({result: 'error', code: 'unavailable'})]); - await new PhoneVerificationClient(transport).start(START, INFO); - expect(renderPhoneRpcMetrics()).toContain('fluxer_api_phone_rpc_total{op="start",result="unavailable"}'); - }); - - it('retries once with the same key when the service did not answer and enough time remains', async () => { - let now = 0; - const transport = new ScriptedTransport([ - new PhoneRpcUnreachableError('no_responders'), - JSON.stringify({result: 'sms_sent'}), - ]); - const client = new PhoneVerificationClient(transport, () => now); - const pending = client.start(START, INFO); - now = 1_000; - expect(await pending).toEqual({result: 'sms_sent'}); - expect(transport.requests).toHaveLength(2); - expect(transport.requests[1].headers[HEADER.idempotencyKey]).toBe( - transport.requests[0].headers[HEADER.idempotencyKey], - ); - expect(transport.requests[1].headers[HEADER.deadline]).toBe(transport.requests[0].headers[HEADER.deadline]); - }); - - it('gives up without a retry when too little of the deadline is left', async () => { - let now = 0; - const transport: PhoneRpcTransport = { - request: async () => { - now = 9_000; - throw new PhoneRpcUnreachableError('timeout'); - }, - }; - const client = new PhoneVerificationClient(transport, () => now); - await expect( - client.check({user_id: INFO.userId, user_flags: '0', phone: INFO.phone, code: '123456', client_ip: ''}, INFO), - ).rejects.toBeInstanceOf(SmsVerificationUnavailableError); - }); - - it('answers unavailable when the service is not configured or replies with garbage', async () => { - await expect(new PhoneVerificationClient(null).start(START, INFO)).rejects.toBeInstanceOf( - SmsVerificationUnavailableError, - ); - const garbled = new PhoneVerificationClient(new ScriptedTransport(['{"nope":1}'])); - await expect(garbled.start(START, INFO)).rejects.toBeInstanceOf(SmsVerificationUnavailableError); - }); - - it('maps service errors to the existing client errors', () => { - const limited = errorForPhoneReply({ - code: 'rate_limited', - retry_after_s: 600, - rate_limit_scope: 'shared', - limit: 3, - message: 'Too many verification texts were sent recently. Try again later.', - }); - expect(limited).toBeInstanceOf(RateLimitError); - expect((limited as RateLimitError).code).toBe(APIErrorCodes.PHONE_RATE_LIMIT_EXCEEDED); - const blank = {retry_after_s: null, rate_limit_scope: null, limit: null, message: null}; - expect(errorForPhoneReply({code: 'already_used', ...blank})).toBeInstanceOf(PhoneAlreadyUsedError); - for (const code of ['unavailable', 'deadline_exceeded', 'unsupported_contract'] as const) { - expect(errorForPhoneReply({code, ...blank})).toBeInstanceOf(SmsVerificationUnavailableError); - } - const captchaRequired = errorForPhoneReply({code: 'captcha_required', ...blank}); - expect(captchaRequired).toBeInstanceOf(RateLimitError); - expect((captchaRequired as RateLimitError).code).toBe(APIErrorCodes.PHONE_RATE_LIMIT_EXCEEDED); - }); -}); - -const NATS_URL = process.env.FLUXER_TEST_ACTIVITY_NATS_URL; - -describe.skipIf(!NATS_URL)('phone verification client over NATS', () => { - let nc: NatsConnection; - const seen: Array<{subject: string; headers: Record}> = []; - beforeAll(async () => { - nc = await connect({servers: NATS_URL, token: process.env.FLUXER_TEST_ACTIVITY_NATS_TOKEN}); - nc.subscribe('rpc.phone.v1.*', { - queue: 'phone', - callback: (_error, msg) => { - const headers: Record = {}; - for (const key of msg.headers?.keys() ?? []) headers[key] = msg.headers!.get(key); - seen.push({subject: msg.subject, headers}); - msg.respond( - JSON.stringify({ - result: 'verified', - action: { - v: 1, - id: 'phone:k', - key: INFO.userId, - issued_at_ms: 1, - expires_at_ms: 2, - type: 'phone_verified', - user_id: INFO.userId, - method: 'outbound', - clear_suspicious: 4, - }, - }), - ); - }, - }); - await nc.flush(); - }); - afterAll(async () => { - await nc?.close(); - }); - - it('carries the headers to the responder and returns its reply', async () => { - const client = new PhoneVerificationClient(natsPhoneRpcTransport(() => nc)); - const reply = await client.check( - {user_id: INFO.userId, user_flags: '0', phone: INFO.phone, code: '123456', client_ip: '203.0.113.9'}, - INFO, - ); - expect(reply.result).toBe('verified'); - expect(seen.at(-1)?.subject).toBe(RPC_PHONE_CHECK); - expect(seen.at(-1)?.headers[HEADER.requestId]).toBe('req-1'); - expect(Number(seen.at(-1)?.headers[HEADER.deadline])).toBeGreaterThan(Date.now()); - }); - - it('reports a subject nobody serves as unreachable', async () => { - const other = await connect({servers: NATS_URL, token: process.env.FLUXER_TEST_ACTIVITY_NATS_TOKEN}); - try { - const transport = natsPhoneRpcTransport(() => other); - await expect(transport.request('rpc.phone.v9.start', '{}', {timeoutMs: 1000, headers: {}})).rejects.toMatchObject( - {reason: 'no_responders'}, - ); - } finally { - await other.close(); - } - }); -}); diff --git a/fluxer_api/src/api/auth/tests/SecurityFlagsSuspiciousActivity.test.ts b/fluxer_api/src/api/auth/tests/SecurityFlagsSuspiciousActivity.test.ts deleted file mode 100644 index ee92f049e..000000000 --- a/fluxer_api/src/api/auth/tests/SecurityFlagsSuspiciousActivity.test.ts +++ /dev/null @@ -1,113 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {createAuthHarness, createTestAccount, loginUser} from '@app/api/auth/tests/AuthTestUtils'; -import type {ApiTestHarness} from '@app/api/test/ApiTestHarness'; -import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder'; -import {afterAll, beforeAll, beforeEach, describe, expect, it} from 'vitest'; - -interface UserPrivateResponse { - required_actions: Array | null; -} - -interface UserSettingsResponse { - incoming_call_flags: number; -} - -describe('Auth security flags - suspicious activity flag blocks restricted routes but allows recovery access', () => { - let harness: ApiTestHarness; - beforeAll(async () => { - harness = await createAuthHarness(); - }); - beforeEach(async () => { - await harness.reset(); - }); - afterAll(async () => { - await harness?.shutdown(); - }); - it('blocks ordinary authenticated writes when suspicious activity flag is set', async () => { - const account = await createTestAccount(harness); - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({ - suspicious_activity_flag_names: ['REQUIRE_REVERIFIED_EMAIL'], - }) - .execute(); - await createBuilder(harness, account.token).patch('/users/@me').body({bio: 'still-blocked'}).expect(403).execute(); - }); - it('allows login and self-bootstrap reads when suspicious activity flag is set', async () => { - const account = await createTestAccount(harness); - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({ - suspicious_activity_flag_names: ['REQUIRE_REVERIFIED_EMAIL'], - }) - .execute(); - const login = await loginUser(harness, {email: account.email, password: account.password}); - if ('mfa' in login) { - throw new Error('Expected non-MFA login for suspicious activity recovery test'); - } - const me = await createBuilder(harness, login.token).get('/users/@me').expect(200).execute(); - expect(me.required_actions).toContain('REQUIRE_REVERIFIED_EMAIL'); - await createBuilder(harness, login.token).get('/users/@me/settings').expect(200).execute(); - }); - it('suppresses REQUIRE_VERIFIED_EMAIL when the account email is verified', async () => { - const account = await createTestAccount(harness); - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({ - suspicious_activity_flag_names: ['REQUIRE_VERIFIED_EMAIL'], - }) - .execute(); - const me = await createBuilder(harness, account.token).get('/users/@me').expect(200).execute(); - expect(me.required_actions).not.toContain('REQUIRE_VERIFIED_EMAIL'); - await createBuilder(harness, account.token) - .patch('/users/@me') - .body({bio: 'email-flag-suppressed'}) - .expect(200) - .execute(); - }); - it('keeps REQUIRE_VERIFIED_EMAIL active when the account email is unverified', async () => { - const account = await createTestAccount(harness, {skipEmailVerification: true}); - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({ - email_verified: false, - suspicious_activity_flag_names: ['REQUIRE_VERIFIED_EMAIL'], - }) - .execute(); - const me = await createBuilder(harness, account.token).get('/users/@me').expect(200).execute(); - expect(me.required_actions).toContain('REQUIRE_VERIFIED_EMAIL'); - await createBuilder(harness, account.token) - .patch('/users/@me') - .body({bio: 'email-flag-still-active'}) - .expect(403) - .execute(); - }); - it('allows /auth/verify/resend even with suspicious activity flag', async () => { - const account = await createTestAccount(harness); - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({ - suspicious_activity_flag_names: ['REQUIRE_REVERIFIED_EMAIL'], - }) - .execute(); - await createBuilder(harness, account.token).post('/auth/verify/resend').body({}).expect(204).execute(); - }); - it('allows fully restricted routes again after clearing suspicious activity flag', async () => { - const account = await createTestAccount(harness); - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({ - suspicious_activity_flag_names: ['REQUIRE_REVERIFIED_EMAIL'], - }) - .execute(); - await createBuilder(harness, account.token).get(`/users/${account.userId}`).expect(403).execute(); - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({ - suspicious_activity_flags: 0, - }) - .execute(); - await createBuilder(harness, account.token).get(`/users/${account.userId}`).expect(200).execute(); - }); -}); diff --git a/fluxer_api/src/api/auth/tests/UnclaimedClaimFlow.test.ts b/fluxer_api/src/api/auth/tests/UnclaimedClaimFlow.test.ts index d7f1b5759..a09afcccd 100644 --- a/fluxer_api/src/api/auth/tests/UnclaimedClaimFlow.test.ts +++ b/fluxer_api/src/api/auth/tests/UnclaimedClaimFlow.test.ts @@ -29,7 +29,6 @@ interface EmailChangeVerifyNewResponse { interface UserPrivateResponse { id: string; email: string; - phone?: string | null; username: string; discriminator: string; global_name: string; diff --git a/fluxer_api/src/api/bluesky/BlueskyOAuthController.ts b/fluxer_api/src/api/bluesky/BlueskyOAuthController.ts index 6b04f9721..4bc2b90fd 100644 --- a/fluxer_api/src/api/bluesky/BlueskyOAuthController.ts +++ b/fluxer_api/src/api/bluesky/BlueskyOAuthController.ts @@ -12,6 +12,7 @@ import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware'; import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware'; import {ConnectionRateLimitConfigs} from '@app/api/rate_limit_configs/ConnectionRateLimitConfig'; import type {HonoApp} from '@app/api/types/HonoEnv'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import {Validator} from '@app/api/Validator'; import { BlueskyAuthorizeRequest, @@ -88,6 +89,7 @@ export function BlueskyOAuthController(app: HonoApp) { if (!resolvedServices.bluesky_enabled) { throw new BlueskyOAuthNotEnabledError(); } + assertAccountNotLimited(ctx.get('user')); const {handle: rawHandle} = ctx.req.valid('json'); const userId = ctx.get('user').id; const handle = normalizeBlueskyHandle(rawHandle); diff --git a/fluxer_api/src/api/channel/controllers/ChannelFollowController.ts b/fluxer_api/src/api/channel/controllers/ChannelFollowController.ts index 1de81696b..7e261b799 100644 --- a/fluxer_api/src/api/channel/controllers/ChannelFollowController.ts +++ b/fluxer_api/src/api/channel/controllers/ChannelFollowController.ts @@ -6,6 +6,7 @@ import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware'; import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware'; import {RateLimitConfigs} from '@app/api/RateLimitConfig'; import type {HonoApp} from '@app/api/types/HonoEnv'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import {Validator} from '@app/api/Validator'; import { ChannelFollowerStatsResponse, @@ -33,6 +34,7 @@ export function ChannelFollowController(app: HonoApp) { tags: 'Channels', }), async (ctx) => { + assertAccountNotLimited(ctx.get('user')); const followed = await ctx.get('channelFollowService').followChannel({ userId: ctx.get('user').id, channelId: createChannelID(ctx.req.valid('param').channel_id), diff --git a/fluxer_api/src/api/channel/controllers/MessageController.ts b/fluxer_api/src/api/channel/controllers/MessageController.ts index d2e130f5d..f52f1c294 100644 --- a/fluxer_api/src/api/channel/controllers/MessageController.ts +++ b/fluxer_api/src/api/channel/controllers/MessageController.ts @@ -12,6 +12,7 @@ import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware'; import {SudoModeMiddleware} from '@app/api/middleware/SudoModeMiddleware'; import {RateLimitConfigs} from '@app/api/RateLimitConfig'; import type {HonoApp} from '@app/api/types/HonoEnv'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import {parseJsonPreservingLargeIntegers} from '@app/api/utils/LosslessJsonParser'; import {Validator} from '@app/api/Validator'; import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes'; @@ -521,6 +522,7 @@ export function MessageController(app: HonoApp) { }), async (ctx) => { const {channel_id, message_id} = ctx.req.valid('param'); + assertAccountNotLimited(ctx.get('user')); return ctx.json( await ctx.get('messageRequestService').crosspostMessage({ userId: ctx.get('user').id, diff --git a/fluxer_api/src/api/channel/services/group_dm/GroupDmOperationsService.ts b/fluxer_api/src/api/channel/services/group_dm/GroupDmOperationsService.ts index 24f2ca84c..ed799b315 100644 --- a/fluxer_api/src/api/channel/services/group_dm/GroupDmOperationsService.ts +++ b/fluxer_api/src/api/channel/services/group_dm/GroupDmOperationsService.ts @@ -19,6 +19,7 @@ import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware'; import type {Channel} from '@app/api/models/Channel'; import type {User} from '@app/api/models/User'; import {deleteChannelMessageSearchDocuments} from '@app/api/search/MessageSearchIndexCleanup'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import type {IUserRepository} from '@app/api/user/IUserRepository'; import {UserPermissionUtils} from '@app/api/utils/UserPermissionUtils'; import {ChannelTypes, MessageTypes} from '@fluxer/constants/src/ChannelConstants'; @@ -69,6 +70,7 @@ export class GroupDmOperationsService { if (!channel.recipientIds.has(userId)) { throw new MissingAccessError(); } + await this.assertInviterNotLimited(userId); const friendship = await this.userRepository.getRelationship(userId, recipientId, RelationshipTypes.FRIEND); if (!friendship) { throw new NotFriendsWithUserError(); @@ -105,6 +107,7 @@ export class GroupDmOperationsService { if (!channel.recipientIds.has(userId)) { throw new MissingAccessError(); } + await this.assertInviterNotLimited(userId); const {channel: updatedChannel} = await this.addRecipientViaInviteWithResult({ channelId, recipientId: botUserId, @@ -114,6 +117,11 @@ export class GroupDmOperationsService { return updatedChannel; } + private async assertInviterNotLimited(userId: UserID): Promise { + const user = await this.userRepository.findUnique(userId); + if (user) assertAccountNotLimited(user); + } + async addRecipientViaInvite({ channelId, recipientId, diff --git a/fluxer_api/src/api/channel/services/interaction/MessageReactionService.ts b/fluxer_api/src/api/channel/services/interaction/MessageReactionService.ts index 26902ab5c..06ecef691 100644 --- a/fluxer_api/src/api/channel/services/interaction/MessageReactionService.ts +++ b/fluxer_api/src/api/channel/services/interaction/MessageReactionService.ts @@ -14,6 +14,7 @@ import {createLimitMatchContext} from '@app/api/limits/LimitMatchContextBuilder' import type {Channel} from '@app/api/models/Channel'; import type {MessageReaction} from '@app/api/models/MessageReaction'; import type {User} from '@app/api/models/User'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import type {IUserRepository} from '@app/api/user/IUserRepository'; import {mapUserToPartialResponse} from '@app/api/user/UserMappers'; import {assertGuildMemberCanCommunicate} from '@app/api/utils/GuildCommunicationUtils'; @@ -171,6 +172,7 @@ export class MessageReactionService extends MessageInteractionBase { const requestingUser = await this.userRepository.findUnique(userId); if (requestingUser) { requireEmailVerified(requestingUser, 'reaction'); + assertAccountNotLimited(requestingUser); } const guildFeatures = guild?.features ?? null; const maxUsersPerReaction = this.resolveLimitForUser({ diff --git a/fluxer_api/src/api/channel/services/message/MessageEditService.ts b/fluxer_api/src/api/channel/services/message/MessageEditService.ts index 46506e53e..dd4f78160 100644 --- a/fluxer_api/src/api/channel/services/message/MessageEditService.ts +++ b/fluxer_api/src/api/channel/services/message/MessageEditService.ts @@ -9,7 +9,7 @@ import {emitMessageUpdated} from '@app/api/channel/services/message/MessageActiv import type {MessageChannelAuthService} from '@app/api/channel/services/message/MessageChannelAuthService'; import type {MessageDispatchService} from '@app/api/channel/services/message/MessageDispatchService'; import type {MessageEmbedAttachmentResolver} from '@app/api/channel/services/message/MessageEmbedAttachmentResolver'; -import {isOperationDisabled} from '@app/api/channel/services/message/MessageHelpers'; +import {isOperationDisabled, isPersonalNotesChannel} from '@app/api/channel/services/message/MessageHelpers'; import type {MessageMentionService} from '@app/api/channel/services/message/MessageMentionService'; import type {MessagePersistenceService} from '@app/api/channel/services/message/MessagePersistenceService'; import type {MessageProcessingService} from '@app/api/channel/services/message/MessageProcessingService'; @@ -19,6 +19,7 @@ import type {MessageWriteLock} from '@app/api/channel/services/message/MessageWr import {Logger} from '@app/api/Logger'; import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware'; import type {Message} from '@app/api/models/Message'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import type {IUserRepository} from '@app/api/user/IUserRepository'; import {assertMayStartConversation, oneToOneDmRecipient} from '@app/api/user/NewConversationLimit'; import {isDirectDeliverySuppressed} from '@app/api/user/UserHelpers'; @@ -154,6 +155,9 @@ export class MessageEditService { await this.deps.crosspostPropagation.propagateEdit(editedMessage); return {message: editedMessage, authChannel}; } + if (user && !isPersonalNotesChannel({userId, channelId})) { + assertAccountNotLimited(user); + } const dmRecipientId = oneToOneDmRecipient(channel, userId); if (user && dmRecipientId !== null) { await assertMayStartConversation({ diff --git a/fluxer_api/src/api/channel/services/message/MessageSendService.ts b/fluxer_api/src/api/channel/services/message/MessageSendService.ts index 64d7ec662..72447a9a4 100644 --- a/fluxer_api/src/api/channel/services/message/MessageSendService.ts +++ b/fluxer_api/src/api/channel/services/message/MessageSendService.ts @@ -49,6 +49,7 @@ import type {Message} from '@app/api/models/Message'; import type {MessageSnapshot} from '@app/api/models/MessageSnapshot'; import type {User} from '@app/api/models/User'; import type {Webhook} from '@app/api/models/Webhook'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import type {IUserRepository} from '@app/api/user/IUserRepository'; import {assertMayStartConversation} from '@app/api/user/NewConversationLimit'; import {isDirectDeliverySuppressed} from '@app/api/user/UserHelpers'; @@ -789,6 +790,7 @@ export class MessageSendService { const message = await this.sendPersonalNoteMessage({authChannel, user, channelId, data, requestCache}); return {message, authChannel}; } + assertAccountNotLimited(user); const {channel, guild, checkPermission, hasPermission, member} = authChannel; const {canEmbedLinks, canMentionEveryone, canAttachFiles} = await this.checkMessageSendPermissions({ guild, diff --git a/fluxer_api/src/api/config/APIConfig.ts b/fluxer_api/src/api/config/APIConfig.ts index 705c56203..64eddf8f5 100644 --- a/fluxer_api/src/api/config/APIConfig.ts +++ b/fluxer_api/src/api/config/APIConfig.ts @@ -262,7 +262,6 @@ export interface APIConfig { }; instance: { selfHosted: boolean; - phoneVerificationEnabled: boolean; autoJoinInviteCode?: string; visionariesGuildId?: string; visionariesGuildVisionaryRoleId?: string; diff --git a/fluxer_api/src/api/connection/ConnectionController.ts b/fluxer_api/src/api/connection/ConnectionController.ts index b3a352a04..764c7fd16 100644 --- a/fluxer_api/src/api/connection/ConnectionController.ts +++ b/fluxer_api/src/api/connection/ConnectionController.ts @@ -6,6 +6,7 @@ import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware'; import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware'; import {ConnectionRateLimitConfigs} from '@app/api/rate_limit_configs/ConnectionRateLimitConfig'; import type {HonoApp} from '@app/api/types/HonoEnv'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import {Validator} from '@app/api/Validator'; import { ConnectionListResponse, @@ -56,6 +57,7 @@ export function ConnectionController(app: HonoApp) { 'Initiates a new external service connection and returns verification instructions. No database record is created until verification succeeds.', }), async (ctx) => { + assertAccountNotLimited(ctx.get('user')); const verification = await ctx .get('connectionRequestService') .initiateConnection(ctx.get('user').id, ctx.req.valid('json')); @@ -79,6 +81,7 @@ export function ConnectionController(app: HonoApp) { 'Verifies the external service connection using the initiation token and creates the connection record on success.', }), async (ctx) => { + assertAccountNotLimited(ctx.get('user')); const connection = await ctx .get('connectionRequestService') .verifyAndCreateConnection(ctx.get('user').id, ctx.req.valid('json')); diff --git a/fluxer_api/src/api/database/types/UserTypes.ts b/fluxer_api/src/api/database/types/UserTypes.ts index 04178495e..70a1163bd 100644 --- a/fluxer_api/src/api/database/types/UserTypes.ts +++ b/fluxer_api/src/api/database/types/UserTypes.ts @@ -32,7 +32,6 @@ export interface UserRow { email: Nullish; email_verified: Nullish; email_bounced: Nullish; - has_verified_phone?: Nullish; password_hash: Nullish; password_last_changed_at: Nullish; totp_secret: Nullish; @@ -61,7 +60,6 @@ export interface UserRow { stripe_subscription_id: Nullish; stripe_customer_id: Nullish; has_ever_purchased: Nullish; - suspicious_activity_flags: Nullish; terms_agreed_at: Nullish; privacy_agreed_at: Nullish; last_active_at: Nullish; @@ -98,7 +96,6 @@ export const USER_COLUMNS = [ 'email', 'email_verified', 'email_bounced', - 'has_verified_phone', 'password_hash', 'password_last_changed_at', 'totp_secret', @@ -127,7 +124,6 @@ export const USER_COLUMNS = [ 'stripe_subscription_id', 'stripe_customer_id', 'has_ever_purchased', - 'suspicious_activity_flags', 'terms_agreed_at', 'privacy_agreed_at', 'last_active_at', @@ -163,7 +159,6 @@ export const EMPTY_USER_ROW: UserRow = { email: null, email_verified: null, email_bounced: null, - has_verified_phone: null, password_hash: null, password_last_changed_at: null, totp_secret: null, @@ -192,7 +187,6 @@ export const EMPTY_USER_ROW: UserRow = { stripe_subscription_id: null, stripe_customer_id: null, has_ever_purchased: null, - suspicious_activity_flags: null, terms_agreed_at: null, privacy_agreed_at: null, last_active_at: null, diff --git a/fluxer_api/src/api/gif/GifController.test.ts b/fluxer_api/src/api/gif/GifController.test.ts index e0d598e32..84210e2cc 100644 --- a/fluxer_api/src/api/gif/GifController.test.ts +++ b/fluxer_api/src/api/gif/GifController.test.ts @@ -33,7 +33,6 @@ function createApp(gifService: GifService): Hono { ctx.set('gifService', gifService); ctx.set('user', { isBot: false, - suspiciousActivityFlags: 0, } as HonoEnv['Variables']['user']); ctx.set('authTokenType', 'session'); await next(); diff --git a/fluxer_api/src/api/guild/controllers/GuildBaseController.ts b/fluxer_api/src/api/guild/controllers/GuildBaseController.ts index 333b157be..5c421baeb 100644 --- a/fluxer_api/src/api/guild/controllers/GuildBaseController.ts +++ b/fluxer_api/src/api/guild/controllers/GuildBaseController.ts @@ -13,6 +13,7 @@ import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware'; import {SudoModeMiddleware} from '@app/api/middleware/SudoModeMiddleware'; import {RateLimitConfigs} from '@app/api/RateLimitConfig'; import type {HonoApp} from '@app/api/types/HonoEnv'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import {Validator} from '@app/api/Validator'; import {AdminACLs} from '@fluxer/constants/src/AdminACLs'; import {GuildCreationPermissionRequiredError} from '@fluxer/errors/src/domains/guild/GuildCreationPermissionRequiredError'; @@ -62,6 +63,7 @@ export function GuildBaseController(app: HonoApp) { if (!user.isUnclaimedAccount()) { requireEmailVerified(user, 'guild_creation'); } + assertAccountNotLimited(user); if (Config.instance.selfHosted && !policy.guild_create_access) { const granted = user.acls.has(AdminACLs.WILDCARD) || diff --git a/fluxer_api/src/api/guild/services/GuildDiscoveryService.ts b/fluxer_api/src/api/guild/services/GuildDiscoveryService.ts index 39a2dff72..66d245bc9 100644 --- a/fluxer_api/src/api/guild/services/GuildDiscoveryService.ts +++ b/fluxer_api/src/api/guild/services/GuildDiscoveryService.ts @@ -434,11 +434,7 @@ export class GuildDiscoveryService extends IGuildDiscoveryService { member_count: hit.memberCount, online_count: 0, features: hit.features, - verification_level: getEffectiveGuildVerificationLevel( - hit.verificationLevel, - hit.isDiscoverable, - Config.instance.phoneVerificationEnabled, - ), + verification_level: getEffectiveGuildVerificationLevel(hit.verificationLevel, hit.isDiscoverable), })); const total = results.total; if (guilds.length > 0) { diff --git a/fluxer_api/src/api/guild/services/GuildMemberService.ts b/fluxer_api/src/api/guild/services/GuildMemberService.ts index bbe7c6ccb..27897a888 100644 --- a/fluxer_api/src/api/guild/services/GuildMemberService.ts +++ b/fluxer_api/src/api/guild/services/GuildMemberService.ts @@ -307,6 +307,7 @@ export class GuildMemberService { sendJoinMessage?: boolean; skipGuildLimitCheck?: boolean; skipBanCheck?: boolean; + skipAccountLimitCheck?: boolean; isTemporary?: boolean; joinSourceType?: JoinSourceType; sourceInviteCode?: InviteCode; diff --git a/fluxer_api/src/api/guild/services/data/GuildOperationsService.ts b/fluxer_api/src/api/guild/services/data/GuildOperationsService.ts index 38f49724b..65c2272de 100644 --- a/fluxer_api/src/api/guild/services/data/GuildOperationsService.ts +++ b/fluxer_api/src/api/guild/services/data/GuildOperationsService.ts @@ -2,7 +2,6 @@ import type {ChannelID, GuildID, RoleID, UserID} from '@app/api/BrandedTypes'; import {createChannelID, createGuildID, createRoleID, guildIdToRoleId} from '@app/api/BrandedTypes'; -import {Config} from '@app/api/Config'; import type {IChannelRepository} from '@app/api/channel/IChannelRepository'; import { type ChannelFollowerRemovalCopyMode, @@ -482,17 +481,6 @@ export class GuildOperationsService { ValidationErrorCodes.DISCOVERABLE_GUILD_VERIFICATION_LEVEL_TOO_LOW, ); } - if ( - data.verification_level === GuildVerificationLevel.VERY_HIGH && - data.verification_level !== currentGuild.verificationLevel && - !Config.instance.phoneVerificationEnabled - ) { - throw InputValidationError.fromCode('verification_level', ValidationErrorCodes.VALUE_MUST_BE_INTEGER_IN_RANGE, { - name: 'verification_level', - minValue: GuildVerificationLevel.NONE, - maxValue: GuildVerificationLevel.HIGH, - }); - } const isMfaLevelChange = data.mfa_level !== undefined && data.mfa_level !== currentGuild.mfaLevel; if (isMfaLevelChange) { const isOwner = guildData.owner_id === userId.toString(); @@ -1192,7 +1180,7 @@ export class GuildOperationsService { verificationLevel: this.clampTemplateSetting( template?.verification_level, GuildVerificationLevel.NONE, - Config.instance.phoneVerificationEnabled ? GuildVerificationLevel.VERY_HIGH : GuildVerificationLevel.HIGH, + GuildVerificationLevel.HIGH, GuildVerificationLevel.NONE, ), explicitContentFilter: this.clampTemplateSetting(template?.explicit_content_filter, 0, 2, 0), diff --git a/fluxer_api/src/api/guild/services/member/GuildMemberOperationsService.ts b/fluxer_api/src/api/guild/services/member/GuildMemberOperationsService.ts index 680a5a59e..cca42ee18 100644 --- a/fluxer_api/src/api/guild/services/member/GuildMemberOperationsService.ts +++ b/fluxer_api/src/api/guild/services/member/GuildMemberOperationsService.ts @@ -31,6 +31,7 @@ import type {GuildMember} from '@app/api/models/GuildMember'; import type {User} from '@app/api/models/User'; import type {UserGuildSettings} from '@app/api/models/UserGuildSettings'; import type {UserSettings} from '@app/api/models/UserSettings'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import type {IUserRepository} from '@app/api/user/IUserRepository'; import {isProfileSubstringExempt} from '@app/api/user/UserHelpers'; import {mapUserGuildSettingsToResponse, mapUserSettingsToResponse} from '@app/api/user/UserMappers'; @@ -418,6 +419,7 @@ export class GuildMemberOperationsService { sendJoinMessage?: boolean; skipGuildLimitCheck?: boolean; skipBanCheck?: boolean; + skipAccountLimitCheck?: boolean; isTemporary?: boolean; joinSourceType?: JoinSourceType; sourceInviteCode?: InviteCode; @@ -435,6 +437,7 @@ export class GuildMemberOperationsService { sendJoinMessage = true, skipGuildLimitCheck = false, skipBanCheck = false, + skipAccountLimitCheck = false, isTemporary = false, joinSourceType = JoinSourceTypes.INSTANT_INVITE, sourceInviteCode = null, @@ -449,6 +452,9 @@ export class GuildMemberOperationsService { assertMutableUserId(userId); const user = await this.userRepository.findUnique(userId); if (!user) throw new UnknownGuildError(); + if (!skipAccountLimitCheck) { + assertAccountNotLimited(user); + } if (!skipBanCheck) { await this.validationService.checkUserBanStatus({userId, guildId}); } @@ -706,6 +712,7 @@ export class GuildMemberOperationsService { const {targetId, guildId, targetUser, targetMember, data, updateData, preparedAssets} = params; if (hasSelfProfileCustomizationUpdate(data)) { requireEmailVerified(targetUser, 'profile'); + assertAccountNotLimited(targetUser); } const ctx = createLimitMatchContext({user: targetUser}); const hasGuildProfileCustomization = resolveLimitSafe( diff --git a/fluxer_api/src/api/guild/tests/GuildPhoneVerificationLevel.test.ts b/fluxer_api/src/api/guild/tests/GuildPhoneVerificationLevel.test.ts deleted file mode 100644 index 9b03d3ea5..000000000 --- a/fluxer_api/src/api/guild/tests/GuildPhoneVerificationLevel.test.ts +++ /dev/null @@ -1,94 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {createTestAccount} from '@app/api/auth/tests/AuthTestUtils'; -import {Config} from '@app/api/Config'; -import {createGuild, updateGuild} from '@app/api/guild/tests/GuildTestUtils'; -import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness'; -import {HTTP_STATUS} from '@app/api/test/TestConstants'; -import {createBuilder} from '@app/api/test/TestRequestBuilder'; -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {ChannelTypes} from '@fluxer/constants/src/ChannelConstants'; -import {GuildVerificationLevel} from '@fluxer/constants/src/GuildConstants'; -import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas'; -import {afterAll, afterEach, beforeAll, beforeEach, describe, expect, test} from 'vitest'; - -describe('Guild verification level without phone verification', () => { - let harness: ApiTestHarness; - let savedPhoneVerificationEnabled: boolean; - beforeAll(async () => { - harness = await createApiTestHarness(); - }); - afterAll(async () => { - await harness?.shutdown(); - }); - beforeEach(async () => { - await harness.reset(); - savedPhoneVerificationEnabled = Config.instance.phoneVerificationEnabled; - }); - afterEach(() => { - Config.instance.phoneVerificationEnabled = savedPhoneVerificationEnabled; - }); - - test('rejects very high when phone verification is unavailable', async () => { - Config.instance.phoneVerificationEnabled = false; - const account = await createTestAccount(harness); - const guild = await createGuild(harness, account.token, 'No Phone Guild'); - await createBuilder(harness, account.token) - .patch(`/guilds/${guild.id}`) - .body({verification_level: GuildVerificationLevel.VERY_HIGH}) - .expect(HTTP_STATUS.BAD_REQUEST, APIErrorCodes.INVALID_FORM_BODY) - .execute(); - const updated = await updateGuild(harness, account.token, guild.id, { - verification_level: GuildVerificationLevel.HIGH, - }); - expect(updated.verification_level).toBe(GuildVerificationLevel.HIGH); - }); - - test('accepts very high when phone verification is available', async () => { - Config.instance.phoneVerificationEnabled = true; - const account = await createTestAccount(harness); - const guild = await createGuild(harness, account.token, 'Phone Guild'); - const updated = await updateGuild(harness, account.token, guild.id, { - verification_level: GuildVerificationLevel.VERY_HIGH, - }); - expect(updated.verification_level).toBe(GuildVerificationLevel.VERY_HIGH); - }); - - test('accepts an unchanged stored very high when phone verification is unavailable', async () => { - Config.instance.phoneVerificationEnabled = true; - const account = await createTestAccount(harness); - const guild = await createGuild(harness, account.token, 'Stored Phone Guild'); - await updateGuild(harness, account.token, guild.id, {verification_level: GuildVerificationLevel.VERY_HIGH}); - Config.instance.phoneVerificationEnabled = false; - const updated = await updateGuild(harness, account.token, guild.id, { - name: 'Renamed Phone Guild', - verification_level: GuildVerificationLevel.VERY_HIGH, - }); - expect(updated.name).toBe('Renamed Phone Guild'); - expect(updated.verification_level).toBe(GuildVerificationLevel.VERY_HIGH); - }); - - test('clamps a template level to high when phone verification is unavailable', async () => { - Config.instance.phoneVerificationEnabled = false; - const account = await createTestAccount(harness); - const guild = await createBuilder(harness, account.token) - .post('/guilds') - .body({ - name: 'Template Guild', - template: { - name: 'Template Source', - description: null, - verification_level: GuildVerificationLevel.VERY_HIGH, - default_message_notifications: 0, - explicit_content_filter: 0, - system_channel_id: 1001, - afk_timeout: 300, - system_channel_flags: 0, - roles: [{id: 0, name: '@everyone', permissions: '0'}], - channels: [{id: 1001, type: ChannelTypes.GUILD_TEXT, name: 'general', position: 0}], - }, - }) - .execute(); - expect(guild.verification_level).toBe(GuildVerificationLevel.HIGH); - }); -}); diff --git a/fluxer_api/src/api/guild/tests/GuildTemplateImport.test.ts b/fluxer_api/src/api/guild/tests/GuildTemplateImport.test.ts index c17350f11..662b1581e 100644 --- a/fluxer_api/src/api/guild/tests/GuildTemplateImport.test.ts +++ b/fluxer_api/src/api/guild/tests/GuildTemplateImport.test.ts @@ -103,7 +103,7 @@ describe('Guild Template Import', () => { }, }) .execute(); - expect(guild.verification_level).toBe(4); + expect(guild.verification_level).toBe(3); expect(guild.default_message_notifications).toBe(1); expect(guild.explicit_content_filter).toBe(2); expect(guild.system_channel_flags).toBe(SystemChannelFlags.SUPPRESS_JOIN_NOTIFICATIONS); diff --git a/fluxer_api/src/api/infrastructure/activity/AccountChangeEvents.ts b/fluxer_api/src/api/infrastructure/activity/AccountChangeEvents.ts index a76970a42..e18d320d9 100644 --- a/fluxer_api/src/api/infrastructure/activity/AccountChangeEvents.ts +++ b/fluxer_api/src/api/infrastructure/activity/AccountChangeEvents.ts @@ -13,8 +13,6 @@ function timeMs(value: Date | null | undefined): number | null { function isRelevantChange(previous: UserRow, updated: UserRow): boolean { return ( (previous.flags ?? 0n) !== (updated.flags ?? 0n) || - (previous.suspicious_activity_flags ?? 0) !== (updated.suspicious_activity_flags ?? 0) || - (previous.has_verified_phone ?? false) !== (updated.has_verified_phone ?? false) || timeMs(previous.temp_banned_until) !== timeMs(updated.temp_banned_until) || timeMs(previous.pending_deletion_at) !== timeMs(updated.pending_deletion_at) || (previous.deletion_reason_code ?? null) !== (updated.deletion_reason_code ?? null) @@ -33,9 +31,6 @@ export async function emitAccountChangedIfRelevant( source: source ?? currentAccountChangeSource(), flags: (updated.flags ?? 0n).toString(), flags_before: (previous.flags ?? 0n).toString(), - suspicious_flags: updated.suspicious_activity_flags ?? 0, - suspicious_flags_before: previous.suspicious_activity_flags ?? 0, - has_verified_phone: updated.has_verified_phone ?? false, temp_banned_until_ms: timeMs(updated.temp_banned_until), pending_deletion_at_ms: timeMs(updated.pending_deletion_at), deletion_reason_code: updated.deletion_reason_code ?? null, diff --git a/fluxer_api/src/api/infrastructure/activity/Contract.generated.ts b/fluxer_api/src/api/infrastructure/activity/Contract.generated.ts index 6c1b8f0e1..5e3faff44 100644 --- a/fluxer_api/src/api/infrastructure/activity/Contract.generated.ts +++ b/fluxer_api/src/api/infrastructure/activity/Contract.generated.ts @@ -7,22 +7,21 @@ export type Meta = { ip: string | null, country: string | null, ua: string | nul export type Kind = "registration" | "email_changed" | "profile_updated" | "account_changed" | "admin_action" | "account_deleted" | "report_filed" | "email_bounced" | "action_outcome" | "login" | "session_started" | "guild_joined" | "dm_opened" | "message_created" | "message_updated" | "friend_request" | "http_errors" | "user_blocked"; export type Event = { v: number, id: string, at_ms: number, key: string, meta: Meta, } & ({ "kind": "registration", "data": Registration } | { "kind": "email_changed", "data": EmailChanged } | { "kind": "profile_updated", "data": ProfileUpdated } | { "kind": "account_changed", "data": AccountChanged } | { "kind": "admin_action", "data": AdminAction } | { "kind": "account_deleted", "data": AccountDeleted } | { "kind": "report_filed", "data": ReportFiled } | { "kind": "email_bounced", "data": EmailBounced } | { "kind": "action_outcome", "data": ActionOutcome } | { "kind": "login", "data": Login } | { "kind": "session_started", "data": SessionStarted } | { "kind": "guild_joined", "data": GuildJoined } | { "kind": "dm_opened", "data": DmOpened } | { "kind": "message_created", "data": MessageCreated } | { "kind": "message_updated", "data": MessageUpdated } | { "kind": "friend_request", "data": FriendRequest } | { "kind": "http_errors", "data": HttpErrors } | { "kind": "user_blocked", "data": UserBlocked }); export type Body = { "kind": "registration", "data": Registration } | { "kind": "email_changed", "data": EmailChanged } | { "kind": "profile_updated", "data": ProfileUpdated } | { "kind": "account_changed", "data": AccountChanged } | { "kind": "admin_action", "data": AdminAction } | { "kind": "account_deleted", "data": AccountDeleted } | { "kind": "report_filed", "data": ReportFiled } | { "kind": "email_bounced", "data": EmailBounced } | { "kind": "action_outcome", "data": ActionOutcome } | { "kind": "login", "data": Login } | { "kind": "session_started", "data": SessionStarted } | { "kind": "guild_joined", "data": GuildJoined } | { "kind": "dm_opened", "data": DmOpened } | { "kind": "message_created", "data": MessageCreated } | { "kind": "message_updated", "data": MessageUpdated } | { "kind": "friend_request", "data": FriendRequest } | { "kind": "http_errors", "data": HttpErrors } | { "kind": "user_blocked", "data": UserBlocked }; -export type Registration = { user_id: Id, method: RegMethod, email: string | null, username: string, username_user_chosen: boolean, global_name: string | null, locale: string | null, timezone: string | null, invite_code: string | null, suspicious_flags: number, flags: Flags64, }; +export type Registration = { user_id: Id, method: RegMethod, email: string | null, username: string, username_user_chosen: boolean, global_name: string | null, locale: string | null, timezone: string | null, invite_code: string | null, flags: Flags64, }; export type RegMethod = "password" | "unclaimed" | "oauth" | "other"; -export type EmailChanged = { user_id: Id, new_email: string, was_unclaimed: boolean, has_ever_purchased: boolean, suspicious_flags: number, suspicious_flags_before: number | null, }; +export type EmailChanged = { user_id: Id, new_email: string, was_unclaimed: boolean, has_ever_purchased: boolean, }; export type ProfileUpdated = { user_id: Id, username: string | null, global_name: string | null, bio: string | null, avatar_hash: string | null, pronouns: string | null, }; -export type AccountChanged = { user_id: Id, source: ChangeSource, flags: Flags64, flags_before: Flags64, suspicious_flags: number, suspicious_flags_before: number, has_verified_phone: boolean, temp_banned_until_ms: number | null, pending_deletion_at_ms: number | null, deletion_reason_code: number | null, }; -export type ChangeSource = "registration" | "email_verify" | "phone_verify" | "admin" | "bulk" | "session_start" | "action" | "deletion" | "login" | "other"; +export type AccountChanged = { user_id: Id, source: ChangeSource, flags: Flags64, flags_before: Flags64, temp_banned_until_ms: number | null, pending_deletion_at_ms: number | null, deletion_reason_code: number | null, }; +export type ChangeSource = "registration" | "email_verify" | "admin" | "bulk" | "session_start" | "action" | "deletion" | "login" | "other"; export type AdminAction = { admin_id: Id, target_id: Id, action: AdminActionKind, reason_code: number | null, duration_h: number | null, ips: Array, }; -export type AdminActionKind = "update_flags" | "set_suspicious_flags" | "disable_suspicious" | "temp_ban" | "unban" | "schedule_deletion" | "cancel_deletion" | "set_phone_verified"; +export type AdminActionKind = "update_flags" | "temp_ban" | "unban" | "schedule_deletion" | "cancel_deletion"; export type AccountDeleted = { user_id: Id, }; export type ReportFiled = { report_id: Id, reporter_id: Id, category: string, target_type: ReportTarget, reported_user_id: Id | null, guild_id: Id | null, message_id: Id | null, channel_id: Id | null, }; export type ReportTarget = "message" | "user" | "guild" | "dsa"; export type EmailBounced = { user_id: Id, kind: BounceKind, provider_event_id: string, email_domain: string, }; export type BounceKind = "hard" | "complaint" | "soft"; -export type PhoneMethod = "outbound" | "inbound"; export type Login = { user_id: Id, ok: boolean, failure: string | null, mfa: boolean, new_ip: boolean, }; -export type SessionStarted = { user_id: Id, is_bot: boolean, has_verified_phone: boolean, flags: Flags64, suspicious_flags: number, has_ever_paid: boolean, }; +export type SessionStarted = { user_id: Id, is_bot: boolean, flags: Flags64, has_ever_paid: boolean, }; export type GuildJoined = { user_id: Id, guild_id: Id, member_count: number, discoverable: boolean, invite_code: string | null, inviter_id: Id | null, join_source: JoinSource, }; export type JoinSource = "creator" | "invite" | "vanity" | "bot_invite" | "admin_force_add" | "discovery" | "other"; export type DmOpened = { user_id: Id, recipient_id: Id, channel_id: Id, recipient_is_friend: boolean, delivered: boolean, }; @@ -33,23 +32,11 @@ export type ChannelType = "dm" | "group_dm" | "guild"; export type FriendRequest = { user_id: Id, target_id: Id, delivered: boolean, }; export type UserBlocked = { blocker_id: Id, blocked_id: Id, }; export type HttpErrors = { ip: string, window_ms: number, s401: number, s403: number, s404: number, s429: number, other_4xx: number, auth_failures: number, token_hashes: Array, }; -export type ActionEnvelope = { v: number, id: string, key: string, issued_at_ms: number, expires_at_ms: number, } & ({ "type": "set_suspicious_flags", user_id: Id, set: number, clear: number, if_current: number | null, } | { "type": "phone_verified", user_id: Id, method: PhoneMethod, clear_suspicious: number, } | { "type": "temp_ban_ip", ip: string, until_ms: number, } | { "type": "limit_new_conversations", user_id: Id, on: boolean, until_ms: number, }); -export type Action = { "type": "set_suspicious_flags", user_id: Id, set: number, clear: number, if_current: number | null, } | { "type": "phone_verified", user_id: Id, method: PhoneMethod, clear_suspicious: number, } | { "type": "temp_ban_ip", ip: string, until_ms: number, } | { "type": "limit_new_conversations", user_id: Id, on: boolean, until_ms: number, }; +export type ActionEnvelope = { v: number, id: string, key: string, issued_at_ms: number, expires_at_ms: number, } & ({ "type": "set_account_limit", user_id: Id, on: boolean, } | { "type": "temp_ban_ip", ip: string, until_ms: number, } | { "type": "limit_new_conversations", user_id: Id, on: boolean, until_ms: number, }); +export type Action = { "type": "set_account_limit", user_id: Id, on: boolean, } | { "type": "temp_ban_ip", ip: string, until_ms: number, } | { "type": "limit_new_conversations", user_id: Id, on: boolean, until_ms: number, }; export type ActionOutcome = { action_id: string, action_type: string, status: OutcomeStatus, detail: string | null, observed: Observed | null, user_id?: Id, }; export type OutcomeStatus = "applied" | "noop" | "conflict" | "expired" | "ineligible" | "exempt" | "unsupported" | "failed"; -export type Observed = { flags: Flags64, suspicious_flags: number, has_verified_phone: boolean, deleted: boolean, }; -export type StartReq = { v: number, user_id: Id, user_flags: Flags64, has_verified_phone: boolean, phone: string, requested_channel: PhoneChannel | null, client_ip: string, captcha_passed: boolean, }; -export type PhoneChannel = "sms" | "inbound_challenge"; -export type StartReply = { "result": "sms_sent" } | { "result": "inbound_challenge" } & Challenge | { "result": "error" } & PhoneError; -export type Challenge = { challenge_code: string, our_number: string, expires_at_ms: number, }; -export type CheckReq = { v: number, user_id: Id, user_flags: Flags64, phone: string, code: string, client_ip: string, }; -export type CheckReply = { "result": "verified", action: ActionEnvelope, } | { "result": "error" } & PhoneError; -export type ChallengeReq = { v: number, user_id: Id, }; -export type ChallengeReply = { "result": "inbound_challenge" } & Challenge | { "result": "error" } & PhoneError; -export type PhoneError = { code: PhoneErrorCode, retry_after_s: number | null, rate_limit_scope: RateLimitScope | null, limit: number | null, message: string | null, }; -export type PhoneErrorCode = "invalid_phone" | "country_not_supported" | "lookup_unavailable" | "not_in_service" | "not_mobile" | "needs_review" | "inbound_required" | "already_used" | "captcha_required" | "invalid_code" | "rate_limited" | "unavailable" | "deadline_exceeded" | "unsupported_contract"; -export type RateLimitScope = "user" | "shared"; -export type InboundSms = { v: number, received_at_ms: number, signature: string, body: string, }; +export type Observed = { flags: Flags64, deleted: boolean, }; export const CONTRACT_VERSION = 1; export const EVENTS_STREAM = 'EVENTS'; @@ -58,22 +45,11 @@ export const ACTION_PARTITIONS = 64; export const MAX_ACTION_ATTEMPTS = 10; export const LISTS_BUCKET = 'lists'; export const SHARED_LISTS = ['ip_blocked', 'email_tld_blocked', 'email_domain_exempt'] as const; -export const PHONE_INBOUND_SUBJECT = 'phone.inbound'; -export const RPC_PHONE_START = 'rpc.phone.v1.start'; -export const RPC_PHONE_CHECK = 'rpc.phone.v1.check'; -export const RPC_PHONE_CHALLENGE = 'rpc.phone.v1.challenge'; -export const PHONE_RPC_VERSION = 1; -export const PHONE_DEADLINE_MS = {start: 12000, check: 10000, challenge: 3000} as const; -export const PHONE_RETRY_MIN_REMAINING_MS = 4000; -export const PHONE_CLIENT_TIMEOUT_SLACK_MS = 250; export const HEADER = { msgId: 'Nats-Msg-Id', ttl: 'Nats-TTL', spooled: 'Fluxer-Spooled', - deadline: 'Fluxer-Deadline', - idempotencyKey: 'Fluxer-Idempotency-Key', requestId: 'Fluxer-Request-Id', - twilioSignature: 'X-Twilio-Signature', } as const; export type EventKind = Kind; export const EVENT_KINDS: ReadonlyArray = [ diff --git a/fluxer_api/src/api/infrastructure/activity/tests/ActivityEvents.test.ts b/fluxer_api/src/api/infrastructure/activity/tests/ActivityEvents.test.ts index d0bff7756..c63301848 100644 --- a/fluxer_api/src/api/infrastructure/activity/tests/ActivityEvents.test.ts +++ b/fluxer_api/src/api/infrastructure/activity/tests/ActivityEvents.test.ts @@ -194,11 +194,10 @@ describe('activity events', () => { it('gives two account changes written at the same version distinct ids', async () => { const publisher = new FakePublisher(); await startActivityEvents({publisher, kv: new MockKVProvider()}); - const row = (suspicious: number, flags: bigint) => - ({user_id: 1174109840998400001n, version: 11, flags, suspicious_activity_flags: suspicious}) as never; - await emitAccountChangedIfRelevant(row(2, 0n), row(0, 0n), 'email_verify'); - await emitAccountChangedIfRelevant(row(2, 0n), row(2, 1n << 43n), 'admin'); - await emitAccountChangedIfRelevant(row(2, 0n), row(0, 0n), 'email_verify'); + const row = (flags: bigint) => ({user_id: 1174109840998400001n, version: 11, flags}) as never; + await emitAccountChangedIfRelevant(row(0n), row(1n << 50n), 'admin'); + await emitAccountChangedIfRelevant(row(0n), row(1n << 43n), 'admin'); + await emitAccountChangedIfRelevant(row(0n), row(1n << 50n), 'admin'); const ids = publisher.calls.map((call) => call.options.msgID); expect(ids).toHaveLength(3); expect(ids[0]).toMatch(/^account_changed:1174109840998400001:11:/u); diff --git a/fluxer_api/src/api/instance/InstanceController.ts b/fluxer_api/src/api/instance/InstanceController.ts index 1f20215e2..6e59dea23 100644 --- a/fluxer_api/src/api/instance/InstanceController.ts +++ b/fluxer_api/src/api/instance/InstanceController.ts @@ -71,7 +71,7 @@ function buildDiscoveryStaticInput( self_hosted: Config.instance.selfHosted, presigned_attachment_uploads: Config.presignedAttachmentUploadsEnabled, emails_enabled: runtime.emailEnabled, - phone_verification_enabled: Config.instance.phoneVerificationEnabled, + phone_verification_enabled: false, }, gif: { provider: gifProviderName, diff --git a/fluxer_api/src/api/instance/SingleCommunityService.ts b/fluxer_api/src/api/instance/SingleCommunityService.ts index 5d118213b..5cb73ae38 100644 --- a/fluxer_api/src/api/instance/SingleCommunityService.ts +++ b/fluxer_api/src/api/instance/SingleCommunityService.ts @@ -35,6 +35,7 @@ export class SingleCommunityService { userId, guildId, skipGuildLimitCheck: true, + skipAccountLimitCheck: true, joinSourceType: JoinSourceTypes.ADMIN_FORCE_ADD, requestCache, }); diff --git a/fluxer_api/src/api/invite/InviteService.ts b/fluxer_api/src/api/invite/InviteService.ts index 76b0f1bd7..d39c46e89 100644 --- a/fluxer_api/src/api/invite/InviteService.ts +++ b/fluxer_api/src/api/invite/InviteService.ts @@ -14,6 +14,7 @@ import {createLimitMatchContext} from '@app/api/limits/LimitMatchContextBuilder' import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware'; import type {Channel} from '@app/api/models/Channel'; import {Invite} from '@app/api/models/Invite'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import * as RandomUtils from '@app/api/utils/RandomUtils'; import {AuditLogActionType} from '@fluxer/constants/src/AuditLogActionType'; import {ChannelTypes, InviteTypes, Permissions} from '@fluxer/constants/src/ChannelConstants'; @@ -260,6 +261,7 @@ export class InviteService { if (channel.recipientIds.has(userId)) { return invite; } + if (user) assertAccountNotLimited(user); await this.channelService.groupDms.addRecipientViaInvite({ channelId: invite.channelId, recipientId: userId, diff --git a/fluxer_api/src/api/middleware/AuthMiddleware.ts b/fluxer_api/src/api/middleware/AuthMiddleware.ts index af4bbd820..1e7d7cdde 100644 --- a/fluxer_api/src/api/middleware/AuthMiddleware.ts +++ b/fluxer_api/src/api/middleware/AuthMiddleware.ts @@ -1,10 +1,8 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import type {HonoEnv} from '@app/api/types/HonoEnv'; -import {getEffectiveSuspiciousFlags} from '@app/api/user/UserHelpers'; import {AccessDeniedError} from '@fluxer/errors/src/domains/core/AccessDeniedError'; import {UnauthorizedError} from '@fluxer/errors/src/domains/core/UnauthorizedError'; -import {AccountSuspiciousActivityError} from '@fluxer/errors/src/domains/user/AccountSuspiciousActivityError'; import {createMiddleware} from 'hono/factory'; function ensureOAuth2BearerRouteSupport( @@ -17,18 +15,6 @@ function ensureOAuth2BearerRouteSupport( } export const LoginRequired = createMiddleware(async (ctx, next) => { - const user = ctx.get('user'); - if (!user) { - throw new UnauthorizedError(); - } - ensureOAuth2BearerRouteSupport(ctx.get('authTokenType'), ctx.get('oauthBearerAllowed')); - const effectiveFlags = getEffectiveSuspiciousFlags(user); - if (effectiveFlags !== 0) { - throw new AccountSuspiciousActivityError(effectiveFlags); - } - await next(); -}); -export const LoginRequiredAllowSuspicious = createMiddleware(async (ctx, next) => { const user = ctx.get('user'); if (!user) { throw new UnauthorizedError(); diff --git a/fluxer_api/src/api/middleware/ContentFilterMiddleware.ts b/fluxer_api/src/api/middleware/ContentFilterMiddleware.ts index a78e6318a..7822d8402 100644 --- a/fluxer_api/src/api/middleware/ContentFilterMiddleware.ts +++ b/fluxer_api/src/api/middleware/ContentFilterMiddleware.ts @@ -81,7 +81,6 @@ const SKIP_CONTENT_FILTER_PATH_PARTS = [ '/users/@me/email-change/', '/users/@me/mfa/', '/users/@me/password-change/', - '/users/@me/phone/', '/users/@me/sudo/', '/webhooks/', ] as const; diff --git a/fluxer_api/src/api/middleware/ServiceMiddleware.ts b/fluxer_api/src/api/middleware/ServiceMiddleware.ts index 61502ad15..492b67760 100644 --- a/fluxer_api/src/api/middleware/ServiceMiddleware.ts +++ b/fluxer_api/src/api/middleware/ServiceMiddleware.ts @@ -832,11 +832,7 @@ class RequestServices implements RequestScopedServices { } get userAuthRequestService(): UserAuthRequestService { - this.cachedUserAuthRequestService ??= new UserAuthRequestService( - this.context, - getUserRepository(), - getGuildRepository(), - ); + this.cachedUserAuthRequestService ??= new UserAuthRequestService(this.context, getUserRepository()); return this.cachedUserAuthRequestService; } diff --git a/fluxer_api/src/api/middleware/tests/ContentFilterMiddleware.test.ts b/fluxer_api/src/api/middleware/tests/ContentFilterMiddleware.test.ts index 90f9fe744..61e67f6a7 100644 --- a/fluxer_api/src/api/middleware/tests/ContentFilterMiddleware.test.ts +++ b/fluxer_api/src/api/middleware/tests/ContentFilterMiddleware.test.ts @@ -71,11 +71,10 @@ describe('shouldSkipContentFilterPath', () => { '/users/@me/email-change/verify-original', '/users/@me/mfa/totp/enable', '/users/@me/password-change/complete', - '/users/@me/phone/verify', '/reports/dsa/email/verify', ]; const result = paths.map((path) => shouldSkipContentFilterPath(path)); - expect(result).toEqual([true, true, true, true, true]); + expect(result).toEqual([true, true, true, true]); }); test('does not skip public content update request bodies', () => { const paths = ['/guilds/123/vanity-url', '/channels/123/messages', '/users/@me']; diff --git a/fluxer_api/src/api/models/Guild.ts b/fluxer_api/src/api/models/Guild.ts index 15212ea2c..25ba250ce 100644 --- a/fluxer_api/src/api/models/Guild.ts +++ b/fluxer_api/src/api/models/Guild.ts @@ -8,6 +8,7 @@ import { type GuildNSFWLevelValue, GuildSplashCardAlignment, type GuildSplashCardAlignmentValue, + GuildVerificationLevel, type GuildVerificationLevelValue, normalizeLegacyNsfwLevel, } from '@fluxer/constants/src/GuildConstants'; @@ -67,7 +68,10 @@ export class Guild { this.embedSplashWidth = row.embed_splash_width ?? null; this.embedSplashHeight = row.embed_splash_height ?? null; this.features = row.features ?? new Set(); - this.verificationLevel = (row.verification_level ?? 0) as GuildVerificationLevelValue; + this.verificationLevel = Math.min( + row.verification_level ?? 0, + GuildVerificationLevel.HIGH, + ) as GuildVerificationLevelValue; this.mfaLevel = (row.mfa_level ?? 0) as GuildMFALevelValue; this.nsfwLevel = normalizeLegacyNsfwLevel(row.nsfw_level ?? 0) as GuildNSFWLevelValue; this.nsfw = row.nsfw ?? this.nsfwLevel === 3; diff --git a/fluxer_api/src/api/models/User.ts b/fluxer_api/src/api/models/User.ts index 2f131070b..bf97d71c7 100644 --- a/fluxer_api/src/api/models/User.ts +++ b/fluxer_api/src/api/models/User.ts @@ -25,7 +25,6 @@ export class User { readonly email: string | null; readonly emailVerified: boolean; readonly emailBounced: boolean; - readonly hasVerifiedPhone: boolean; readonly passwordHash: string | null; readonly passwordLastChangedAt: Date | null; readonly totpSecret: string | null; @@ -54,7 +53,6 @@ export class User { readonly stripeSubscriptionId: string | null; readonly stripeCustomerId: string | null; readonly hasEverPurchased: boolean; - readonly suspiciousActivityFlags: number; readonly termsAgreedAt: Date | null; readonly privacyAgreedAt: Date | null; readonly lastActiveAt: Date | null; @@ -90,7 +88,6 @@ export class User { this.email = row.email ?? null; this.emailVerified = row.email_verified ?? false; this.emailBounced = row.email_bounced ?? false; - this.hasVerifiedPhone = row.has_verified_phone ?? false; this.passwordHash = row.password_hash ?? null; this.passwordLastChangedAt = row.password_last_changed_at ?? null; this.totpSecret = row.totp_secret ?? null; @@ -120,7 +117,6 @@ export class User { this.stripeSubscriptionId = row.stripe_subscription_id ?? null; this.stripeCustomerId = row.stripe_customer_id ?? null; this.hasEverPurchased = row.has_ever_purchased ?? false; - this.suspiciousActivityFlags = row.suspicious_activity_flags ?? 0; this.termsAgreedAt = row.terms_agreed_at ?? null; this.privacyAgreedAt = row.privacy_agreed_at ?? null; this.lastActiveAt = row.last_active_at ?? null; @@ -184,7 +180,6 @@ export class User { email: this.email, email_verified: this.emailVerified, email_bounced: this.emailBounced, - has_verified_phone: this.hasVerifiedPhone, password_hash: this.passwordHash, password_last_changed_at: this.passwordLastChangedAt, totp_secret: this.totpSecret, @@ -213,7 +208,6 @@ export class User { stripe_subscription_id: this.stripeSubscriptionId, stripe_customer_id: this.stripeCustomerId, has_ever_purchased: this.hasEverPurchased, - suspicious_activity_flags: this.suspiciousActivityFlags, terms_agreed_at: this.termsAgreedAt, privacy_agreed_at: this.privacyAgreedAt, last_active_at: this.lastActiveAt, diff --git a/fluxer_api/src/api/oauth/ApplicationService.ts b/fluxer_api/src/api/oauth/ApplicationService.ts index 6298fb4f5..97afb262a 100644 --- a/fluxer_api/src/api/oauth/ApplicationService.ts +++ b/fluxer_api/src/api/oauth/ApplicationService.ts @@ -193,7 +193,6 @@ export class ApplicationService { stripe_subscription_id: null, stripe_customer_id: null, has_ever_purchased: null, - suspicious_activity_flags: null, terms_agreed_at: null, privacy_agreed_at: null, last_active_at: null, @@ -499,17 +498,17 @@ export class ApplicationService { } updates.bio = args.bio; } - if (args.bot_flags !== undefined) { - const mask = UserFlags.FRIENDLY_BOT | UserFlags.FRIENDLY_BOT_MANUAL_APPROVAL; - const updatedFlags = (botUser.flags & ~mask) | (BigInt(args.bot_flags) & mask); - if (updatedFlags !== botUser.flags) { - updates.flags = updatedFlags; - } - } const preparedAssets = await this.prepareBotAssets(botUser, args, updates); let updatedUser: User; try { updatedUser = await this.apiContext.services.users.patchUpsert(botUserId, updates, botUser.toRow()); + if (args.bot_flags !== undefined) { + const mask = UserFlags.FRIENDLY_BOT | UserFlags.FRIENDLY_BOT_MANUAL_APPROVAL; + const botFlags = BigInt(args.bot_flags) & mask; + updatedUser = + (await this.apiContext.services.users.updateFlags(botUserId, (flags) => (flags & ~mask) | botFlags)) ?? + updatedUser; + } } catch (err) { Logger.error( {error: err, applicationId: applicationId.toString(), botUserId: botUserId.toString()}, diff --git a/fluxer_api/src/api/oauth/OAuth2ApplicationsController.ts b/fluxer_api/src/api/oauth/OAuth2ApplicationsController.ts index 5c62e120c..7a6f64d53 100644 --- a/fluxer_api/src/api/oauth/OAuth2ApplicationsController.ts +++ b/fluxer_api/src/api/oauth/OAuth2ApplicationsController.ts @@ -1,6 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later -import {DefaultUserOnly, LoginRequiredAllowSuspicious} from '@app/api/middleware/AuthMiddleware'; +import {DefaultUserOnly, LoginRequired} from '@app/api/middleware/AuthMiddleware'; import {CaptchaMiddleware} from '@app/api/middleware/CaptchaMiddleware'; import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware'; import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware'; @@ -39,7 +39,7 @@ export function OAuth2ApplicationsController(app: HonoApp) { app.get( '/users/@me/applications', RateLimitMiddleware(RateLimitConfigs.OAUTH_DEV_CLIENTS_LIST), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, OpenAPI({ operationId: 'list_user_applications', @@ -56,7 +56,7 @@ export function OAuth2ApplicationsController(app: HonoApp) { app.get( '/oauth2/applications/@me', RateLimitMiddleware(RateLimitConfigs.OAUTH_DEV_CLIENTS_LIST), - LoginRequiredAllowSuspicious, + LoginRequired, OpenAPI({ operationId: 'get_oauth_applications_me', summary: 'Get current applications endpoint', @@ -72,7 +72,7 @@ export function OAuth2ApplicationsController(app: HonoApp) { app.post( '/oauth2/applications', RateLimitMiddleware(RateLimitConfigs.OAUTH_DEV_CLIENT_CREATE), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, CaptchaMiddleware, Validator('json', ApplicationCreateRequest), @@ -96,7 +96,7 @@ export function OAuth2ApplicationsController(app: HonoApp) { app.get( '/oauth2/applications/:id', RateLimitMiddleware(RateLimitConfigs.OAUTH_DEV_CLIENTS_LIST), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('param', ApplicationIdParam), OpenAPI({ @@ -120,7 +120,7 @@ export function OAuth2ApplicationsController(app: HonoApp) { app.patch( '/oauth2/applications/:id', RateLimitMiddleware(RateLimitConfigs.OAUTH_DEV_CLIENT_UPDATE), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('param', ApplicationIdParam), Validator('json', ApplicationUpdateRequest), @@ -146,7 +146,7 @@ export function OAuth2ApplicationsController(app: HonoApp) { app.delete( '/oauth2/applications/:id', RateLimitMiddleware(RateLimitConfigs.OAUTH_DEV_CLIENT_DELETE), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, SudoModeMiddleware, Validator('param', ApplicationIdParam), @@ -176,7 +176,7 @@ export function OAuth2ApplicationsController(app: HonoApp) { app.patch( '/oauth2/applications/:id/bot', RateLimitMiddleware(RateLimitConfigs.OAUTH_DEV_CLIENT_UPDATE), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('param', ApplicationIdParam), Validator('json', BotProfileUpdateRequest), diff --git a/fluxer_api/src/api/oauth/OAuth2Controller.ts b/fluxer_api/src/api/oauth/OAuth2Controller.ts index 9c68506e8..b98a33ee3 100644 --- a/fluxer_api/src/api/oauth/OAuth2Controller.ts +++ b/fluxer_api/src/api/oauth/OAuth2Controller.ts @@ -1,7 +1,7 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import {Config} from '@app/api/Config'; -import {DefaultUserOnly, LoginRequiredAllowSuspicious} from '@app/api/middleware/AuthMiddleware'; +import {DefaultUserOnly, LoginRequired} from '@app/api/middleware/AuthMiddleware'; import {requireOAuth2BearerToken, requireOAuth2Scope} from '@app/api/middleware/OAuth2ScopeMiddleware'; import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware'; import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware'; @@ -104,7 +104,7 @@ export function OAuth2Controller(app: HonoApp) { app.post( '/oauth2/authorize/consent', RateLimitMiddleware(RateLimitConfigs.OAUTH_AUTHORIZE), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('json', AuthorizeConsentRequest), OpenAPI({ @@ -219,7 +219,7 @@ export function OAuth2Controller(app: HonoApp) { '/oauth2/@me', RateLimitMiddleware(RateLimitConfigs.OAUTH_INTROSPECT), requireOAuth2BearerToken(), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, OpenAPI({ operationId: 'get_current_user_oauth2', @@ -280,7 +280,7 @@ export function OAuth2Controller(app: HonoApp) { app.post( '/oauth2/applications/:id/bot/reset-token', RateLimitMiddleware(RateLimitConfigs.OAUTH_DEV_CLIENT_ROTATE_SECRET), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, SudoModeMiddleware, Validator('param', ApplicationIdParam), @@ -311,7 +311,7 @@ export function OAuth2Controller(app: HonoApp) { app.post( '/oauth2/applications/:id/client-secret/reset', RateLimitMiddleware(RateLimitConfigs.OAUTH_DEV_CLIENT_ROTATE_SECRET), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, SudoModeMiddleware, Validator('param', ApplicationIdParam), @@ -342,7 +342,7 @@ export function OAuth2Controller(app: HonoApp) { app.get( '/oauth2/@me/authorizations', RateLimitMiddleware(RateLimitConfigs.OAUTH_DEV_CLIENTS_LIST), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, OpenAPI({ operationId: 'list_user_oauth2_authorizations', @@ -363,7 +363,7 @@ export function OAuth2Controller(app: HonoApp) { app.delete( '/oauth2/@me/authorizations/:applicationId', RateLimitMiddleware(RateLimitConfigs.OAUTH_INTROSPECT), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('param', ApplicationAuthorizationIdParam), OpenAPI({ @@ -386,7 +386,7 @@ export function OAuth2Controller(app: HonoApp) { app.post( '/oauth2/@me/authorizations/revoke', RateLimitMiddleware(RateLimitConfigs.OAUTH_INTROSPECT), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('json', OAuth2AuthorizationsBulkRevokeRequest), OpenAPI({ diff --git a/fluxer_api/src/api/oauth/OAuth2RequestService.ts b/fluxer_api/src/api/oauth/OAuth2RequestService.ts index 175174f6f..29245b8a5 100644 --- a/fluxer_api/src/api/oauth/OAuth2RequestService.ts +++ b/fluxer_api/src/api/oauth/OAuth2RequestService.ts @@ -282,6 +282,7 @@ export class OAuth2RequestService { guildId, skipGuildLimitCheck: true, skipBanCheck: true, + skipAccountLimitCheck: true, joinSourceType: JoinSourceTypes.BOT_INVITE, inviterId: params.userId, requestCache: params.requestCache, diff --git a/fluxer_api/src/api/openapi/openapi.json b/fluxer_api/src/api/openapi/openapi.json index 45befcc4a..6bcf7e2e8 100644 --- a/fluxer_api/src/api/openapi/openapi.json +++ b/fluxer_api/src/api/openapi/openapi.json @@ -13902,7 +13902,7 @@ "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, - "description": "Retrieves the current authenticated user's profile information, including account details and settings. OAuth2 bearer tokens require identify scope, and email is returned only when the email scope is also present. Bearer tokens receive a reduced response: sensitive fields such as phone, MFA status, authenticator types, ACLs, traits, premium billing details, and password metadata are omitted. Session and bot tokens return the full user object with all private fields.", + "description": "Retrieves the current authenticated user's profile information, including account details and settings. OAuth2 bearer tokens require identify scope, and email is returned only when the email scope is also present. Bearer tokens receive a reduced response: sensitive fields such as MFA status, authenticator types, ACLs, traits, premium billing details, and password metadata are omitted. Session and bot tokens return the full user object with all private fields.", "security": [{"botToken": []}, {"oauth2Token": ["identify"]}, {"sessionToken": []}] }, "patch": { @@ -15141,7 +15141,7 @@ "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} } }, - "description": "Completes bounced-email recovery by verifying the replacement email code, updating the account email, and clearing email-related suspicious-activity requirements.", + "description": "Completes bounced-email recovery by verifying the replacement email code, and updating the account email.", "security": [{"sessionToken": []}], "requestBody": { "required": true, @@ -18837,175 +18837,6 @@ } } }, - "/users/@me/phone/inbound-challenge": { - "post": { - "operationId": "start_inbound_phone_challenge", - "summary": "Start an inbound SMS challenge", - "tags": ["Users"], - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": {"schema": {"$ref": "#/components/schemas/InboundSmsChallengeStartResponse"}} - } - }, - "400": { - "description": "Bad Request - The request was malformed or contained invalid data", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "401": { - "description": "Unauthorized - Authentication is required or the token is invalid", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "403": { - "description": "Forbidden - You do not have permission to perform this action", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "429": { - "description": "Too Many Requests - You are being rate limited", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, - "headers": { - "Retry-After": { - "description": "Number of seconds to wait before retrying (only on 429)", - "schema": {"type": "integer"} - }, - "X-RateLimit-Limit": { - "description": "The number of requests that can be made in the current window", - "schema": {"type": "integer"} - }, - "X-RateLimit-Remaining": { - "description": "The number of remaining requests that can be made", - "schema": {"type": "integer"} - }, - "X-RateLimit-Reset": { - "description": "Unix timestamp when the rate limit resets", - "schema": {"type": "integer"} - } - } - }, - "500": { - "description": "Internal Server Error - An unexpected error occurred", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - } - }, - "description": "When an account must verify its phone number inbound, the user texts a one-time code to the platform's number instead of receiving one. This endpoint generates the code and the destination number to display.", - "security": [{"sessionToken": []}] - } - }, - "/users/@me/phone/send-verification": { - "post": { - "operationId": "send_phone_verification_code", - "summary": "Send phone verification code", - "tags": ["Users"], - "responses": { - "200": { - "description": "Success", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneSendVerificationResponse"}}} - }, - "400": { - "description": "Bad Request - The request was malformed or contained invalid data", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "401": { - "description": "Unauthorized - Authentication is required or the token is invalid", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "403": { - "description": "Forbidden - You do not have permission to perform this action", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "429": { - "description": "Too Many Requests - You are being rate limited", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, - "headers": { - "Retry-After": { - "description": "Number of seconds to wait before retrying (only on 429)", - "schema": {"type": "integer"} - }, - "X-RateLimit-Limit": { - "description": "The number of requests that can be made in the current window", - "schema": {"type": "integer"} - }, - "X-RateLimit-Remaining": { - "description": "The number of remaining requests that can be made", - "schema": {"type": "integer"} - }, - "X-RateLimit-Reset": { - "description": "Unix timestamp when the rate limit resets", - "schema": {"type": "integer"} - } - } - }, - "500": { - "description": "Internal Server Error - An unexpected error occurred", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - } - }, - "description": "Send a one-time code on the requested channel. Defaults to the first available channel from server policy. Pass channel=\"sms\" to request SMS (only honoured for SMS-allowlisted destinations) or channel=\"inbound_challenge\" to receive challenge details to text in. Expensive outbound destinations always downgrade to an inbound challenge. Requires a solved captcha challenge (X-Captcha-Token) when the phone verification service asks for one.", - "security": [{"sessionToken": []}], - "requestBody": { - "required": true, - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneSendVerificationRequest"}}} - } - } - }, - "/users/@me/phone/verify": { - "post": { - "operationId": "verify_phone_code", - "summary": "Verify phone code", - "tags": ["Users"], - "responses": { - "200": { - "description": "Success", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneVerifyResponse"}}} - }, - "400": { - "description": "Bad Request - The request was malformed or contained invalid data", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "401": { - "description": "Unauthorized - Authentication is required or the token is invalid", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "403": { - "description": "Forbidden - You do not have permission to perform this action", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "429": { - "description": "Too Many Requests - You are being rate limited", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, - "headers": { - "Retry-After": { - "description": "Number of seconds to wait before retrying (only on 429)", - "schema": {"type": "integer"} - }, - "X-RateLimit-Limit": { - "description": "The number of requests that can be made in the current window", - "schema": {"type": "integer"} - }, - "X-RateLimit-Remaining": { - "description": "The number of remaining requests that can be made", - "schema": {"type": "integer"} - }, - "X-RateLimit-Reset": { - "description": "Unix timestamp when the rate limit resets", - "schema": {"type": "integer"} - } - } - }, - "500": { - "description": "Internal Server Error - An unexpected error occurred", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - } - }, - "description": "Verify a phone number by confirming the SMS verification code. Returns phone verification status.", - "security": [{"sessionToken": []}], - "requestBody": { - "required": true, - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneVerifyRequest"}}} - } - } - }, "/users/@me/preload-messages": { "post": { "operationId": "preload_messages_for_channels", @@ -19762,114 +19593,6 @@ } } }, - "/users/@me/required-actions/phone-gate-escape": { - "get": { - "operationId": "get_phone_gate_escape", - "summary": "Preview setting the deferred phone check aside", - "tags": ["Users"], - "responses": { - "200": { - "description": "Success", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PhoneGateEscapePreviewResponse"}}} - }, - "400": { - "description": "Bad Request - The request was malformed or contained invalid data", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "401": { - "description": "Unauthorized - Authentication is required or the token is invalid", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "403": { - "description": "Forbidden - You do not have permission to perform this action", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "429": { - "description": "Too Many Requests - You are being rate limited", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, - "headers": { - "Retry-After": { - "description": "Number of seconds to wait before retrying (only on 429)", - "schema": {"type": "integer"} - }, - "X-RateLimit-Limit": { - "description": "The number of requests that can be made in the current window", - "schema": {"type": "integer"} - }, - "X-RateLimit-Remaining": { - "description": "The number of remaining requests that can be made", - "schema": {"type": "integer"} - }, - "X-RateLimit-Reset": { - "description": "Unix timestamp when the rate limit resets", - "schema": {"type": "integer"} - } - } - }, - "500": { - "description": "Internal Server Error - An unexpected error occurred", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - } - }, - "description": "Reports whether this account can set a due phone verification requirement aside. The community lists are always empty.", - "security": [{"sessionToken": []}] - }, - "post": { - "operationId": "execute_phone_gate_escape", - "summary": "Set the deferred phone check aside", - "tags": ["Users"], - "responses": { - "200": { - "description": "Success", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserPrivateResponse"}}} - }, - "400": { - "description": "Bad Request - The request was malformed or contained invalid data", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "401": { - "description": "Unauthorized - Authentication is required or the token is invalid", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "403": { - "description": "Forbidden - You do not have permission to perform this action", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - }, - "429": { - "description": "Too Many Requests - You are being rate limited", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ThrottledError"}}}, - "headers": { - "Retry-After": { - "description": "Number of seconds to wait before retrying (only on 429)", - "schema": {"type": "integer"} - }, - "X-RateLimit-Limit": { - "description": "The number of requests that can be made in the current window", - "schema": {"type": "integer"} - }, - "X-RateLimit-Remaining": { - "description": "The number of remaining requests that can be made", - "schema": {"type": "integer"} - }, - "X-RateLimit-Reset": { - "description": "Unix timestamp when the rate limit resets", - "schema": {"type": "integer"} - } - } - }, - "500": { - "description": "Internal Server Error - An unexpected error occurred", - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}} - } - }, - "description": "Defers a due phone verification requirement again, so the account works normally without leaving any community. Returns the updated private user object.", - "security": [{"sessionToken": []}], - "requestBody": { - "required": false, - "content": {"application/json": {"schema": {"$ref": "#/components/schemas/EmptyBodyRequest"}}} - } - } - }, "/users/@me/saved-messages": { "get": { "operationId": "list_saved_messages", @@ -22978,14 +22701,7 @@ "description": "Whether the current email address is marked as bounced by the mail provider", "type": "boolean" }, - "phone": { - "description": "Always null. Retained for old-client backward compatibility — phone numbers are no longer stored on the user record.", - "type": ["string", "null"] - }, - "has_verified_phone": { - "type": "boolean", - "description": "Whether this account has completed phone verification" - }, + "has_verified_phone": {"type": "boolean", "description": "Deprecated. Always false."}, "bio": {"description": "The user biography text", "type": ["string", "null"]}, "pronouns": {"description": "The preferred pronouns of the user", "type": ["string", "null"]}, "accent_color": { @@ -23006,6 +22722,7 @@ "items": {"$ref": "#/components/schemas/UserAuthenticatorTypes"} }, "verified": {"type": "boolean", "description": "Whether the email address has been verified"}, + "account_limited": {"description": "Whether the account is limited", "type": "boolean"}, "premium_type": { "anyOf": [ {"$ref": "#/components/schemas/UserPremiumTypes", "description": "The type of premium subscription"}, @@ -23068,10 +22785,6 @@ "type": "boolean", "description": "Whether premium perks are temporarily disabled for this account" }, - "force_inbound_phone_verification": { - "description": "Whether this account is forced through the inbound phone verification flow, for debugging", - "type": "boolean" - }, "password_last_changed_at": { "description": "ISO8601 timestamp of the last password change", "type": ["string", "null"] @@ -23083,7 +22796,7 @@ "required_actions": { "type": "array", "items": {"type": "string"}, - "description": "Actions the user must complete before full access" + "description": "Deprecated. Always empty." }, "nsfw_allowed": {"type": "boolean", "description": "Whether the user is allowed to view NSFW content"}, "has_dismissed_premium_onboarding": { @@ -23583,49 +23296,6 @@ "type": "array", "items": {"$ref": "#/components/schemas/SavedMessageEntryResponse"} }, - "PhoneGateEscapePreviewResponse": { - "type": "object", - "properties": { - "available": { - "type": "boolean", - "description": "Whether this account can set a due phone verification requirement aside right now" - }, - "guilds": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "description": "The unique identifier (snowflake) for the community", - "$ref": "#/components/schemas/SnowflakeStringType" - }, - "name": {"type": "string", "description": "The community name"} - }, - "required": ["id", "name"], - "additionalProperties": false - }, - "description": "Always empty, the escape leaves no community" - }, - "owned_guilds": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "description": "The unique identifier (snowflake) for the community", - "$ref": "#/components/schemas/SnowflakeStringType" - }, - "name": {"type": "string", "description": "The community name"} - }, - "required": ["id", "name"], - "additionalProperties": false - }, - "description": "Always empty, the escape leaves no community" - } - }, - "required": ["available", "guilds", "owned_guilds"], - "additionalProperties": false - }, "RelationshipNicknameUpdateRequest": { "type": "object", "properties": { @@ -23808,112 +23478,6 @@ "additionalProperties": {"anyOf": [{"$ref": "#/components/schemas/MessageResponseSchema"}, {"type": "null"}]}, "description": "A map of channel IDs to the latest message in each channel" }, - "PhoneVerifyRequest": { - "type": "object", - "properties": { - "phone": {"description": "Phone number being verified", "$ref": "#/components/schemas/PhoneNumberType"}, - "code": {"description": "The verification code", "type": "string"} - }, - "required": ["phone", "code"] - }, - "PhoneVerifyResponse": { - "type": "object", - "properties": { - "verified": { - "type": "boolean", - "const": true, - "description": "Indicates the phone number was verified successfully" - } - }, - "required": ["verified"], - "additionalProperties": false - }, - "PhoneSendVerificationRequest": { - "type": "object", - "properties": { - "phone": { - "description": "Phone number to send verification code", - "$ref": "#/components/schemas/PhoneNumberType" - }, - "channel": { - "description": "Channel to deliver the OTP on. Defaults to the first available channel from server policy. Server may override to an available fallback when the requested channel is disabled.", - "type": "string", - "enum": ["sms", "inbound_challenge"] - } - }, - "required": ["phone"] - }, - "PhoneSendVerificationResponse": { - "anyOf": [ - { - "type": "object", - "properties": { - "channel": { - "type": "string", - "const": "sms", - "description": "Channel actually used for delivery (may differ from request when server adjusts)" - } - }, - "required": ["channel"], - "additionalProperties": false - }, - { - "type": "object", - "properties": { - "channel": { - "type": "string", - "const": "inbound_challenge", - "description": "The user must send Fluxer an SMS instead of receiving one" - }, - "challenge_code": { - "description": "The numeric code the user must text to our number", - "type": "string", - "minLength": 4, - "maxLength": 12 - }, - "our_number": { - "description": "The Twilio number the user must text the code to (E.164)", - "type": "string", - "minLength": 4, - "maxLength": 32 - }, - "expires_at": { - "type": "string", - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "description": "ISO 8601 timestamp when this inbound challenge expires" - }, - "reason": { - "type": "string", - "enum": ["verification_required"], - "description": "Always verification_required" - } - }, - "required": ["channel", "challenge_code", "our_number", "expires_at", "reason"], - "additionalProperties": false - } - ] - }, - "InboundSmsChallengeStartResponse": { - "type": "object", - "properties": { - "challenge_code": { - "description": "The numeric code the user must text to our number", - "type": "string", - "minLength": 4, - "maxLength": 12 - }, - "our_number": { - "description": "The Twilio number the user must text the code to (E.164)", - "type": "string", - "minLength": 4, - "maxLength": 32 - }, - "expires_at": {"type": "string", "description": "ISO timestamp at which the challenge becomes invalid"} - }, - "required": ["challenge_code", "our_number", "expires_at"], - "additionalProperties": false - }, "PasswordChangeVerifyRequest": { "type": "object", "properties": { @@ -28519,8 +28083,8 @@ }, "default_message_notifications": {"$ref": "#/components/schemas/DefaultMessageNotificationsInput"}, "verification_level": { - "$ref": "#/components/schemas/GuildVerificationLevelInput", - "description": "Required verification level for members to participate" + "description": "Required verification level for members to participate", + "$ref": "#/components/schemas/GuildVerificationLevelInput" }, "mfa_level": {"$ref": "#/components/schemas/GuildMFALevelInput"}, "nsfw_level": { @@ -30853,10 +30417,7 @@ "type": "boolean", "description": "Whether the instance sends emails (verification, password reset, etc.)" }, - "phone_verification_enabled": { - "type": "boolean", - "description": "Whether users can verify a phone number, so the very high guild verification level applies" - } + "phone_verification_enabled": {"type": "boolean", "description": "Deprecated. Always false."} }, "required": [ "voice_enabled", @@ -32852,15 +32413,14 @@ "minimum": 0, "maximum": 2147483647, "format": "int32", - "x-enumNames": ["NONE", "LOW", "MEDIUM", "HIGH", "VERY_HIGH"], + "x-enumNames": ["NONE", "LOW", "MEDIUM", "HIGH"], "x-enumDescriptions": [ "Unrestricted", "Must have verified email", "Registered for more than 5 minutes", - "Member of the server for more than 10 minutes", - "Must have a verified phone number" + "Member of the server for more than 10 minutes" ], - "enum": [0, 1, 2, 3, 4] + "enum": [0, 1, 2, 3] }, "DefaultMessageNotificationsInput": { "description": "Default notification level for new members", @@ -33793,15 +33353,14 @@ "GuildVerificationLevel": { "description": "Required verification level for members", "type": "integer", - "enum": [0, 1, 2, 3, 4], + "enum": [0, 1, 2, 3], "format": "int32", - "x-enumNames": ["NONE", "LOW", "MEDIUM", "HIGH", "VERY_HIGH"], + "x-enumNames": ["NONE", "LOW", "MEDIUM", "HIGH"], "x-enumDescriptions": [ "Unrestricted", "Must have verified email", "Registered for more than 5 minutes", - "Member of the server for more than 10 minutes", - "Must have a verified phone number" + "Member of the server for more than 10 minutes" ] }, "GroupDmInviteResponse": { @@ -35748,7 +35307,6 @@ "required": ["status"], "additionalProperties": false }, - "PhoneNumberType": {"type": "string"}, "RelationshipTypesInput": { "description": "Relationship type", "type": "integer", diff --git a/fluxer_api/src/api/rate_limit_configs/AuthRateLimitConfig.ts b/fluxer_api/src/api/rate_limit_configs/AuthRateLimitConfig.ts index 13dfb8ab7..96b4c219a 100644 --- a/fluxer_api/src/api/rate_limit_configs/AuthRateLimitConfig.ts +++ b/fluxer_api/src/api/rate_limit_configs/AuthRateLimitConfig.ts @@ -108,14 +108,6 @@ export const AuthRateLimitConfigs = { bucket: 'mfa:webauthn:migration', config: {limit: 20, windowMs: ms('1 minute')}, } as RouteRateLimitConfig, - PHONE_SEND_VERIFICATION: { - bucket: 'phone:send_verification', - config: {limit: 5, windowMs: ms('1 minute')}, - } as RouteRateLimitConfig, - PHONE_VERIFY_CODE: { - bucket: 'phone:verify_code', - config: {limit: 10, windowMs: ms('1 minute')}, - } as RouteRateLimitConfig, AUTH_HANDOFF_INITIATE: { bucket: 'auth:handoff:initiate', config: {limit: 10, windowMs: ms('1 minute')}, diff --git a/fluxer_api/src/api/rate_limit_configs/UserRateLimitConfig.ts b/fluxer_api/src/api/rate_limit_configs/UserRateLimitConfig.ts index c82dba64f..84af714f8 100644 --- a/fluxer_api/src/api/rate_limit_configs/UserRateLimitConfig.ts +++ b/fluxer_api/src/api/rate_limit_configs/UserRateLimitConfig.ts @@ -84,14 +84,6 @@ export const UserRateLimitConfigs = { bucket: 'user:account:delete', config: {limit: 5, windowMs: ms('1 hour')}, } as RouteRateLimitConfig, - USER_PHONE_GATE_ESCAPE_PREVIEW: { - bucket: 'user:phone_gate_escape:preview', - config: {limit: 20, windowMs: ms('1 minute')}, - } as RouteRateLimitConfig, - USER_PHONE_GATE_ESCAPE: { - bucket: 'user:phone_gate_escape:execute', - config: {limit: 5, windowMs: ms('1 hour')}, - } as RouteRateLimitConfig, USER_DATA_HARVEST: { bucket: 'user:data:harvest', config: {limit: 5, windowMs: ms('30 minutes')}, diff --git a/fluxer_api/src/api/rate_limit_configs/WebhookRateLimitConfig.ts b/fluxer_api/src/api/rate_limit_configs/WebhookRateLimitConfig.ts index d79c5eae6..c5842f828 100644 --- a/fluxer_api/src/api/rate_limit_configs/WebhookRateLimitConfig.ts +++ b/fluxer_api/src/api/rate_limit_configs/WebhookRateLimitConfig.ts @@ -48,10 +48,6 @@ export const WebhookRateLimitConfigs = { bucket: 'webhook:github::webhook_id', config: {limit: 200, windowMs: ms('1 minute'), exemptFromGlobal: true}, } as RouteRateLimitConfig, - WEBHOOK_TWILIO_SMS: { - bucket: 'webhook:twilio_sms', - config: {limit: 60, windowMs: ms('1 minute'), exemptFromGlobal: true}, - } as RouteRateLimitConfig, WEBHOOK_INSTATUS: { bucket: 'webhook:instatus::webhook_id', config: {limit: 200, windowMs: ms('1 minute'), exemptFromGlobal: true}, diff --git a/fluxer_api/src/api/rpc/RpcSessionStartService.ts b/fluxer_api/src/api/rpc/RpcSessionStartService.ts index f9a4c34e3..c1da289f4 100644 --- a/fluxer_api/src/api/rpc/RpcSessionStartService.ts +++ b/fluxer_api/src/api/rpc/RpcSessionStartService.ts @@ -24,7 +24,7 @@ import {mapUserToPrivateResponse} from '@app/api/user/UserMappers'; import {PremiumFlags, UserFlags} from '@fluxer/constants/src/UserConstants'; import type {RpcSessionTimings} from '@fluxer/schema/src/domains/rpc/RpcSchemas'; -interface SessionStartUserRepository extends Pick {} +interface SessionStartUserRepository extends Pick {} interface SessionStartGuildRepository extends Pick {} @@ -52,7 +52,6 @@ interface ProcessSessionStartParams { interface ProcessSessionStartResult { user: User; - flagsToUpdate: bigint | null; timings: RpcSessionTimings; } @@ -70,12 +69,17 @@ export class RpcSessionStartService { { user_id: startedUser.id.toString(), is_bot: startedUser.isBot, - has_verified_phone: startedUser.hasVerifiedPhone, flags: startedUser.flags.toString(), - suspicious_flags: startedUser.suspiciousActivityFlags ?? 0, has_ever_paid: startedUser.hasEverPurchased, }, - {ip: clientIp, country: geoipCountryIso, ua: null, locale: null, channel: 'other', request_id: null}, + { + ip: clientIp, + country: geoipCountryIso, + ua: null, + locale: startedUser.locale, + channel: 'other', + request_id: null, + }, ); timings.timeSync('clear_expired_custom_status', () => { const userSettings = userData.settings; @@ -86,7 +90,7 @@ export class RpcSessionStartService { userData.settings = clearedSettings; } }); - let flagsToUpdate: bigint | null = null; + let needsSessionStartedFlag = false; let premiumFlagsToUpdate: number | null = null; let hadPremium = false; let isPremium = false; @@ -94,7 +98,7 @@ export class RpcSessionStartService { let hasBeenSanitized = false; timings.timeSync('compute_session_and_premium_flags', () => { if (!(user.flags & UserFlags.HAS_SESSION_STARTED)) { - flagsToUpdate = (flagsToUpdate ?? user.flags) | UserFlags.HAS_SESSION_STARTED; + needsSessionStartedFlag = true; } hadPremium = user.premiumType != null && user.premiumType > 0; isPremium = user.isPremium(); @@ -236,11 +240,24 @@ export class RpcSessionStartService { }); timings.record('sanitize_expired_premium_perks', sanitizePremiumStartedAtNs, sanitizePremiumSteps); } + if (needsSessionStartedFlag) { + await timings.time('persist_session_started_flag', async () => { + try { + const updatedUser = await this.deps.userRepository.updateFlags( + user.id, + (flags) => flags | UserFlags.HAS_SESSION_STARTED, + ); + if (updatedUser) { + user = updatedUser; + userData.user = updatedUser; + } + } catch (error) { + Logger.warn({userId: user.id, error}, 'Failed to persist the session started flag'); + } + }); + } const flagPatch: Partial = {}; timings.timeSync('build_session_flag_patch', () => { - if (flagsToUpdate !== null && flagsToUpdate !== user.flags) { - flagPatch.flags = flagsToUpdate; - } if (premiumFlagsToUpdate !== null && premiumFlagsToUpdate !== user.premiumFlags) { flagPatch.premium_flags = premiumFlagsToUpdate; } @@ -258,6 +275,6 @@ export class RpcSessionStartService { } }); } - return {user, flagsToUpdate, timings: timings.finalize()}; + return {user, timings: timings.finalize()}; } } diff --git a/fluxer_api/src/api/search/guild/GuildSearchSerializer.ts b/fluxer_api/src/api/search/guild/GuildSearchSerializer.ts index f4d61c2ec..fc6898ceb 100644 --- a/fluxer_api/src/api/search/guild/GuildSearchSerializer.ts +++ b/fluxer_api/src/api/search/guild/GuildSearchSerializer.ts @@ -34,7 +34,7 @@ export function convertToSearchableGuild(guild: Guild, discovery?: GuildDiscover bannerHash: guild.bannerHash, splashHash: guild.splashHash, features: Array.from(guild.features), - verificationLevel: getEffectiveGuildVerificationLevel(guild.verificationLevel, isDiscoverable, true), + verificationLevel: getEffectiveGuildVerificationLevel(guild.verificationLevel, isDiscoverable), mfaLevel: guild.mfaLevel, nsfwLevel: guild.nsfwLevel, createdAt, diff --git a/fluxer_api/src/api/search/meilisearch/MeilisearchDomainAdapters.ts b/fluxer_api/src/api/search/meilisearch/MeilisearchDomainAdapters.ts index a055d6c07..3e1f010ec 100644 --- a/fluxer_api/src/api/search/meilisearch/MeilisearchDomainAdapters.ts +++ b/fluxer_api/src/api/search/meilisearch/MeilisearchDomainAdapters.ts @@ -171,9 +171,6 @@ function buildUserFilters(filters: UserSearchFilters): Array 0) clauses.push(...meiliAndTerms('acls', filters.hasAcl)); - if (filters.minSuspiciousActivityFlags !== undefined) { - clauses.push(meiliRangeFilter('suspiciousActivityFlags', {gte: filters.minSuspiciousActivityFlags})); - } if (filters.createdAtGreaterThanOrEqual !== undefined) { clauses.push(meiliRangeFilter('createdAt', {gte: filters.createdAtGreaterThanOrEqual})); } diff --git a/fluxer_api/src/api/search/meilisearch/MeilisearchIndexDefinitions.ts b/fluxer_api/src/api/search/meilisearch/MeilisearchIndexDefinitions.ts index 3b4a3f94a..8e5629833 100644 --- a/fluxer_api/src/api/search/meilisearch/MeilisearchIndexDefinitions.ts +++ b/fluxer_api/src/api/search/meilisearch/MeilisearchIndexDefinitions.ts @@ -72,7 +72,6 @@ export const MEILISEARCH_INDEX_DEFINITIONS: Record flags | UserFlags.AGE_VERIFIED_ADULT); + if (!updatedUser) { + Logger.error({userId}, 'User not found during age verification completion'); + return; + } await this.gatewayService.dispatchPresence({ userId: updatedUser.id, event: 'USER_UPDATE', diff --git a/fluxer_api/src/api/stripe/services/StripePremiumService.ts b/fluxer_api/src/api/stripe/services/StripePremiumService.ts index 61161b438..026338ca3 100644 --- a/fluxer_api/src/api/stripe/services/StripePremiumService.ts +++ b/fluxer_api/src/api/stripe/services/StripePremiumService.ts @@ -307,6 +307,7 @@ export class StripePremiumService { guildId: visionariesGuildId, sendJoinMessage: true, skipBanCheck: true, + skipAccountLimitCheck: true, requestCache, }); Logger.debug({userId, guildId: visionariesGuildId}, 'Added visionary user to visionaries guild'); diff --git a/fluxer_api/src/api/test/TestHarnessController.ts b/fluxer_api/src/api/test/TestHarnessController.ts index 3bed38d65..bdf9f0d2b 100644 --- a/fluxer_api/src/api/test/TestHarnessController.ts +++ b/fluxer_api/src/api/test/TestHarnessController.ts @@ -62,7 +62,7 @@ import {setWorkerDependencies} from '@app/api/worker/WorkerContext'; import {initializeWorkerDependencies} from '@app/api/worker/WorkerDependencies'; import {ChannelTypes} from '@fluxer/constants/src/ChannelConstants'; import {MAX_GUILD_MEMBERS_VERY_LARGE_GUILD} from '@fluxer/constants/src/LimitConstants'; -import {PremiumFlags, SuspiciousActivityFlags, UserFlags} from '@fluxer/constants/src/UserConstants'; +import {PremiumFlags, UserFlags} from '@fluxer/constants/src/UserConstants'; import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes'; import {EmailServiceNotTestableError} from '@fluxer/errors/src/domains/auth/EmailServiceNotTestableError'; import {UnknownMessageError} from '@fluxer/errors/src/domains/channel/UnknownMessageError'; @@ -71,14 +71,12 @@ import {DeletionFailedError} from '@fluxer/errors/src/domains/core/DeletionFaile import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError'; import {InvalidAclsFormatError} from '@fluxer/errors/src/domains/core/InvalidAclsFormatError'; import {InvalidFlagsFormatError} from '@fluxer/errors/src/domains/core/InvalidFlagsFormatError'; -import {InvalidSuspiciousFlagsFormatError} from '@fluxer/errors/src/domains/core/InvalidSuspiciousFlagsFormatError'; import {InvalidSystemFlagError} from '@fluxer/errors/src/domains/core/InvalidSystemFlagError'; import {InvalidTimestampError} from '@fluxer/errors/src/domains/core/InvalidTimestampError'; import {NoPendingDeletionError} from '@fluxer/errors/src/domains/core/NoPendingDeletionError'; import {ProcessingFailedError} from '@fluxer/errors/src/domains/core/ProcessingFailedError'; import {TestHarnessDisabledError} from '@fluxer/errors/src/domains/core/TestHarnessDisabledError'; import {TestHarnessForbiddenError} from '@fluxer/errors/src/domains/core/TestHarnessForbiddenError'; -import {UnknownSuspiciousFlagError} from '@fluxer/errors/src/domains/core/UnknownSuspiciousFlagError'; import {UpdateFailedError} from '@fluxer/errors/src/domains/core/UpdateFailedError'; import {UnknownGuildError} from '@fluxer/errors/src/domains/guild/UnknownGuildError'; import {UnknownGuildMemberError} from '@fluxer/errors/src/domains/guild/UnknownGuildMemberError'; @@ -238,7 +236,6 @@ async function initializeWorkerDepsWithHarnessEmail(ctx: Context, snowf const userFlagEntries = Object.entries(UserFlags); const premiumFlagEntries = Object.entries(PremiumFlags); -const suspiciousFlagEntries = Object.entries(SuspiciousActivityFlags); function parseUserFlagNames(names: Array): bigint | null { let mask = 0n; @@ -262,18 +259,6 @@ function parsePremiumFlagNames(names: Array): number | null { return mask; } -function parseSuspiciousFlagNames(names: Array): number | null { - let mask = 0; - for (const name of names) { - const entry = suspiciousFlagEntries.find(([flagName]) => flagName === name); - if (!entry) { - return null; - } - mask |= entry[1]; - } - return mask; -} - export function TestHarnessController(app: HonoApp) { app.get(TEST_EMAIL_ENDPOINT, (ctx) => { ensureHarnessAccess(ctx); @@ -443,8 +428,6 @@ export function TestHarnessController(app: HonoApp) { clear_flags: clearFlags, set_premium_flags: setPremiumFlags, clear_premium_flags: clearPremiumFlags, - suspicious_activity_flags: suspiciousFlagsValue, - suspicious_activity_flag_names: suspiciousFlagNames, email_bounced: emailBounced, email_verified: emailVerified, } = body as { @@ -452,8 +435,6 @@ export function TestHarnessController(app: HonoApp) { clear_flags?: Array; set_premium_flags?: Array; clear_premium_flags?: Array; - suspicious_activity_flags?: number | null; - suspicious_activity_flag_names?: Array; email_bounced?: boolean; email_verified?: boolean; }; @@ -493,20 +474,6 @@ export function TestHarnessController(app: HonoApp) { if (setPremiumFlags || clearPremiumFlags) { pendingUpdates['premium_flags'] = nextPremiumFlags; } - let suspiciousValue: number | null | undefined = suspiciousFlagsValue; - if (Array.isArray(suspiciousFlagNames)) { - const parsed = parseSuspiciousFlagNames(suspiciousFlagNames); - if (parsed === null) { - throw new UnknownSuspiciousFlagError(); - } - suspiciousValue = parsed; - } - if (suspiciousValue !== undefined) { - if (suspiciousValue !== null && typeof suspiciousValue !== 'number') { - throw new InvalidSuspiciousFlagsFormatError(); - } - pendingUpdates['suspicious_activity_flags'] = suspiciousValue; - } if (emailBounced !== undefined) { if (typeof emailBounced !== 'boolean') { throw new InvalidFlagsFormatError(); @@ -527,7 +494,6 @@ export function TestHarnessController(app: HonoApp) { success: true, updated: true, flags: (pendingUpdates['flags'] as bigint | undefined)?.toString() ?? user.flags?.toString(), - suspicious_activity_flags: pendingUpdates['suspicious_activity_flags'] ?? user.suspiciousActivityFlags ?? null, email_bounced: pendingUpdates['email_bounced'] ?? user.emailBounced, email_verified: pendingUpdates['email_verified'] ?? user.emailVerified, }); @@ -2746,8 +2712,7 @@ export function TestHarnessController(app: HonoApp) { } const userId = createUserID(BigInt(userIdParam)); const body = await ctx.req.json(); - const {has_verified_phone, email} = body as { - has_verified_phone?: boolean; + const {email} = body as { email?: string | null; }; const userRepository = new UserRepository(); @@ -2756,9 +2721,6 @@ export function TestHarnessController(app: HonoApp) { throw new UnknownUserError(); } const updates: Record = {}; - if (has_verified_phone !== undefined) { - updates['has_verified_phone'] = has_verified_phone; - } if (email !== undefined) { updates['email'] = email; } @@ -2774,7 +2736,6 @@ export function TestHarnessController(app: HonoApp) { return ctx.json({ success: true, updated: true, - has_verified_phone: updates['has_verified_phone'] ?? user.hasVerifiedPhone, email: updates['email'] ?? user.email, }); }); diff --git a/fluxer_api/src/api/test/search/InMemorySearchProvider.ts b/fluxer_api/src/api/test/search/InMemorySearchProvider.ts index 656b9461b..ad84454b3 100644 --- a/fluxer_api/src/api/test/search/InMemorySearchProvider.ts +++ b/fluxer_api/src/api/test/search/InMemorySearchProvider.ts @@ -343,12 +343,6 @@ function matchesUserFilters(doc: SearchableUser, filters: UserSearchFilters): bo return false; } if (filters.hasAcl && !filters.hasAcl.every((acl) => doc.acls.includes(acl))) return false; - if ( - filters.minSuspiciousActivityFlags !== undefined && - doc.suspiciousActivityFlags < filters.minSuspiciousActivityFlags - ) { - return false; - } if (filters.createdAtGreaterThanOrEqual !== undefined && doc.createdAt < filters.createdAtGreaterThanOrEqual) { return false; } diff --git a/fluxer_api/src/api/user/AccountLimit.ts b/fluxer_api/src/api/user/AccountLimit.ts new file mode 100644 index 000000000..cc3f77ee5 --- /dev/null +++ b/fluxer_api/src/api/user/AccountLimit.ts @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +import type {User} from '@app/api/models/User'; +import {UserFlags} from '@fluxer/constants/src/UserConstants'; +import {AccountLimitedError} from '@fluxer/errors/src/domains/user/AccountLimitedError'; + +type AccountLimitSubject = Pick; + +export function isAccountLimitExempt(user: AccountLimitSubject): boolean { + return ( + user.isBot || user.isSystem || (user.flags & UserFlags.STAFF) !== 0n || (user.flags & UserFlags.LIMIT_EXEMPT) !== 0n + ); +} + +export function isAccountLimited(user: AccountLimitSubject): boolean { + return (user.flags & UserFlags.ACCOUNT_LIMITED) !== 0n && !isAccountLimitExempt(user); +} + +export function assertAccountNotLimited(user: AccountLimitSubject): void { + if (isAccountLimited(user)) { + throw new AccountLimitedError(); + } +} diff --git a/fluxer_api/src/api/user/NewConversationLimit.ts b/fluxer_api/src/api/user/NewConversationLimit.ts index 2ba50d22d..649fb0a3e 100644 --- a/fluxer_api/src/api/user/NewConversationLimit.ts +++ b/fluxer_api/src/api/user/NewConversationLimit.ts @@ -5,9 +5,10 @@ import type {IMessageRepository} from '@app/api/channel/repositories/IMessageRep import {getCacheService, getChannelRepository} from '@app/api/middleware/ServiceSingletons'; import type {Channel} from '@app/api/models/Channel'; import type {User} from '@app/api/models/User'; +import {isAccountLimitExempt} from '@app/api/user/AccountLimit'; import type {IUserRepository} from '@app/api/user/IUserRepository'; import {ChannelTypes} from '@fluxer/constants/src/ChannelConstants'; -import {RelationshipTypes, UserFlags} from '@fluxer/constants/src/UserConstants'; +import {RelationshipTypes} from '@fluxer/constants/src/UserConstants'; import {NewConversationsLimitedError} from '@fluxer/errors/src/domains/user/NewConversationsLimitedError'; import type {ICacheService} from '@pkgs/cache/src/ICacheService'; @@ -40,12 +41,7 @@ function limitKey(userId: UserID | bigint | string): string { } export function isNewConversationLimitExempt(user: Pick): boolean { - return ( - user.isBot || - user.isSystem || - (user.flags & UserFlags.STAFF) !== 0n || - (user.flags & UserFlags.NOT_SUSPICIOUS) !== 0n - ); + return isAccountLimitExempt(user); } export async function getNewConversationLimit( diff --git a/fluxer_api/src/api/user/UserHelpers.test.ts b/fluxer_api/src/api/user/UserHelpers.test.ts index 02291c2ba..83f29bd42 100644 --- a/fluxer_api/src/api/user/UserHelpers.test.ts +++ b/fluxer_api/src/api/user/UserHelpers.test.ts @@ -1,214 +1,16 @@ // SPDX-License-Identifier: AGPL-3.0-or-later -import {applySharedListUpdate, resetSharedListsForTests} from '@app/api/infrastructure/activity/SharedLists'; -import type {User} from '@app/api/models/User'; import { canOwnerRunBots, checkIsPremium, getEffectivePremiumUntil, - getEffectiveSuspiciousFlags, getPremiumPaymentRecoveryGraceMs, - getRequiredActions, isSignInRefused, isTemporarilyBanned, PREMIUM_GRACE_PERIOD_MS, } from '@app/api/user/UserHelpers'; -import { - DEFERRED_PHONE_ON_COMMUNITY_JOIN, - imposePhoneRequirements, - PHONE_GATE_PROMOTED_FROM_DEFERRAL, - PremiumFlags, - SuspiciousActivityFlags, - UserFlags, - UserPremiumTypes, -} from '@fluxer/constants/src/UserConstants'; -import {afterEach, beforeEach, describe, expect, it} from 'vitest'; - -function createUser( - overrides: Partial> = {}, -): User { - return { - email: 'user@fluxer.app', - emailVerified: false, - hasVerifiedPhone: false, - suspiciousActivityFlags: 0, - ...overrides, - } as User; -} - -describe('deferred phone gate marker', () => { - it('suppresses a deferred phone requirement so the account is not locked out', () => { - const user = createUser({ - suspiciousActivityFlags: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | DEFERRED_PHONE_ON_COMMUNITY_JOIN, - }); - expect(getRequiredActions(user)).toEqual([]); - expect(getEffectiveSuspiciousFlags(user)).toBe(0); - }); - it('never lets an inbound-SMS requirement be suppressed, since that tier is never deferred', () => { - const user = createUser({ - suspiciousActivityFlags: - SuspiciousActivityFlags.REQUIRE_INBOUND_PHONE_VERIFICATION | DEFERRED_PHONE_ON_COMMUNITY_JOIN, - }); - expect(getRequiredActions(user)).toEqual(['REQUIRE_VERIFIED_PHONE', 'REQUIRE_INBOUND_PHONE_VERIFICATION']); - }); - it('keeps non-phone requirements active while a phone requirement is deferred', () => { - const user = createUser({ - suspiciousActivityFlags: - SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL | - SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | - DEFERRED_PHONE_ON_COMMUNITY_JOIN, - }); - expect(getRequiredActions(user)).toEqual(['REQUIRE_VERIFIED_EMAIL']); - expect(getEffectiveSuspiciousFlags(user)).toBe(SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL); - }); - it('applies the phone requirement in full once the marker is cleared', () => { - const user = createUser({ - suspiciousActivityFlags: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE, - }); - expect(getRequiredActions(user)).toEqual(['REQUIRE_VERIFIED_PHONE']); - expect(getEffectiveSuspiciousFlags(user)).toBe(SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE); - }); - it('leaves an account carrying only the marker completely unrestricted', () => { - const user = createUser({suspiciousActivityFlags: DEFERRED_PHONE_ON_COMMUNITY_JOIN}); - expect(getRequiredActions(user)).toEqual([]); - expect(getEffectiveSuspiciousFlags(user)).toBe(0); - }); - it('stops suppressing once another subsystem imposes the phone requirement directly', () => { - const deferred = SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | DEFERRED_PHONE_ON_COMMUNITY_JOIN; - const imposed = imposePhoneRequirements(deferred, SuspiciousActivityFlags.REQUIRE_REVERIFIED_PHONE); - expect(imposed & DEFERRED_PHONE_ON_COMMUNITY_JOIN).toBe(0); - const user = createUser({suspiciousActivityFlags: imposed}); - expect(getRequiredActions(user)).toEqual(['REQUIRE_REVERIFIED_PHONE']); - }); - it('keeps the marker when a non-phone requirement is imposed', () => { - const deferred = SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | DEFERRED_PHONE_ON_COMMUNITY_JOIN; - const imposed = imposePhoneRequirements(deferred, SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL); - expect(imposed & DEFERRED_PHONE_ON_COMMUNITY_JOIN).not.toBe(0); - expect(getRequiredActions(createUser({suspiciousActivityFlags: imposed}))).toEqual(['REQUIRE_VERIFIED_EMAIL']); - }); - it('revokes escape eligibility once another subsystem imposes the phone requirement directly', () => { - const promoted = SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | PHONE_GATE_PROMOTED_FROM_DEFERRAL; - const imposed = imposePhoneRequirements(promoted, SuspiciousActivityFlags.REQUIRE_REVERIFIED_PHONE); - expect(imposed & PHONE_GATE_PROMOTED_FROM_DEFERRAL).toBe(0); - expect(imposed & DEFERRED_PHONE_ON_COMMUNITY_JOIN).toBe(0); - expect(getRequiredActions(createUser({suspiciousActivityFlags: imposed}))).toEqual(['REQUIRE_REVERIFIED_PHONE']); - }); - it('keeps escape eligibility when a non-phone requirement is imposed', () => { - const promoted = SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | PHONE_GATE_PROMOTED_FROM_DEFERRAL; - const imposed = imposePhoneRequirements(promoted, SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL); - expect(imposed & PHONE_GATE_PROMOTED_FROM_DEFERRAL).not.toBe(0); - expect(getRequiredActions(createUser({suspiciousActivityFlags: imposed}))).toEqual([ - 'REQUIRE_VERIFIED_EMAIL', - 'REQUIRE_VERIFIED_PHONE', - ]); - }); - it('keeps both bookkeeping bits when a non-phone requirement is imposed on a still-deferred account', () => { - const deferred = - SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | - DEFERRED_PHONE_ON_COMMUNITY_JOIN | - PHONE_GATE_PROMOTED_FROM_DEFERRAL; - const imposed = imposePhoneRequirements(deferred, SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL); - expect(imposed & DEFERRED_PHONE_ON_COMMUNITY_JOIN).not.toBe(0); - expect(imposed & PHONE_GATE_PROMOTED_FROM_DEFERRAL).not.toBe(0); - }); - it('never turns the promotion bit into a requirement or an enforceable flag of its own', () => { - const promotedOnly = createUser({suspiciousActivityFlags: PHONE_GATE_PROMOTED_FROM_DEFERRAL}); - expect(getRequiredActions(promotedOnly)).toEqual([]); - expect(getEffectiveSuspiciousFlags(promotedOnly)).toBe(0); - const promoted = createUser({ - suspiciousActivityFlags: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | PHONE_GATE_PROMOTED_FROM_DEFERRAL, - }); - expect(getRequiredActions(promoted)).toEqual(['REQUIRE_VERIFIED_PHONE']); - expect(getEffectiveSuspiciousFlags(promoted)).toBe(SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE); - }); - it('yields no enforceable requirement for an account without an email, so the gate must not promote it', () => { - const user = createUser({ - email: null, - suspiciousActivityFlags: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE, - }); - expect(getEffectiveSuspiciousFlags(user)).toBe(0); - }); -}); - -describe('getRequiredActions', () => { - beforeEach(() => { - applySharedListUpdate('email_domain_exempt', 'exempt.example\n'); - }); - afterEach(() => { - resetSharedListsForTests(); - }); - it('keeps verified-email requirements active when the account email is unverified', () => { - const user = createUser({ - suspiciousActivityFlags: SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL, - }); - expect(getRequiredActions(user)).toEqual(['REQUIRE_VERIFIED_EMAIL']); - expect(getEffectiveSuspiciousFlags(user)).toBe(SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL); - }); - it('masks verified-email requirements when the account has a verified email', () => { - const user = createUser({ - emailVerified: true, - suspiciousActivityFlags: - SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL | - SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE, - }); - expect(getRequiredActions(user)).toEqual([]); - expect(getEffectiveSuspiciousFlags(user)).toBe(0); - }); - it('drops weaker redundant clauses while preserving the stronger canonical action', () => { - const user = createUser({ - suspiciousActivityFlags: - SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE | - SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE, - }); - expect(getRequiredActions(user)).toEqual(['REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE']); - expect(getEffectiveSuspiciousFlags(user)).toBe(SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE); - }); - it('retains incomparable combinations so the client can complete them sequentially', () => { - const user = createUser({ - suspiciousActivityFlags: - SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL | SuspiciousActivityFlags.REQUIRE_REVERIFIED_PHONE, - }); - expect(getRequiredActions(user)).toEqual(['REQUIRE_REVERIFIED_EMAIL', 'REQUIRE_REVERIFIED_PHONE']); - expect(getEffectiveSuspiciousFlags(user)).toBe( - SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL | SuspiciousActivityFlags.REQUIRE_REVERIFIED_PHONE, - ); - }); - it('masks verified-phone requirements after the stored phone has been removed', () => { - const user = createUser({ - hasVerifiedPhone: true, - suspiciousActivityFlags: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE, - }); - expect(getRequiredActions(user)).toEqual([]); - expect(getEffectiveSuspiciousFlags(user)).toBe(0); - }); - it('masks all suspicious activity requirements for exempt contact domains', () => { - const user = createUser({ - email: 'builder@exempt.example', - suspiciousActivityFlags: - SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL | - SuspiciousActivityFlags.REQUIRE_REVERIFIED_PHONE | - SuspiciousActivityFlags.REQUIRE_INBOUND_PHONE_VERIFICATION, - }); - expect(getRequiredActions(user)).toEqual([]); - expect(getEffectiveSuspiciousFlags(user)).toBe(0); - }); - it('does not mask suspicious activity requirements for non-matching subdomains', () => { - const user = createUser({ - email: 'builder@sub.exempt.example', - suspiciousActivityFlags: SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL, - }); - expect(getRequiredActions(user)).toEqual(['REQUIRE_REVERIFIED_EMAIL']); - expect(getEffectiveSuspiciousFlags(user)).toBe(SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL); - }); - it('keeps requirements while the exempt list is missing', () => { - resetSharedListsForTests(); - const user = createUser({ - email: 'builder@exempt.example', - suspiciousActivityFlags: SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL, - }); - expect(getRequiredActions(user)).toEqual(['REQUIRE_VERIFIED_EMAIL']); - }); -}); +import {PremiumFlags, UserFlags, UserPremiumTypes} from '@fluxer/constants/src/UserConstants'; +import {describe, expect, it} from 'vitest'; describe('checkIsPremium', () => { it('uses the later gift extension as the effective premium end', () => { diff --git a/fluxer_api/src/api/user/UserHelpers.ts b/fluxer_api/src/api/user/UserHelpers.ts index 3b89bf3c1..80ff0bcbf 100644 --- a/fluxer_api/src/api/user/UserHelpers.ts +++ b/fluxer_api/src/api/user/UserHelpers.ts @@ -2,173 +2,15 @@ import {Config} from '@app/api/Config'; import type {UserRow} from '@app/api/database/types/UserTypes'; -import {sharedListHas} from '@app/api/infrastructure/activity/SharedLists'; import {getCachedInstancePremiumMode} from '@app/api/limits/InstancePremiumModeCache'; import type {User} from '@app/api/models/User'; -import {extractEmailDomain} from '@app/api/utils/EmailDomainUtils'; import { - DEFERRABLE_PHONE_FLAGS, - DEFERRED_PHONE_ON_COMMUNITY_JOIN, PREMIUM_GRACE_PERIOD_DAYS, PREMIUM_PAYMENT_RECOVERY_GRACE_DAYS, PremiumFlags, - SuspiciousActivityFlags, UserFlags, } from '@fluxer/constants/src/UserConstants'; import {MS_PER_DAY} from '@fluxer/date_utils/src/DateConstants'; -import type {RequiredAction} from '@fluxer/schema/src/domains/user/UserResponseSchemas'; - -type ClauseAction = Exclude; -type VerificationChannel = 'email' | 'phone'; - -interface VerificationOption { - readonly channel: VerificationChannel; - readonly reverify: boolean; -} - -interface RequiredActionClauseDefinition { - readonly action: ClauseAction; - readonly flag: number; - readonly options: ReadonlyArray; -} - -const REQUIRED_ACTION_CLAUSE_DEFINITIONS: ReadonlyArray = [ - { - action: 'REQUIRE_VERIFIED_EMAIL', - flag: SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL, - options: [{channel: 'email', reverify: false}], - }, - { - action: 'REQUIRE_REVERIFIED_EMAIL', - flag: SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL, - options: [{channel: 'email', reverify: true}], - }, - { - action: 'REQUIRE_VERIFIED_PHONE', - flag: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE, - options: [{channel: 'phone', reverify: false}], - }, - { - action: 'REQUIRE_REVERIFIED_PHONE', - flag: SuspiciousActivityFlags.REQUIRE_REVERIFIED_PHONE, - options: [{channel: 'phone', reverify: true}], - }, - { - action: 'REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE', - flag: SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE, - options: [ - {channel: 'email', reverify: false}, - {channel: 'phone', reverify: false}, - ], - }, - { - action: 'REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE', - flag: SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE, - options: [ - {channel: 'email', reverify: true}, - {channel: 'phone', reverify: false}, - ], - }, - { - action: 'REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE', - flag: SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE, - options: [ - {channel: 'email', reverify: false}, - {channel: 'phone', reverify: true}, - ], - }, - { - action: 'REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE', - flag: SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE, - options: [ - {channel: 'email', reverify: true}, - {channel: 'phone', reverify: true}, - ], - }, -]; -const REQUIRED_ACTION_ORDER: ReadonlyArray = [ - ...REQUIRED_ACTION_CLAUSE_DEFINITIONS.map((definition) => definition.action), - 'REQUIRE_INBOUND_PHONE_VERIFICATION', -]; -const INBOUND_PHONE_VERIFICATION_FLAG = SuspiciousActivityFlags.REQUIRE_INBOUND_PHONE_VERIFICATION; - -function optionImplies(option: VerificationOption, other: VerificationOption): boolean { - if (option.channel !== other.channel) { - return false; - } - return option.reverify === other.reverify || (option.reverify && !other.reverify); -} - -function clauseImplies(clause: RequiredActionClauseDefinition, other: RequiredActionClauseDefinition): boolean { - return clause.options.every((option) => other.options.some((candidate) => optionImplies(option, candidate))); -} - -function isOptionSatisfiedAtRuntime(user: User, option: VerificationOption): boolean { - if (option.reverify) { - return false; - } - if (option.channel === 'email') { - return !!user.email && !!user.emailVerified; - } - if (option.channel === 'phone') { - return !!user.hasVerifiedPhone; - } - return false; -} - -function buildRequiredActionClauses(flags: number): Array { - const clauses = REQUIRED_ACTION_CLAUSE_DEFINITIONS.filter((definition) => (flags & definition.flag) !== 0); - if ( - (flags & INBOUND_PHONE_VERIFICATION_FLAG) !== 0 && - !clauses.some((clause) => clause.options.some((option) => option.channel === 'phone')) - ) { - clauses.push(REQUIRED_ACTION_CLAUSE_DEFINITIONS[2]); - } - return clauses; -} - -function getRequiredActionSortIndex(action: RequiredAction): number { - const index = REQUIRED_ACTION_ORDER.indexOf(action); - return index === -1 ? REQUIRED_ACTION_ORDER.length : index; -} - -function suppressDeferredPhoneFlags(rawFlags: number): number { - if ((rawFlags & DEFERRED_PHONE_ON_COMMUNITY_JOIN) === 0) { - return rawFlags; - } - return rawFlags & ~DEFERRABLE_PHONE_FLAGS; -} - -export function getRequiredActions(user: User): ReadonlyArray { - const flags = suppressDeferredPhoneFlags(user.suspiciousActivityFlags ?? 0); - if (flags === 0) { - return []; - } - if (!user.email) { - return []; - } - if (sharedListHas('email_domain_exempt', extractEmailDomain(user.email))) { - return []; - } - const activeClauses = buildRequiredActionClauses(flags).filter( - (clause) => !clause.options.some((option) => isOptionSatisfiedAtRuntime(user, option)), - ); - const simplifiedClauses = activeClauses.filter( - (clause, clauseIndex, clauses) => - !clauses.some( - (otherClause, otherClauseIndex) => otherClauseIndex !== clauseIndex && clauseImplies(otherClause, clause), - ), - ); - const requiredActions: Array = simplifiedClauses.map((clause) => clause.action); - const hasRemainingPhoneRequirement = simplifiedClauses.some((clause) => - clause.options.some((option) => option.channel === 'phone'), - ); - if ((flags & INBOUND_PHONE_VERIFICATION_FLAG) !== 0 && hasRemainingPhoneRequirement) { - requiredActions.push('REQUIRE_INBOUND_PHONE_VERIFICATION'); - } - requiredActions.sort((left, right) => getRequiredActionSortIndex(left) - getRequiredActionSortIndex(right)); - return requiredActions; -} export function isAccountClosed(user: Pick): boolean { return (user.flags & UserFlags.DELETED) !== 0n || user.deletionStartedAt != null; @@ -197,14 +39,6 @@ export function isDirectDeliverySuppressed(user: Pick): return !user.isBot && (user.flags & UserFlags.SPAMMER) === UserFlags.SPAMMER; } -export function getEffectiveSuspiciousFlags(user: User): number { - let flags = 0; - for (const action of getRequiredActions(user)) { - flags |= SuspiciousActivityFlags[action]; - } - return flags; -} - interface PremiumCheckable { isBot: boolean; premiumType: number | null; diff --git a/fluxer_api/src/api/user/UserMappers.ts b/fluxer_api/src/api/user/UserMappers.ts index 6e9afc74c..1e8bd0c05 100644 --- a/fluxer_api/src/api/user/UserMappers.ts +++ b/fluxer_api/src/api/user/UserMappers.ts @@ -10,7 +10,7 @@ import type {User} from '@app/api/models/User'; import type {UserGuildSettings} from '@app/api/models/UserGuildSettings'; import type {UserSettings} from '@app/api/models/UserSettings'; import type {WebAuthnCredential} from '@app/api/models/WebAuthnCredential'; -import {getRequiredActions} from '@app/api/user/UserHelpers'; +import {isAccountLimited} from '@app/api/user/AccountLimit'; import {canUserAccessNsfwContent} from '@app/api/utils/AgeUtils'; import type {ChannelMessageNotifications} from '@fluxer/constants/src/NotificationConstants'; import { @@ -130,7 +130,6 @@ export function mapUserToPrivateResponse(user: User): UserPrivateResponse { if (isActuallyPremium) { traitSet.add('premium'); } - const requiredActions = [...getRequiredActions(user)]; const traits = Array.from(traitSet).sort(); const authenticatorTypes = getActiveAuthenticatorTypes(user); return { @@ -141,8 +140,7 @@ export function mapUserToPrivateResponse(user: User): UserPrivateResponse { traits, email: user.email ?? null, email_bounced: user.emailBounced, - phone: null, - has_verified_phone: user.hasVerifiedPhone, + has_verified_phone: false, bio: user.bio, pronouns: user.pronouns, accent_color: user.accentColor, @@ -170,7 +168,8 @@ export function mapUserToPrivateResponse(user: User): UserPrivateResponse { premium_perks_disabled: !!(user.premiumFlags & PremiumFlags.PERKS_DISABLED), password_last_changed_at: user.passwordLastChangedAt?.toISOString() ?? null, last_voice_activity_sharing_change_at: user.lastVoiceActivitySharingChangeAt?.toISOString() ?? null, - required_actions: requiredActions, + required_actions: [], + account_limited: isAccountLimited(user), nsfw_allowed: canUserAccessNsfwContent(user), has_dismissed_premium_onboarding: isActuallyPremium && user.premiumOnboardingDismissedAt != null, has_ever_purchased: user.hasEverPurchased, diff --git a/fluxer_api/src/api/user/controllers/UserAccountController.ts b/fluxer_api/src/api/user/controllers/UserAccountController.ts index dbf9d3891..1a2fd93cf 100644 --- a/fluxer_api/src/api/user/controllers/UserAccountController.ts +++ b/fluxer_api/src/api/user/controllers/UserAccountController.ts @@ -4,7 +4,7 @@ import * as AuthSession from '@app/api/auth/AuthSession'; import {requireSudoMode} from '@app/api/auth/services/SudoVerificationService'; import {createGuildID, createUserID} from '@app/api/BrandedTypes'; import {Config} from '@app/api/Config'; -import {DefaultUserOnly, LoginRequired, LoginRequiredAllowSuspicious} from '@app/api/middleware/AuthMiddleware'; +import {DefaultUserOnly, LoginRequired} from '@app/api/middleware/AuthMiddleware'; import {requireOAuth2ScopeForBearer} from '@app/api/middleware/OAuth2ScopeMiddleware'; import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware'; import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware'; @@ -66,7 +66,6 @@ import { PasswordChangeCompleteResponse, PasswordChangeStartResponse, PasswordChangeVerifyResponse, - PhoneGateEscapePreviewResponse, PreloadMessagesResponse, PushSubscribeResponse, PushSubscriptionsListResponse, @@ -87,7 +86,7 @@ export function UserAccountController(app: HonoApp) { '/users/@me', RateLimitMiddleware(RateLimitConfigs.USER_SETTINGS_GET), requireOAuth2ScopeForBearer('identify'), - LoginRequiredAllowSuspicious, + LoginRequired, OpenAPI({ operationId: 'get_current_user', summary: 'Get current user profile', @@ -96,7 +95,7 @@ export function UserAccountController(app: HonoApp) { security: ['botToken', 'bearerToken', 'sessionToken'], tags: ['Users'], description: - "Retrieves the current authenticated user's profile information, including account details and settings. OAuth2 bearer tokens require identify scope, and email is returned only when the email scope is also present. Bearer tokens receive a reduced response: sensitive fields such as phone, MFA status, authenticator types, ACLs, traits, premium billing details, and password metadata are omitted. Session and bot tokens return the full user object with all private fields.", + "Retrieves the current authenticated user's profile information, including account details and settings. OAuth2 bearer tokens require identify scope, and email is returned only when the email scope is also present. Bearer tokens receive a reduced response: sensitive fields such as MFA status, authenticator types, ACLs, traits, premium billing details, and password metadata are omitted. Session and bot tokens return the full user object with all private fields.", }), async (ctx) => { const userAccountRequestService = ctx.get('userAccountRequestService'); @@ -104,7 +103,6 @@ export function UserAccountController(app: HonoApp) { userAccountRequestService.getCurrentUserResponse({ authTokenType: ctx.get('authTokenType'), oauthBearerScopes: ctx.get('oauthBearerScopes'), - allowSuspicious: true, user: ctx.get('user'), }), ); @@ -113,7 +111,7 @@ export function UserAccountController(app: HonoApp) { app.patch( '/users/@me', RateLimitMiddleware(RateLimitConfigs.USER_UPDATE_SELF), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, SudoModeMiddleware, Validator('json', UserUpdateWithVerificationRequest), @@ -144,7 +142,7 @@ export function UserAccountController(app: HonoApp) { app.post( '/users/@me/email-change/start', RateLimitMiddleware(RateLimitConfigs.USER_EMAIL_CHANGE_START), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('json', EmptyBodyRequest), OpenAPI({ @@ -166,7 +164,7 @@ export function UserAccountController(app: HonoApp) { app.post( '/users/@me/email-change/resend-original', RateLimitMiddleware(RateLimitConfigs.USER_EMAIL_CHANGE_RESEND_ORIGINAL), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('json', EmailChangeTicketRequest), OpenAPI({ @@ -189,7 +187,7 @@ export function UserAccountController(app: HonoApp) { app.post( '/users/@me/email-change/verify-original', RateLimitMiddleware(RateLimitConfigs.USER_EMAIL_CHANGE_VERIFY_ORIGINAL), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('json', EmailChangeVerifyOriginalRequest), OpenAPI({ @@ -212,7 +210,7 @@ export function UserAccountController(app: HonoApp) { app.post( '/users/@me/email-change/request-new', RateLimitMiddleware(RateLimitConfigs.USER_EMAIL_CHANGE_REQUEST_NEW), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('json', EmailChangeRequestNewRequest), OpenAPI({ @@ -237,7 +235,7 @@ export function UserAccountController(app: HonoApp) { app.post( '/users/@me/email-change/resend-new', RateLimitMiddleware(RateLimitConfigs.USER_EMAIL_CHANGE_RESEND_NEW), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('json', EmailChangeTicketRequest), OpenAPI({ @@ -260,7 +258,7 @@ export function UserAccountController(app: HonoApp) { app.post( '/users/@me/email-change/verify-new', RateLimitMiddleware(RateLimitConfigs.USER_EMAIL_CHANGE_VERIFY_NEW), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('json', EmailChangeVerifyNewRequest), OpenAPI({ @@ -285,7 +283,7 @@ export function UserAccountController(app: HonoApp) { app.post( '/users/@me/email-change/apply', RateLimitMiddleware(RateLimitConfigs.USER_EMAIL_CHANGE_APPLY), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, SudoModeMiddleware, Validator('json', EmailChangeApplyRequest), @@ -316,7 +314,7 @@ export function UserAccountController(app: HonoApp) { app.post( '/users/@me/email-change/bounced/request-new', RateLimitMiddleware(RateLimitConfigs.USER_EMAIL_CHANGE_BOUNCED_REQUEST_NEW), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('json', EmailChangeBouncedRequestNewRequest), OpenAPI({ @@ -339,7 +337,7 @@ export function UserAccountController(app: HonoApp) { app.post( '/users/@me/email-change/bounced/resend-new', RateLimitMiddleware(RateLimitConfigs.USER_EMAIL_CHANGE_BOUNCED_RESEND_NEW), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('json', EmailChangeTicketRequest), OpenAPI({ @@ -362,7 +360,7 @@ export function UserAccountController(app: HonoApp) { app.post( '/users/@me/email-change/bounced/verify-new', RateLimitMiddleware(RateLimitConfigs.USER_EMAIL_CHANGE_BOUNCED_VERIFY_NEW), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, Validator('json', EmailChangeBouncedVerifyNewRequest), OpenAPI({ @@ -373,7 +371,7 @@ export function UserAccountController(app: HonoApp) { security: ['bearerToken', 'sessionToken'], tags: ['Users'], description: - 'Completes bounced-email recovery by verifying the replacement email code, updating the account email, and clearing email-related suspicious-activity requirements.', + 'Completes bounced-email recovery by verifying the replacement email code, and updating the account email.', }), async (ctx) => { const user = ctx.get('user'); @@ -585,7 +583,7 @@ export function UserAccountController(app: HonoApp) { app.get( '/users/@me/settings', RateLimitMiddleware(RateLimitConfigs.USER_SETTINGS_GET), - LoginRequiredAllowSuspicious, + LoginRequired, DefaultUserOnly, OpenAPI({ operationId: 'get_current_user_settings', @@ -1184,51 +1182,6 @@ export function UserAccountController(app: HonoApp) { return ctx.body(null, 202); }, ); - app.get( - '/users/@me/required-actions/phone-gate-escape', - RateLimitMiddleware(RateLimitConfigs.USER_PHONE_GATE_ESCAPE_PREVIEW), - LoginRequiredAllowSuspicious, - DefaultUserOnly, - OpenAPI({ - operationId: 'get_phone_gate_escape', - summary: 'Preview setting the deferred phone check aside', - responseSchema: PhoneGateEscapePreviewResponse, - statusCode: 200, - security: ['bearerToken', 'sessionToken'], - tags: ['Users'], - description: - 'Reports whether this account can set a due phone verification requirement aside. The community lists are always empty.', - }), - async (ctx) => { - const available = await ctx - .get('userService') - .accountService.lifecycleService.previewPhoneGateEscape(ctx.get('user').id); - return ctx.json({available, guilds: [], owned_guilds: []}); - }, - ); - app.post( - '/users/@me/required-actions/phone-gate-escape', - RateLimitMiddleware(RateLimitConfigs.USER_PHONE_GATE_ESCAPE), - LoginRequiredAllowSuspicious, - DefaultUserOnly, - Validator('json', EmptyBodyRequest), - OpenAPI({ - operationId: 'execute_phone_gate_escape', - summary: 'Set the deferred phone check aside', - responseSchema: UserPrivateResponse, - statusCode: 200, - security: ['bearerToken', 'sessionToken'], - tags: ['Users'], - description: - 'Defers a due phone verification requirement again, so the account works normally without leaving any community. Returns the updated private user object.', - }), - async (ctx) => { - const user = await ctx - .get('userService') - .accountService.lifecycleService.executePhoneGateEscape(ctx.get('user').id); - return ctx.json(mapUserToPrivateResponse(user)); - }, - ); app.post( '/users/@me/terms-acceptance', RateLimitMiddleware(RateLimitConfigs.USER_UPDATE_SELF), diff --git a/fluxer_api/src/api/user/controllers/UserAuthController.ts b/fluxer_api/src/api/user/controllers/UserAuthController.ts index 75503eb7a..554b497ad 100644 --- a/fluxer_api/src/api/user/controllers/UserAuthController.ts +++ b/fluxer_api/src/api/user/controllers/UserAuthController.ts @@ -6,21 +6,16 @@ import { getPasskeyMigrationRegistrationOptions, } from '@app/api/auth/services/PasskeyMigrationService'; import {requireSudoMode} from '@app/api/auth/services/SudoVerificationService'; -import {Config} from '@app/api/Config'; -import {DefaultUserOnly, LoginRequired, LoginRequiredAllowSuspicious} from '@app/api/middleware/AuthMiddleware'; -import {verifyCaptchaToken} from '@app/api/middleware/CaptchaMiddleware'; +import {DefaultUserOnly, LoginRequired} from '@app/api/middleware/AuthMiddleware'; import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware'; import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware'; import {SudoModeMiddleware} from '@app/api/middleware/SudoModeMiddleware'; import {RateLimitConfigs} from '@app/api/RateLimitConfig'; import type {HonoApp} from '@app/api/types/HonoEnv'; import {Validator} from '@app/api/Validator'; -import {Headers} from '@fluxer/constants/src/Headers'; -import {requireClientIp} from '@fluxer/ip_utils/src/ClientIp'; import { DisableTotpRequest, EnableMfaTotpRequest, - InboundSmsChallengeStartResponse, MfaBackupCodesChallengeRegenerateRequest, MfaBackupCodesChallengeResendRequest, MfaBackupCodesChallengeStartResponse, @@ -28,10 +23,6 @@ import { MfaBackupCodesChallengeVerifyResponse, MfaBackupCodesRequest, MfaBackupCodesResponse, - PhoneSendVerificationRequest, - PhoneSendVerificationResponse, - PhoneVerifyRequest, - PhoneVerifyResponse, SudoMfaMethodsResponse, SudoVerificationSchema, WebAuthnChallengeResponse, @@ -222,77 +213,6 @@ export function UserAuthController(app: HonoApp) { ); }, ); - app.post( - '/users/@me/phone/send-verification', - RateLimitMiddleware(RateLimitConfigs.PHONE_SEND_VERIFICATION), - LoginRequiredAllowSuspicious, - DefaultUserOnly, - Validator('json', PhoneSendVerificationRequest), - OpenAPI({ - operationId: 'send_phone_verification_code', - summary: 'Send phone verification code', - responseSchema: PhoneSendVerificationResponse, - statusCode: 200, - security: ['bearerToken', 'sessionToken'], - tags: ['Users'], - description: - 'Send a one-time code on the requested channel. Defaults to the first available channel from server policy. Pass channel="sms" to request SMS (only honoured for SMS-allowlisted destinations) or channel="inbound_challenge" to receive challenge details to text in. Expensive outbound destinations always downgrade to an inbound challenge. Requires a solved captcha challenge (X-Captcha-Token) when the phone verification service asks for one.', - }), - async (ctx) => { - return ctx.json( - await ctx.get('userAuthRequestService').sendPhoneVerificationCode({ - user: ctx.get('user'), - data: ctx.req.valid('json'), - clientIp: requireClientIp(ctx.req.raw, { - trustClientIpHeader: Config.proxy.trust_client_ip_header, - clientIpHeaderName: Config.proxy.client_ip_header, - }), - hasCaptchaToken: ctx.req.header(Headers.X_CAPTCHA_TOKEN) !== undefined, - verifyCaptcha: () => verifyCaptchaToken(ctx), - }), - ); - }, - ); - app.post( - '/users/@me/phone/inbound-challenge', - RateLimitMiddleware(RateLimitConfigs.PHONE_SEND_VERIFICATION), - LoginRequiredAllowSuspicious, - DefaultUserOnly, - OpenAPI({ - operationId: 'start_inbound_phone_challenge', - summary: 'Start an inbound SMS challenge', - responseSchema: InboundSmsChallengeStartResponse, - statusCode: 200, - security: ['bearerToken', 'sessionToken'], - tags: ['Users'], - description: - "When an account must verify its phone number inbound, the user texts a one-time code to the platform's number instead of receiving one. This endpoint generates the code and the destination number to display.", - }), - async (ctx) => { - return ctx.json(await ctx.get('userAuthRequestService').startInboundPhoneChallenge(ctx.get('user'))); - }, - ); - app.post( - '/users/@me/phone/verify', - RateLimitMiddleware(RateLimitConfigs.PHONE_VERIFY_CODE), - LoginRequiredAllowSuspicious, - DefaultUserOnly, - Validator('json', PhoneVerifyRequest), - OpenAPI({ - operationId: 'verify_phone_code', - summary: 'Verify phone code', - responseSchema: PhoneVerifyResponse, - statusCode: 200, - security: ['bearerToken', 'sessionToken'], - tags: ['Users'], - description: 'Verify a phone number by confirming the SMS verification code. Returns phone verification status.', - }), - async (ctx) => { - return ctx.json( - await ctx.get('userAuthRequestService').verifyPhoneCode({user: ctx.get('user'), data: ctx.req.valid('json')}), - ); - }, - ); app.delete( '/users/@me/authorized-ips', RateLimitMiddleware(RateLimitConfigs.USER_AUTHORIZED_IPS_FORGET), diff --git a/fluxer_api/src/api/user/entrance_sound/EntranceSoundController.ts b/fluxer_api/src/api/user/entrance_sound/EntranceSoundController.ts index 824f8d167..1188340ba 100644 --- a/fluxer_api/src/api/user/entrance_sound/EntranceSoundController.ts +++ b/fluxer_api/src/api/user/entrance_sound/EntranceSoundController.ts @@ -7,6 +7,7 @@ import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware'; import type {EntranceSoundSelection} from '@app/api/models/EntranceSound'; import {RateLimitConfigs} from '@app/api/RateLimitConfig'; import type {HonoApp} from '@app/api/types/HonoEnv'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import type {EntranceSoundLibraryEntry, EntranceSoundService} from '@app/api/user/entrance_sound/EntranceSoundService'; import {Validator} from '@app/api/Validator'; import { @@ -88,6 +89,7 @@ export function EntranceSoundController(app: HonoApp) { const userId = ctx.get('user').id; const service: EntranceSoundService = ctx.get('entranceSoundService'); const {name, audio} = ctx.req.valid('json'); + assertAccountNotLimited(ctx.get('user')); const created = await service.upload({userId, name, base64Audio: audio}); return ctx.json(serializeSound(created), 201); }, @@ -162,6 +164,9 @@ export function EntranceSoundController(app: HonoApp) { const userId = ctx.get('user').id; const service: EntranceSoundService = ctx.get('entranceSoundService'); const {scope_id, sound_id} = ctx.req.valid('json'); + if (sound_id) { + assertAccountNotLimited(ctx.get('user')); + } await service.setSelection({ userId, scopeId: scope_id, diff --git a/fluxer_api/src/api/user/repositories/IUserAccountRepository.ts b/fluxer_api/src/api/user/repositories/IUserAccountRepository.ts index 2ee7afeb4..9c8ceb17c 100644 --- a/fluxer_api/src/api/user/repositories/IUserAccountRepository.ts +++ b/fluxer_api/src/api/user/repositories/IUserAccountRepository.ts @@ -20,7 +20,8 @@ export interface IUserAccountRepository { create(data: UserRow): Promise; upsert(data: UserRow, oldData?: UserRow | null): Promise; patchUpsert(userId: UserID, patchData: Partial, oldData?: UserRow | null): Promise; - compareAndSetSuspiciousFlags(user: User, suspiciousFlags: number): Promise; + compareAndSetFlags(user: User, flags: bigint): Promise; + updateFlags(userId: UserID, mutate: (flags: bigint) => bigint): Promise; updateDeletionSchedule(user: User, patch: UserDeletionScheduleUpdate): Promise; startDeletion(userId: UserID, pendingDeletionAt: Date): Promise; anonymizeForDeletion(user: User, patch: Partial): Promise; diff --git a/fluxer_api/src/api/user/repositories/UserAccountRepository.ts b/fluxer_api/src/api/user/repositories/UserAccountRepository.ts index 0438efa60..0666a9c1a 100644 --- a/fluxer_api/src/api/user/repositories/UserAccountRepository.ts +++ b/fluxer_api/src/api/user/repositories/UserAccountRepository.ts @@ -71,8 +71,12 @@ export class UserAccountRepository implements IUserAccountRepository { return this.accountRepo.patchUpsert(userId, patchData, oldData); } - async compareAndSetSuspiciousFlags(user: User, suspiciousFlags: number): Promise { - return this.accountRepo.compareAndSetSuspiciousFlags(user, suspiciousFlags); + async compareAndSetFlags(user: User, flags: bigint): Promise { + return this.accountRepo.compareAndSetFlags(user, flags); + } + + async updateFlags(userId: UserID, mutate: (flags: bigint) => bigint): Promise { + return this.accountRepo.updateFlags(userId, mutate); } async updateDeletionSchedule(user: User, patch: UserDeletionScheduleUpdate): Promise { diff --git a/fluxer_api/src/api/user/repositories/UserRepository.ts b/fluxer_api/src/api/user/repositories/UserRepository.ts index db4d85367..105af1348 100644 --- a/fluxer_api/src/api/user/repositories/UserRepository.ts +++ b/fluxer_api/src/api/user/repositories/UserRepository.ts @@ -83,8 +83,12 @@ export class UserRepository implements IUserRepositoryAggregate { return this.accountRepo.patchUpsert(userId, patchData, oldData); } - async compareAndSetSuspiciousFlags(user: User, suspiciousFlags: number): Promise { - return this.accountRepo.compareAndSetSuspiciousFlags(user, suspiciousFlags); + async compareAndSetFlags(user: User, flags: bigint): Promise { + return this.accountRepo.compareAndSetFlags(user, flags); + } + + async updateFlags(userId: UserID, mutate: (flags: bigint) => bigint): Promise { + return this.accountRepo.updateFlags(userId, mutate); } async updateDeletionSchedule(user: User, patch: UserDeletionScheduleUpdate): Promise { diff --git a/fluxer_api/src/api/user/repositories/account/UserAccountRepository.ts b/fluxer_api/src/api/user/repositories/account/UserAccountRepository.ts index f492e9329..d8f1914fd 100644 --- a/fluxer_api/src/api/user/repositories/account/UserAccountRepository.ts +++ b/fluxer_api/src/api/user/repositories/account/UserAccountRepository.ts @@ -24,6 +24,8 @@ import { } from '@fluxer/constants/src/UserConstants'; import type {IKVProvider} from '@pkgs/kv_client/src/IKVProvider'; +const USER_FLAGS_WRITE_ATTEMPTS = 3; + export class UserAccountRepository { private dataRepo: UserDataRepository; private emailOwnershipRepo: UserEmailOwnershipRepository; @@ -112,14 +114,26 @@ export class UserAccountRepository { return this.patchAccount(userId, patchData, oldData); } - async compareAndSetSuspiciousFlags(user: User, suspiciousFlags: number): Promise { - const result = await this.dataRepo.compareAndSetSuspiciousFlags(user, suspiciousFlags); + async compareAndSetFlags(user: User, flags: bigint): Promise { + const result = await this.dataRepo.compareAndSetFlags(user, flags & ~LEGACY_DEAD_USER_FLAGS_MASK); if (!result) return null; const updatedUser = new User(result.updatedData); await this.searchRepo.updateUser(updatedUser); return updatedUser; } + async updateFlags(userId: UserID, mutate: (flags: bigint) => bigint): Promise { + for (let attempt = 0; attempt < USER_FLAGS_WRITE_ATTEMPTS; attempt++) { + const user = await this.findUnique(userId); + if (!user) return null; + const next = mutate(user.flags); + if (next === user.flags) return user; + const updated = await this.compareAndSetFlags(user, next); + if (updated) return updated; + } + throw new Error(`User ${userId} flags kept changing during update`); + } + async updateDeletionSchedule(user: User, patch: UserDeletionScheduleUpdate): Promise { return this.patchAccount( user.id, @@ -272,7 +286,6 @@ export class UserAccountRepository { private migratePremiumFlagsInPatch(patchData: Partial, oldData: UserRow): Partial { const oldRawFlags = oldData.flags ?? 0n; const oldLegacyPremiumBits = extractPremiumFlagsFromLegacyUserFlags(oldRawFlags); - const oldHasDeadBits = (oldRawFlags & LEGACY_DEAD_USER_FLAGS_MASK) !== 0n; const flagsInPatch = patchData.flags; let migratedPatch = patchData; if (flagsInPatch !== undefined && flagsInPatch !== null) { @@ -283,12 +296,10 @@ export class UserAccountRepository { const basePremiumFlags = patchData.premium_flags ?? oldData.premium_flags ?? 0; migratedPatch.premium_flags = basePremiumFlags | inboundLegacyPremium; } - } else if (oldLegacyPremiumBits !== 0 || oldHasDeadBits) { + } else if (oldLegacyPremiumBits !== 0) { migratedPatch = {...patchData, flags: oldRawFlags & ~LEGACY_PREMIUM_FLAGS_MASK & ~LEGACY_DEAD_USER_FLAGS_MASK}; - if (oldLegacyPremiumBits !== 0) { - const basePremiumFlags = patchData.premium_flags ?? oldData.premium_flags ?? 0; - migratedPatch.premium_flags = basePremiumFlags | oldLegacyPremiumBits; - } + const basePremiumFlags = patchData.premium_flags ?? oldData.premium_flags ?? 0; + migratedPatch.premium_flags = basePremiumFlags | oldLegacyPremiumBits; } return migratedPatch; } diff --git a/fluxer_api/src/api/user/repositories/account/crud/UserDataRepository.ts b/fluxer_api/src/api/user/repositories/account/crud/UserDataRepository.ts index 585982e4b..65be432c7 100644 --- a/fluxer_api/src/api/user/repositories/account/crud/UserDataRepository.ts +++ b/fluxer_api/src/api/user/repositories/account/crud/UserDataRepository.ts @@ -232,28 +232,21 @@ export class UserDataRepository { return {finalVersion, previousData, updatedData}; } - async compareAndSetSuspiciousFlags( - user: User, - suspiciousFlags: number, - ): Promise<{previousData: UserRow; updatedData: UserRow} | null> { + async compareAndSetFlags(user: User, flags: bigint): Promise<{previousData: UserRow; updatedData: UserRow} | null> { assertWritableUserId(user.id); const previousData = user.toRow(); const version = nextVersion(user.version); - const expected = previousData.suspicious_activity_flags ?? 0; - const conditions: Array> = [{suspicious_activity_flags: expected}]; - if (expected === 0 && previousData.version != null) { - conditions.push({suspicious_activity_flags: null, version: previousData.version}); + const expected = previousData.flags ?? 0n; + const conditions: Array> = [{flags: expected}]; + if (expected === 0n && previousData.version != null) { + conditions.push({flags: null, version: previousData.version}); } for (const condition of conditions) { const applied = await executeConditional( - Users.conditionalPatchByPk( - {user_id: user.id}, - {suspicious_activity_flags: Db.set(suspiciousFlags), version: Db.set(version)}, - condition, - ), + Users.conditionalPatchByPk({user_id: user.id}, {flags: Db.set(flags), version: Db.set(version)}, condition), ); if (!applied) continue; - const updatedData = {...previousData, suspicious_activity_flags: suspiciousFlags, version}; + const updatedData = {...previousData, flags, version}; await emitAccountChangedIfRelevant(previousData, updatedData); return {previousData, updatedData}; } diff --git a/fluxer_api/src/api/user/services/AccountStateApplier.ts b/fluxer_api/src/api/user/services/AccountStateApplier.ts index 52112c4e3..c539e7204 100644 --- a/fluxer_api/src/api/user/services/AccountStateApplier.ts +++ b/fluxer_api/src/api/user/services/AccountStateApplier.ts @@ -14,13 +14,13 @@ import type { } from '@app/api/infrastructure/activity/Contract.generated'; import type {IGatewayService} from '@app/api/infrastructure/IGatewayService'; import type {User} from '@app/api/models/User'; +import {isAccountLimitExempt} from '@app/api/user/AccountLimit'; import type {IUserRepository} from '@app/api/user/IUserRepository'; import { clearNewConversationLimit, isNewConversationLimitExempt, setNewConversationLimit, } from '@app/api/user/NewConversationLimit'; -import type {UserContactChangeLogService} from '@app/api/user/services/UserContactChangeLogService'; import {mapUserToPrivateResponse} from '@app/api/user/UserMappers'; import {UserFlags} from '@fluxer/constants/src/UserConstants'; import {getSameIpDecisionKey, isPublicIpAddress, parseIpAddress} from '@fluxer/ip_utils/src/IpAddress'; @@ -33,15 +33,14 @@ export interface AccountUpdateDispatch { } export interface AccountStateDeps { - users: Pick; + users: Pick; dispatch: AccountUpdateDispatch; - contactChangeLog: Pick; ipBans: Pick; cache: Pick; now?: () => number; } -const SUSPICIOUS_FLAGS_WRITE_ATTEMPTS = 3; +const FLAGS_WRITE_ATTEMPTS = 3; const MIN_TEMP_BAN_SECONDS = 60; function gatewayDispatch(gateway: Pick): AccountUpdateDispatch { @@ -56,7 +55,6 @@ export function accountStateDepsFromContext(ctx: ApiContext, ipBans: AccountStat return { users: ctx.services.users, dispatch: gatewayDispatch(ctx.services.gateway), - contactChangeLog: ctx.services.contactChangeLog, ipBans, cache: ctx.services.cache, }; @@ -65,8 +63,6 @@ export function accountStateDepsFromContext(ctx: ApiContext, ipBans: AccountStat export function observedOf(user: User): Observed { return { flags: user.flags.toString(), - suspicious_flags: user.suspiciousActivityFlags ?? 0, - has_verified_phone: user.hasVerifiedPhone, deleted: (user.flags & UserFlags.DELETED) !== 0n, }; } @@ -92,59 +88,28 @@ function isIneligible(user: User): boolean { return user.isBot || (user.flags & UserFlags.DELETED) !== 0n; } -export async function applySuspiciousFlags( +export async function applySetAccountLimit( deps: AccountStateDeps, - env: ActionOf<'set_suspicious_flags'>, + env: ActionOf<'set_account_limit'>, ): Promise { return withAccountChangeSource('action', async () => { const userId = createUserID(BigInt(env.user_id)); let user = await deps.users.findUnique(userId); - for (let attempt = 0; attempt < SUSPICIOUS_FLAGS_WRITE_ATTEMPTS; attempt++) { + for (let attempt = 0; attempt < FLAGS_WRITE_ATTEMPTS; attempt++) { if (!user) return outcomeOf(env, 'ineligible'); if (isIneligible(user)) return outcomeOf(env, 'ineligible', user); - const current = user.suspiciousActivityFlags ?? 0; - const target = (current | env.set) & ~env.clear; - if (target === current) return outcomeOf(env, 'noop', user); - if (env.if_current !== null && env.if_current !== current) return outcomeOf(env, 'conflict', user); - const updated = await deps.users.compareAndSetSuspiciousFlags(user, target); + if (env.on && isAccountLimitExempt(user)) return outcomeOf(env, 'exempt', user); + const limited = (user.flags & UserFlags.ACCOUNT_LIMITED) !== 0n; + if (limited === env.on) return outcomeOf(env, 'noop', user); + const target = env.on ? user.flags | UserFlags.ACCOUNT_LIMITED : user.flags & ~UserFlags.ACCOUNT_LIMITED; + const updated = await deps.users.compareAndSetFlags(user, target); if (updated) { await deps.dispatch.userUpdated(updated); return outcomeOf(env, 'applied', updated); } user = await deps.users.findUnique(userId); } - throw new Error('Suspicious activity flags kept changing during apply'); - }); -} - -export async function applyPhoneVerified( - deps: AccountStateDeps, - env: ActionOf<'phone_verified'>, -): Promise { - return withAccountChangeSource('phone_verify', async () => { - const user = await deps.users.findUnique(createUserID(BigInt(env.user_id))); - if (!user) return outcomeOf(env, 'ineligible'); - if (isIneligible(user)) return outcomeOf(env, 'ineligible', user); - const suspicious = user.suspiciousActivityFlags ?? 0; - const nextSuspicious = suspicious & ~env.clear_suspicious; - if (user.hasVerifiedPhone && nextSuspicious === suspicious) { - return outcomeOf(env, 'noop', user); - } - const updates: {has_verified_phone: boolean; suspicious_activity_flags?: number} = { - has_verified_phone: true, - }; - if (nextSuspicious !== suspicious) updates.suspicious_activity_flags = nextSuspicious; - const updated = await deps.users.patchUpsert(user.id, updates, user.toRow()); - if (!user.hasVerifiedPhone) { - await deps.contactChangeLog.recordDiff({ - oldUser: user, - newUser: updated, - reason: 'user_requested', - actorUserId: user.id, - }); - } - await deps.dispatch.userUpdated(updated); - return outcomeOf(env, 'applied', updated); + throw new Error('User flags kept changing during apply'); }); } diff --git a/fluxer_api/src/api/user/services/CustomStatusValidator.ts b/fluxer_api/src/api/user/services/CustomStatusValidator.ts index 65b3ec7b4..2f3e27e54 100644 --- a/fluxer_api/src/api/user/services/CustomStatusValidator.ts +++ b/fluxer_api/src/api/user/services/CustomStatusValidator.ts @@ -6,6 +6,7 @@ import {contentModerationService} from '@app/api/infrastructure/ContentModeratio import type {LimitConfigService} from '@app/api/limits/LimitConfigService'; import {resolveLimitSafe} from '@app/api/limits/LimitConfigUtils'; import {createLimitMatchContext} from '@app/api/limits/LimitMatchContextBuilder'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import type {IUserAccountRepository} from '@app/api/user/repositories/IUserAccountRepository'; import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes'; import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError'; @@ -27,6 +28,8 @@ export class CustomStatusValidator { ) {} async validate(userId: UserID, payload: CustomStatusPayload): Promise { + const user = await this.userAccountRepository.findUnique(userId); + if (user) assertAccountNotLimited(user); const text = payload.text ?? null; contentModerationService.scanText(text, { userId, @@ -45,7 +48,6 @@ export class CustomStatusValidator { if (!emoji) { throw InputValidationError.fromCode('custom_status.emoji_id', ValidationErrorCodes.CUSTOM_EMOJI_NOT_FOUND); } - const user = await this.userAccountRepository.findUnique(userId); const ctx = createLimitMatchContext({user}); const hasGlobalExpressions = resolveLimitSafe( this.limitConfigService.getConfigSnapshot(), diff --git a/fluxer_api/src/api/user/services/EmailChangeService.ts b/fluxer_api/src/api/user/services/EmailChangeService.ts index 46c4ec897..cb1029bc2 100644 --- a/fluxer_api/src/api/user/services/EmailChangeService.ts +++ b/fluxer_api/src/api/user/services/EmailChangeService.ts @@ -2,7 +2,6 @@ import {randomUUID} from 'node:crypto'; import type {ApiContext} from '@app/api/ApiContext'; -import {EMAIL_CLEARABLE_SUSPICIOUS_ACTIVITY_FLAGS} from '@app/api/auth/AuthEmail'; import * as AuthPassword from '@app/api/auth/AuthPassword'; import {assertEmailNotBlocklisted} from '@app/api/auth/EmailBlocklist'; import type {User} from '@app/api/models/User'; @@ -309,23 +308,11 @@ export class EmailChangeService { } const emailToken = await this.verifyNew(user, ticket, code, row.original_proof); const updatedEmail = await this.getTokenEmail(user.id, emailToken); - const updates: { - email: string; - email_verified: boolean; - email_bounced: boolean; - suspicious_activity_flags?: number; - } = { - email: updatedEmail, - email_verified: true, - email_bounced: false, - }; - if (user.suspiciousActivityFlags !== null && user.suspiciousActivityFlags !== 0) { - const newFlags = user.suspiciousActivityFlags & ~EMAIL_CLEARABLE_SUSPICIOUS_ACTIVITY_FLAGS; - if (newFlags !== user.suspiciousActivityFlags) { - updates.suspicious_activity_flags = newFlags; - } - } - const updatedUser = await users.patchUpsert(user.id, updates, user.toRow()); + const updatedUser = await users.patchUpsert( + user.id, + {email: updatedEmail, email_verified: true, email_bounced: false}, + user.toRow(), + ); await this.deleteToken(emailToken); return updatedUser; } diff --git a/fluxer_api/src/api/user/services/UserAccountLifecycleService.ts b/fluxer_api/src/api/user/services/UserAccountLifecycleService.ts index f45710a31..513e388d3 100644 --- a/fluxer_api/src/api/user/services/UserAccountLifecycleService.ts +++ b/fluxer_api/src/api/user/services/UserAccountLifecycleService.ts @@ -6,46 +6,17 @@ import type {UserID} from '@app/api/BrandedTypes'; import {Config} from '@app/api/Config'; import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate'; import type {KVAccountDeletionQueueService} from '@app/api/infrastructure/KVAccountDeletionQueueService'; -import {Logger} from '@app/api/Logger'; -import type {User} from '@app/api/models/User'; import type {IUserAccountRepository} from '@app/api/user/repositories/IUserAccountRepository'; import {reschedulePendingDeletion} from '@app/api/user/services/PendingDeletionCoordinator'; import type {UserAccountUpdatePropagator} from '@app/api/user/services/UserAccountUpdatePropagator'; -import {getEffectiveSuspiciousFlags} from '@app/api/user/UserHelpers'; import {hasPartialUserFieldsChanged} from '@app/api/user/UserMappers'; import {DeletionReasons} from '@fluxer/constants/src/Core'; -import { - DEFERRABLE_PHONE_FLAGS, - DEFERRED_PHONE_ON_COMMUNITY_JOIN, - NEVER_DEFERRABLE_PHONE_FLAGS, - PHONE_GATE_PROMOTED_FROM_DEFERRAL, - UserFlags, -} from '@fluxer/constants/src/UserConstants'; +import {UserFlags} from '@fluxer/constants/src/UserConstants'; import {UserOwnsGuildsError} from '@fluxer/errors/src/domains/guild/UserOwnsGuildsError'; -import {PhoneGateEscapeUnavailableError} from '@fluxer/errors/src/domains/user/PhoneGateEscapeUnavailableError'; import {UnknownUserError} from '@fluxer/errors/src/domains/user/UnknownUserError'; -import {snowflakeToDate} from '@fluxer/snowflake/src/Snowflake'; import type {IEmailService} from '@pkgs/email/src/IEmailService'; import {ms} from 'itty-time'; -const WRITE_RESTORED_DEFERRAL_ATTEMPTS = 3; - -function holdsPromotedDeferral(user: User): boolean { - const flagBits = user.suspiciousActivityFlags ?? 0; - return ( - !user.hasVerifiedPhone && - (flagBits & PHONE_GATE_PROMOTED_FROM_DEFERRAL) !== 0 && - (flagBits & DEFERRED_PHONE_ON_COMMUNITY_JOIN) === 0 && - (flagBits & DEFERRABLE_PHONE_FLAGS) !== 0 && - (flagBits & NEVER_DEFERRABLE_PHONE_FLAGS) === 0 && - getEffectiveSuspiciousFlags(user) !== 0 - ); -} - -function restorePhoneGateDeferral(flagBits: number): number { - return (flagBits | DEFERRED_PHONE_ON_COMMUNITY_JOIN) & ~PHONE_GATE_PROMOTED_FROM_DEFERRAL; -} - interface UserAccountLifecycleServiceDeps { apiContext: ApiContext; userAccountRepository: IUserAccountRepository; @@ -63,12 +34,9 @@ export class UserAccountLifecycleService { if (!user) { throw new UnknownUserError(); } - const updatedUser = await this.deps.userAccountRepository.patchUpsert( + const updatedUser = await this.deps.userAccountRepository.updateFlags( userId, - { - flags: user.flags | UserFlags.DISABLED, - }, - user.toRow(), + (flags) => flags | UserFlags.DISABLED, ); await AuthSession.terminateAllUserSessions(this.deps.apiContext, userId); if (updatedUser) { @@ -121,62 +89,4 @@ export class UserAccountLifecycleService { } } } - - async previewPhoneGateEscape(userId: UserID): Promise { - const user = await this.deps.userAccountRepository.findUnique(userId); - if (!user) { - throw new UnknownUserError(); - } - return holdsPromotedDeferral(user); - } - - async executePhoneGateEscape(userId: UserID): Promise { - const user = await this.deps.userAccountRepository.findUnique(userId); - if (!user) { - throw new UnknownUserError(); - } - const context = { - userId: userId.toString(), - accountAgeMs: Date.now() - snowflakeToDate(BigInt(user.id)).getTime(), - }; - if (!holdsPromotedDeferral(user)) { - Logger.info(context, 'deferred_phone_gate.escape_refused'); - throw new PhoneGateEscapeUnavailableError(); - } - const updated = await this.writeRestoredDeferral(userId); - try { - await this.deps.updatePropagator.dispatchUserUpdate(updated); - } catch (error) { - Logger.warn({...context, error}, 'deferred_phone_gate.escape_dispatch_failed'); - } - Logger.info( - {...context, flagsBefore: user.suspiciousActivityFlags ?? 0, flagsAfter: updated.suspiciousActivityFlags ?? 0}, - 'deferred_phone_gate.escaped', - ); - return updated; - } - - private async writeRestoredDeferral(userId: UserID): Promise { - for (let attempt = 0; attempt < WRITE_RESTORED_DEFERRAL_ATTEMPTS; attempt++) { - const current = await this.deps.userAccountRepository.findUnique(userId); - if (!current) { - throw new UnknownUserError(); - } - if (((current.suspiciousActivityFlags ?? 0) & DEFERRED_PHONE_ON_COMMUNITY_JOIN) !== 0) { - return current; - } - try { - return await this.deps.userAccountRepository.patchUpsert( - current.id, - {suspicious_activity_flags: restorePhoneGateDeferral(current.suspiciousActivityFlags ?? 0)}, - current.toRow(), - ); - } catch (error) { - if (attempt === WRITE_RESTORED_DEFERRAL_ATTEMPTS - 1) { - throw error; - } - } - } - throw new UnknownUserError(); - } } diff --git a/fluxer_api/src/api/user/services/UserAccountProfileService.ts b/fluxer_api/src/api/user/services/UserAccountProfileService.ts index c31680023..ad008af7b 100644 --- a/fluxer_api/src/api/user/services/UserAccountProfileService.ts +++ b/fluxer_api/src/api/user/services/UserAccountProfileService.ts @@ -56,7 +56,6 @@ export class UserAccountProfileService { const updates: UserFieldUpdates = { avatar_hash: user.avatarHash, banner_hash: user.bannerHash, - flags: user.flags, }; let preparedAvatarUpload: PreparedAssetUpload | null = null; let preparedBannerUpload: PreparedAssetUpload | null = null; diff --git a/fluxer_api/src/api/user/services/UserAccountRequestService.ts b/fluxer_api/src/api/user/services/UserAccountRequestService.ts index be9319b24..c158cb825 100644 --- a/fluxer_api/src/api/user/services/UserAccountRequestService.ts +++ b/fluxer_api/src/api/user/services/UserAccountRequestService.ts @@ -13,16 +13,13 @@ import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware'; import type {AuthSession} from '@app/api/models/AuthSession'; import type {User} from '@app/api/models/User'; import type {HonoEnv} from '@app/api/types/HonoEnv'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import type {IUserRepository} from '@app/api/user/IUserRepository'; import type {EmailChangeService} from '@app/api/user/services/EmailChangeService'; import type {UserAccountService} from '@app/api/user/services/UserAccountService'; import type {UserChannelService} from '@app/api/user/services/UserChannelService'; import {mapUserToPartialResponseWithCache} from '@app/api/user/UserCacheHelpers'; -import { - createPremiumClearPatch, - getEffectiveSuspiciousFlags, - shouldStripExpiredPremium, -} from '@app/api/user/UserHelpers'; +import {createPremiumClearPatch, shouldStripExpiredPremium} from '@app/api/user/UserHelpers'; import { mapGuildMemberToProfileResponse, mapUserToPrivateResponse, @@ -33,7 +30,6 @@ import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes'; import {getCurrentTimeZoneOffsetMinutes} from '@fluxer/date_utils/src/TimeZoneUtils'; import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError'; import {UnauthorizedError} from '@fluxer/errors/src/domains/core/UnauthorizedError'; -import {AccountSuspiciousActivityError} from '@fluxer/errors/src/domains/user/AccountSuspiciousActivityError'; import type {ConnectionResponse} from '@fluxer/schema/src/domains/connection/ConnectionSchemas'; import type { EmailChangeApplyRequest, @@ -103,19 +99,14 @@ export class UserAccountRequestService { getCurrentUserResponse(params: { authTokenType?: 'session' | 'bearer' | 'bot' | 'admin_api_key'; oauthBearerScopes?: Set | null; - allowSuspicious?: boolean; user?: User; }): UserPrivateResponse { const tokenType = params.authTokenType; - const allowSuspicious = params.allowSuspicious ?? false; if (tokenType === 'bearer') { const bearerUser = params.user; if (!bearerUser) { throw new UnauthorizedError(); } - if (!allowSuspicious) { - this.enforceUserAccess(bearerUser); - } const includeEmail = params.oauthBearerScopes?.has('email') ?? false; const response = mapUserToPrivateResponse(bearerUser); if (!includeEmail) { @@ -126,9 +117,6 @@ export class UserAccountRequestService { } const user = params.user; if (user) { - if (!allowSuspicious) { - this.enforceUserAccess(user); - } return mapUserToPrivateResponse(user); } throw new UnauthorizedError(); @@ -156,7 +144,6 @@ export class UserAccountRequestService { if (!emailTokenProvided && !hasDefinedUserUpdatePayload(userUpdateData)) { return mapUserToPrivateResponse(user); } - this.enforceSuspiciousSelfUpdateAllowance(user, body); if (userUpdateData.email !== undefined) { throw InputValidationError.fromCode('email', ValidationErrorCodes.EMAIL_MUST_BE_CHANGED_VIA_TOKEN); } @@ -176,6 +163,7 @@ export class UserAccountRequestService { } if (!isUnclaimed && hasProfileCustomizationUpdate(userUpdateData)) { requireEmailVerified(user, 'profile'); + assertAccountNotLimited(user); } let emailFromToken: string | null = null; let emailVerifiedViaToken = false; @@ -213,8 +201,6 @@ export class UserAccountRequestService { new_email: updatedUser.email, was_unclaimed: isUnclaimed, has_ever_purchased: updatedUser.hasEverPurchased, - suspicious_flags: updatedUser.suspiciousActivityFlags ?? 0, - suspicious_flags_before: user.suspiciousActivityFlags ?? 0, }); } if (profileFieldsChanged(user, updatedUser)) { @@ -355,7 +341,6 @@ export class UserAccountRequestService { response.mfa_enabled = false; response.authenticator_types = undefined; response.password_last_changed_at = null; - response.required_actions = []; response.nsfw_allowed = false; response.premium_since = null; response.premium_until = null; @@ -376,47 +361,6 @@ export class UserAccountRequestService { response.pending_bulk_message_deletion = null; } - private enforceUserAccess(user: User): void { - const flags = getEffectiveSuspiciousFlags(user); - if (flags !== 0) { - throw new AccountSuspiciousActivityError(flags); - } - } - - private enforceSuspiciousSelfUpdateAllowance(user: User, body: UserUpdateWithVerificationRequest): void { - const flags = getEffectiveSuspiciousFlags(user); - if (flags === 0) { - return; - } - if (this.isAllowedSuspiciousRecoveryUpdate(body)) { - return; - } - throw new AccountSuspiciousActivityError(flags); - } - - private isAllowedSuspiciousRecoveryUpdate(body: UserUpdateWithVerificationRequest): boolean { - if (!body.email_token) { - return false; - } - const allowedKeys = new Set([ - 'email_token', - 'password', - 'mfa_method', - 'mfa_code', - 'webauthn_response', - 'webauthn_challenge', - ]); - for (const [key, value] of Object.entries(body)) { - if (value === undefined) { - continue; - } - if (!allowedKeys.has(key)) { - return false; - } - } - return true; - } - private requiresSensitiveUserVerification(user: User, data: UserUpdatePayload, emailTokenProvided: boolean): boolean { const isUnclaimed = user.isUnclaimedAccount(); const usernameChanged = data.username !== undefined && data.username !== user.username; diff --git a/fluxer_api/src/api/user/services/UserAccountService.ts b/fluxer_api/src/api/user/services/UserAccountService.ts index ae1c928ed..c803ee342 100644 --- a/fluxer_api/src/api/user/services/UserAccountService.ts +++ b/fluxer_api/src/api/user/services/UserAccountService.ts @@ -1,7 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import type {ApiContext} from '@app/api/ApiContext'; -import {EMAIL_CLEARABLE_SUSPICIOUS_ACTIVITY_FLAGS} from '@app/api/auth/AuthEmail'; import type {SudoVerificationResult} from '@app/api/auth/services/SudoVerificationService'; import type {IConnectionRepository} from '@app/api/connection/IConnectionRepository'; import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate'; @@ -146,10 +145,6 @@ export class UserAccountService { ...securityResult.updates, ...profileResult.updates, }; - if (securityResult.updates.flags !== undefined && securityResult.updates.flags !== null) { - const profileFlags = profileResult.updates.flags ?? user.flags; - updates.flags = profileFlags | (securityResult.updates.flags & ~user.flags); - } const securityPremiumFlags = securityResult.updates.premium_flags; if (securityPremiumFlags !== undefined && securityPremiumFlags !== null) { const profilePremiumFlags = profileResult.updates.premium_flags ?? user.premiumFlags; @@ -158,12 +153,6 @@ export class UserAccountService { const emailChanged = data.email !== undefined; if (emailChanged) { updates.email_verified = !!emailVerifiedViaToken; - if (emailVerifiedViaToken && user.suspiciousActivityFlags !== null && user.suspiciousActivityFlags !== 0) { - const newFlags = user.suspiciousActivityFlags & ~EMAIL_CLEARABLE_SUSPICIOUS_ACTIVITY_FLAGS; - if (newFlags !== user.suspiciousActivityFlags) { - updates.suspicious_activity_flags = newFlags; - } - } } let updatedUser: User; try { diff --git a/fluxer_api/src/api/user/services/UserAuth.ts b/fluxer_api/src/api/user/services/UserAuth.ts index 59ddfca01..c04a1e350 100644 --- a/fluxer_api/src/api/user/services/UserAuth.ts +++ b/fluxer_api/src/api/user/services/UserAuth.ts @@ -15,7 +15,7 @@ import {MfaNotEnabledError} from '@fluxer/errors/src/domains/auth/MfaNotEnabledE import {SudoModeRequiredError} from '@fluxer/errors/src/domains/auth/SudoModeRequiredError'; import {InputValidationError} from '@fluxer/errors/src/domains/core/InputValidationError'; -const LEGACY_PHONE_AUTHENTICATOR_TYPE = 1; +const RETIRED_AUTHENTICATOR_TYPE = 1; interface EnableMfaTotpParams { user: User; @@ -101,10 +101,7 @@ export async function disableMfaTotp(ctx: ApiContext, {user, code, sudoContext}: const userId = user.id; const authenticatorTypes = new Set(user.authenticatorTypes ?? []); authenticatorTypes.delete(UserAuthenticatorTypes.TOTP); - const hasLegacyPhoneAuthenticator = authenticatorTypes.has(LEGACY_PHONE_AUTHENTICATOR_TYPE); - if (hasLegacyPhoneAuthenticator) { - authenticatorTypes.delete(LEGACY_PHONE_AUTHENTICATOR_TYPE); - } + authenticatorTypes.delete(RETIRED_AUTHENTICATOR_TYPE); const updatedUser = await users.patchUpsert( userId, { diff --git a/fluxer_api/src/api/user/services/UserAuthRequestService.ts b/fluxer_api/src/api/user/services/UserAuthRequestService.ts index e02941391..98523dd47 100644 --- a/fluxer_api/src/api/user/services/UserAuthRequestService.ts +++ b/fluxer_api/src/api/user/services/UserAuthRequestService.ts @@ -2,27 +2,18 @@ import type {ApiContext} from '@app/api/ApiContext'; import * as AuthMfa from '@app/api/auth/AuthMfa'; -import * as AuthPhone from '@app/api/auth/AuthPhone'; import {requireEmailVerified} from '@app/api/auth/EmailVerificationUtils'; import {visibleWebAuthnCredentials} from '@app/api/auth/services/PasskeyRelyingParty'; import type {SudoVerificationResult} from '@app/api/auth/services/SudoVerificationService'; -import type {IGuildRepositoryAggregate} from '@app/api/guild/repositories/IGuildRepositoryAggregate'; import type {User} from '@app/api/models/User'; import type {IUserRepository} from '@app/api/user/IUserRepository'; import * as UserAuth from '@app/api/user/services/UserAuth'; import {mapUserToPrivateResponse, mapWebAuthnCredentialToResponse} from '@app/api/user/UserMappers'; -import {GuildVerificationLevel} from '@fluxer/constants/src/GuildConstants'; -import {UserAuthenticatorTypes} from '@fluxer/constants/src/UserConstants'; -import {PhoneAddNotEligibleError} from '@fluxer/errors/src/domains/auth/PhoneAddNotEligibleError'; import type { DisableTotpRequest, EnableMfaTotpRequest, MfaBackupCodesRequest, MfaBackupCodesResponse, - PhoneSendVerificationRequest, - PhoneSendVerificationResponse, - PhoneVerifyRequest, - PhoneVerifyResponse, SudoMfaMethodsResponse, WebAuthnChallengeResponse, WebAuthnCredentialListResponse, @@ -63,31 +54,8 @@ export class UserAuthRequestService { constructor( private apiContext: ApiContext, private userRepository: IUserRepository, - private guildRepository: IGuildRepositoryAggregate, ) {} - private async assertPhoneEligible(user: User): Promise { - if (user.hasVerifiedPhone) { - return; - } - if (user.authenticatorTypes.has(UserAuthenticatorTypes.TOTP)) { - return; - } - if (user.suspiciousActivityFlags !== 0) { - return; - } - if (this.apiContext.services.config.instance.phoneVerificationEnabled) { - const guildIds = await this.userRepository.getUserGuildIds(user.id); - if (guildIds.length > 0) { - const guilds = await this.guildRepository.listGuilds(guildIds); - if (guilds.some((g) => g.verificationLevel >= GuildVerificationLevel.VERY_HIGH)) { - return; - } - } - } - throw new PhoneAddNotEligibleError(); - } - async enableTotp({ user, data, @@ -124,55 +92,6 @@ export class UserAuthRequestService { return this.toBackupCodesResponse(backupCodes); } - async sendPhoneVerificationCode({ - user, - data, - clientIp, - hasCaptchaToken, - verifyCaptcha, - }: UserAuthRequest & { - clientIp: string; - hasCaptchaToken: boolean; - verifyCaptcha: () => Promise; - }): Promise { - await this.assertPhoneEligible(user); - const result = await AuthPhone.sendPhoneVerificationCode(this.apiContext, data.phone, user.id, { - clientIp, - channel: data.channel, - hasCaptchaToken, - verifyCaptcha, - }); - if (result.channel === 'inbound_challenge') { - return { - channel: 'inbound_challenge', - challenge_code: result.challengeCode, - our_number: result.ourNumber, - expires_at: result.expiresAt.toISOString(), - reason: 'verification_required', - }; - } - return {channel: result.channel}; - } - - async verifyPhoneCode({user, data}: UserAuthRequest): Promise { - await this.assertPhoneEligible(user); - await AuthPhone.verifyPhoneCode(this.apiContext, data.phone, data.code, user.id); - return {verified: true}; - } - - async startInboundPhoneChallenge(user: User): Promise<{ - challenge_code: string; - our_number: string; - expires_at: string; - }> { - const issued = await AuthPhone.startInboundPhoneChallenge(this.apiContext, user.id); - return { - challenge_code: issued.challengeCode, - our_number: issued.ourNumber, - expires_at: issued.expiresAt.toISOString(), - }; - } - async forgetAuthorizedIps(user: User): Promise { await this.userRepository.deleteAllAuthorizedIps(user.id); } diff --git a/fluxer_api/src/api/user/services/UserChannelService.ts b/fluxer_api/src/api/user/services/UserChannelService.ts index 62e1d9f82..99ca5f612 100644 --- a/fluxer_api/src/api/user/services/UserChannelService.ts +++ b/fluxer_api/src/api/user/services/UserChannelService.ts @@ -24,6 +24,7 @@ import type {RequestCache} from '@app/api/middleware/RequestCacheMiddleware'; import type {Channel} from '@app/api/models/Channel'; import type {Message} from '@app/api/models/Message'; import type {User} from '@app/api/models/User'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import {assertMayStartConversation} from '@app/api/user/NewConversationLimit'; import type {IUserAccountRepository} from '@app/api/user/repositories/IUserAccountRepository'; import type {IUserChannelRepository} from '@app/api/user/repositories/IUserChannelRepository'; @@ -151,6 +152,7 @@ export class UserChannelService { } requireEmailVerified(callingUser, 'direct_message'); if (data.recipients !== undefined) { + assertAccountNotLimited(callingUser); return await this.createGroupDMChannel({ userId, recipients: data.recipients, diff --git a/fluxer_api/src/api/user/services/UserContactChangeLogService.ts b/fluxer_api/src/api/user/services/UserContactChangeLogService.ts index 48073e140..c2c758a68 100644 --- a/fluxer_api/src/api/user/services/UserContactChangeLogService.ts +++ b/fluxer_api/src/api/user/services/UserContactChangeLogService.ts @@ -9,7 +9,7 @@ import {awaitAll} from '@app/api/utils/ConcurrencyUtils'; type ContactChangeReason = 'user_requested' | 'admin_action'; interface ContactChange { - field: 'email' | 'has_verified_phone' | 'fluxer_tag'; + field: 'email' | 'fluxer_tag'; oldValue: string | null; newValue: string | null; } @@ -41,11 +41,6 @@ export class UserContactChangeLogService { oldValue: oldUser?.email?.toLowerCase() ?? null, newValue: newUser.email?.toLowerCase() ?? null, }, - { - field: 'has_verified_phone', - oldValue: String(oldUser?.hasVerifiedPhone ?? false), - newValue: String(newUser.hasVerifiedPhone), - }, { field: 'fluxer_tag', oldValue: this.buildFluxerTag(oldUser), diff --git a/fluxer_api/src/api/user/services/UserDeletionService.ts b/fluxer_api/src/api/user/services/UserDeletionService.ts index 8781af5b6..40b272499 100644 --- a/fluxer_api/src/api/user/services/UserDeletionService.ts +++ b/fluxer_api/src/api/user/services/UserDeletionService.ts @@ -199,7 +199,6 @@ export async function processUserDeletion( stripe_subscription_id: null, stripe_customer_id: null, has_ever_purchased: null, - suspicious_activity_flags: null, terms_agreed_at: null, privacy_agreed_at: null, last_active_at: null, diff --git a/fluxer_api/src/api/user/tests/AccountLimit.test.ts b/fluxer_api/src/api/user/tests/AccountLimit.test.ts new file mode 100644 index 000000000..54964362b --- /dev/null +++ b/fluxer_api/src/api/user/tests/AccountLimit.test.ts @@ -0,0 +1,134 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +import {createAuthHarness, createTestAccount, type TestAccount} from '@app/api/auth/tests/AuthTestUtils'; +import { + acceptInvite, + createChannelInvite, + createGuild, + sendChannelMessage, +} from '@app/api/channel/tests/ChannelTestUtils'; +import type {ApiTestHarness} from '@app/api/test/ApiTestHarness'; +import {createBuilder} from '@app/api/test/TestRequestBuilder'; +import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; +import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas'; +import {afterAll, beforeAll, beforeEach, describe, expect, it} from 'vitest'; + +interface ErrorResponse { + code: string; + message: string; +} + +async function setFlags(harness: ApiTestHarness, userId: string, flags: Array): Promise { + await createBuilder(harness, '').post(`/test/users/${userId}/security-flags`).body({set_flags: flags}).execute(); +} + +async function clearFlags(harness: ApiTestHarness, userId: string, flags: Array): Promise { + await createBuilder(harness, '').post(`/test/users/${userId}/security-flags`).body({clear_flags: flags}).execute(); +} + +async function expectLimited(request: Promise<{json: ErrorResponse}>): Promise { + const {json} = await request; + expect(json.code).toBe(APIErrorCodes.ACCOUNT_LIMITED); + expect(json.message).toBe('Your account is limited. Check your email for how to lift it.'); +} + +describe('Account limitation', () => { + let harness: ApiTestHarness; + let owner: TestAccount; + let member: TestAccount; + let guild: GuildResponse; + let channelId: string; + + beforeAll(async () => { + harness = await createAuthHarness(); + }); + beforeEach(async () => { + await harness.reset(); + owner = await createTestAccount(harness); + member = await createTestAccount(harness); + guild = await createGuild(harness, owner.token, 'Limit Guild'); + channelId = guild.system_channel_id!; + const invite = await createChannelInvite(harness, owner.token, channelId); + await acceptInvite(harness, member.token, invite.code); + }); + afterAll(async () => { + await harness?.shutdown(); + }); + + it('reports the limitation on the private user', async () => { + await setFlags(harness, member.userId, ['ACCOUNT_LIMITED']); + const me = await createBuilder<{account_limited?: boolean}>(harness, member.token).get('/users/@me').execute(); + expect(me.account_limited).toBe(true); + await clearFlags(harness, member.userId, ['ACCOUNT_LIMITED']); + const lifted = await createBuilder<{account_limited?: boolean}>(harness, member.token).get('/users/@me').execute(); + expect(lifted.account_limited).toBe(false); + }); + + it('blocks sending messages', async () => { + await setFlags(harness, member.userId, ['ACCOUNT_LIMITED']); + await expectLimited( + createBuilder(harness, member.token) + .post(`/channels/${channelId}/messages`) + .body({content: 'hello'}) + .expect(403) + .executeWithResponse(), + ); + }); + + it('blocks adding reactions', async () => { + const message = await sendChannelMessage(harness, owner.token, channelId, 'react to me'); + await setFlags(harness, member.userId, ['ACCOUNT_LIMITED']); + await expectLimited( + createBuilder(harness, member.token) + .put(`/channels/${channelId}/messages/${message.id}/reactions/%F0%9F%91%8D/@me`) + .expect(403) + .executeWithResponse(), + ); + }); + + it('blocks joining a guild through an invite but not rejoining one it is in', async () => { + const outsider = await createTestAccount(harness); + await setFlags(harness, outsider.userId, ['ACCOUNT_LIMITED']); + await setFlags(harness, member.userId, ['ACCOUNT_LIMITED']); + const invite = await createChannelInvite(harness, owner.token, channelId); + await expectLimited( + createBuilder(harness, outsider.token) + .post(`/invites/${invite.code}`) + .body(null) + .expect(403) + .executeWithResponse(), + ); + await createBuilder(harness, member.token).post(`/invites/${invite.code}`).body(null).expect(200).execute(); + }); + + it('blocks profile changes others see but allows private account fields', async () => { + await setFlags(harness, member.userId, ['ACCOUNT_LIMITED']); + await expectLimited( + createBuilder(harness, member.token) + .patch('/users/@me') + .body({bio: 'blocked'}) + .expect(403) + .executeWithResponse(), + ); + await expectLimited( + createBuilder(harness, member.token) + .patch(`/guilds/${guild.id}/members/@me`) + .body({nick: 'blocked'}) + .expect(403) + .executeWithResponse(), + ); + await createBuilder(harness, member.token) + .patch('/users/@me') + .body({has_dismissed_premium_onboarding: true}) + .expect(200) + .execute(); + }); + + it('never limits exempt accounts', async () => { + await setFlags(harness, member.userId, ['ACCOUNT_LIMITED', 'LIMIT_EXEMPT']); + const me = await createBuilder<{account_limited?: boolean}>(harness, member.token).get('/users/@me').execute(); + expect(me.account_limited).toBe(false); + await sendChannelMessage(harness, member.token, channelId, 'still here'); + await createBuilder(harness, member.token).patch('/users/@me').body({bio: 'allowed'}).expect(200).execute(); + }); +}); diff --git a/fluxer_api/src/api/user/tests/NewConversationLimit.test.ts b/fluxer_api/src/api/user/tests/NewConversationLimit.test.ts index e4a31f3bc..82fc60d41 100644 --- a/fluxer_api/src/api/user/tests/NewConversationLimit.test.ts +++ b/fluxer_api/src/api/user/tests/NewConversationLimit.test.ts @@ -122,7 +122,7 @@ describe('New conversation limit', () => { }); test('staff and trusted accounts are never limited', async () => { - for (const flag of [UserFlags.STAFF, UserFlags.NOT_SUSPICIOUS]) { + for (const flag of [UserFlags.STAFF, UserFlags.LIMIT_EXEMPT]) { const [account, other] = await members(2); const me = await createBuilder<{flags?: string | number}>(harness, account!.token).get('/users/@me').execute(); await createBuilder(harness, account!.token) diff --git a/fluxer_api/src/api/user/tests/PhoneGateEscape.test.ts b/fluxer_api/src/api/user/tests/PhoneGateEscape.test.ts deleted file mode 100644 index 54e46df1a..000000000 --- a/fluxer_api/src/api/user/tests/PhoneGateEscape.test.ts +++ /dev/null @@ -1,147 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {createAuthHarness, createTestAccount, type TestAccount} from '@app/api/auth/tests/AuthTestUtils'; -import {createUserID} from '@app/api/BrandedTypes'; -import {GuildRepository} from '@app/api/guild/repositories/GuildRepository'; -import {acceptInvite, createChannelInvite, createGuild} from '@app/api/message/tests/MessageTestUtils'; -import type {ApiTestHarness} from '@app/api/test/ApiTestHarness'; -import {NoopGatewayService} from '@app/api/test/NoopGatewayService'; -import {createBuilder, createBuilderWithoutAuth} from '@app/api/test/TestRequestBuilder'; -import {UserRepository} from '@app/api/user/repositories/UserRepository'; -import { - DEFERRED_PHONE_ON_COMMUNITY_JOIN, - PHONE_GATE_PROMOTED_FROM_DEFERRAL, - SuspiciousActivityFlags, -} from '@fluxer/constants/src/UserConstants'; -import {afterAll, beforeAll, beforeEach, describe, expect, it, vi} from 'vitest'; - -const ESCAPE_PATH = '/users/@me/required-actions/phone-gate-escape'; -const PROMOTED = SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | PHONE_GATE_PROMOTED_FROM_DEFERRAL; - -interface EscapePreviewResponse { - available: boolean; - guilds: Array<{id: string; name: string}>; - owned_guilds: Array<{id: string; name: string}>; -} - -interface PrivateUser { - required_actions: Array | null; -} - -describe('Phone gate escape', () => { - let harness: ApiTestHarness; - beforeAll(async () => { - harness = await createAuthHarness(); - }); - beforeEach(async () => { - await harness.reset(); - }); - afterAll(async () => { - await harness?.shutdown(); - }); - - async function setFlags(account: TestAccount, flags: number): Promise { - await createBuilderWithoutAuth(harness) - .post(`/test/users/${account.userId}/security-flags`) - .body({suspicious_activity_flags: flags}) - .execute(); - } - - async function readFlags(account: TestAccount): Promise { - const user = await new UserRepository().findUnique(createUserID(BigInt(account.userId))); - return user?.suspiciousActivityFlags ?? 0; - } - - async function guildIds(account: TestAccount): Promise> { - const guilds = await new GuildRepository().listUserGuilds(createUserID(BigInt(account.userId))); - return guilds.map((guild) => guild.id.toString()).sort(); - } - - async function joinedAccount(): Promise<{account: TestAccount; guildIds: Array}> { - const owner = await createTestAccount(harness); - const account = await createTestAccount(harness); - const joined = await createGuild(harness, owner.token, 'Joined'); - const invite = await createChannelInvite(harness, owner.token, joined.system_channel_id!); - await acceptInvite(harness, account.token, invite.code); - const owned = await createGuild(harness, account.token, 'Owned'); - return {account, guildIds: [joined.id, owned.id].sort()}; - } - - function preview(account: TestAccount) { - return createBuilder(harness, account.token).get(ESCAPE_PATH).expect(200).execute(); - } - - function execute(account: TestAccount) { - return createBuilder(harness, account.token).post(ESCAPE_PATH).body({}).expect(200).execute(); - } - - function refused(account: TestAccount) { - return createBuilder(harness, account.token) - .post(ESCAPE_PATH) - .body({}) - .expect(400, 'PHONE_GATE_ESCAPE_UNAVAILABLE') - .execute(); - } - - it('lifts a promoted requirement without leaving any guild', async () => { - const {account, guildIds: before} = await joinedAccount(); - await setFlags(account, PROMOTED); - await createBuilder(harness, account.token) - .get('/users/@me/guilds') - .expect(403, 'ACCOUNT_SUSPICIOUS_ACTIVITY') - .execute(); - - expect(await preview(account)).toEqual({available: true, guilds: [], owned_guilds: []}); - - const dispatch = vi.spyOn(NoopGatewayService.prototype, 'dispatchPresence'); - try { - const updated = await execute(account); - expect(updated.required_actions ?? []).toEqual([]); - const userUpdates = dispatch.mock.calls.filter( - ([params]) => params.event === 'USER_UPDATE' && params.userId.toString() === account.userId, - ); - expect(userUpdates).toHaveLength(1); - } finally { - dispatch.mockRestore(); - } - - expect(await guildIds(account)).toEqual(before); - const flags = await readFlags(account); - expect(flags & DEFERRED_PHONE_ON_COMMUNITY_JOIN).not.toBe(0); - expect(flags & PHONE_GATE_PROMOTED_FROM_DEFERRAL).toBe(0); - expect(flags & SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE).not.toBe(0); - await createBuilder(harness, account.token).get('/users/@me/guilds').expect(200).execute(); - }); - - it('closes itself after a successful escape', async () => { - const account = await createTestAccount(harness); - await setFlags(account, PROMOTED); - await execute(account); - expect(await preview(account)).toEqual({available: false, guilds: [], owned_guilds: []}); - await refused(account); - }); - - it('leaves a remaining email requirement in place', async () => { - const account = await createTestAccount(harness); - await setFlags(account, PROMOTED | SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL); - const updated = await execute(account); - expect(updated.required_actions).toEqual(['REQUIRE_REVERIFIED_EMAIL']); - }); - - it('refuses a requirement that was never deferred', async () => { - const account = await createTestAccount(harness); - await setFlags(account, SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE); - expect((await preview(account)).available).toBe(false); - await refused(account); - expect(await readFlags(account)).toBe(SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE); - }); - - it('refuses a promoted account that also owes inbound verification', async () => { - const account = await createTestAccount(harness); - const flags = PROMOTED | SuspiciousActivityFlags.REQUIRE_INBOUND_PHONE_VERIFICATION; - await setFlags(account, flags); - expect((await preview(account)).available).toBe(false); - await refused(account); - expect(await readFlags(account)).toBe(flags); - }); -}); diff --git a/fluxer_api/src/api/user/tests/ProfileCustomizationEmailVerificationRequired.test.ts b/fluxer_api/src/api/user/tests/ProfileCustomizationEmailVerificationRequired.test.ts index 67d89c5b7..0c6d1e1fd 100644 --- a/fluxer_api/src/api/user/tests/ProfileCustomizationEmailVerificationRequired.test.ts +++ b/fluxer_api/src/api/user/tests/ProfileCustomizationEmailVerificationRequired.test.ts @@ -17,7 +17,6 @@ async function setEmailVerified(harness: ApiTestHarness, userId: string, emailVe .post(`/test/users/${userId}/security-flags`) .body({ email_verified: emailVerified, - suspicious_activity_flags: 0, }) .execute(); } diff --git a/fluxer_api/src/api/user/tests/SuspiciousFlagsCompareAndSet.test.ts b/fluxer_api/src/api/user/tests/SuspiciousFlagsCompareAndSet.test.ts deleted file mode 100644 index 482444b61..000000000 --- a/fluxer_api/src/api/user/tests/SuspiciousFlagsCompareAndSet.test.ts +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {createUniqueEmail, createUniqueUsername, registerUser} from '@app/api/auth/tests/AuthTestUtils'; -import {createUserID} from '@app/api/BrandedTypes'; -import {getUserRepository} from '@app/api/middleware/ServiceSingletons'; -import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness'; -import {TEST_CREDENTIALS} from '@app/api/test/TestConstants'; -import {afterAll, beforeAll, beforeEach, describe, expect, test} from 'vitest'; - -describe('suspicious flags compare and set', () => { - let harness: ApiTestHarness; - beforeAll(async () => { - harness = await createApiTestHarness(); - }); - beforeEach(async () => { - await harness.reset(); - }); - afterAll(async () => { - await harness?.shutdown(); - }); - - test('applies to a new account whose flags were never written, and refuses a stale read', async () => { - const {user_id} = await registerUser(harness, { - email: createUniqueEmail('cas'), - username: createUniqueUsername('cas'), - global_name: 'Cas', - password: TEST_CREDENTIALS.STRONG_PASSWORD, - date_of_birth: '2000-01-01', - consent: true, - }); - const users = getUserRepository(); - const id = createUserID(BigInt(user_id)); - const fresh = (await users.findUnique(id))!; - expect(fresh.suspiciousActivityFlags).toBe(0); - const updated = await users.compareAndSetSuspiciousFlags(fresh, 1); - expect(updated?.suspiciousActivityFlags).toBe(1); - expect((await users.findUnique(id))!.suspiciousActivityFlags).toBe(1); - expect(await users.compareAndSetSuspiciousFlags(fresh, 2)).toBeNull(); - expect((await users.findUnique(id))!.suspiciousActivityFlags).toBe(1); - }); -}); diff --git a/fluxer_api/src/api/utils/GuildVerificationUtils.test.ts b/fluxer_api/src/api/utils/GuildVerificationUtils.test.ts index 5030bbb94..f1ebf2cfe 100644 --- a/fluxer_api/src/api/utils/GuildVerificationUtils.test.ts +++ b/fluxer_api/src/api/utils/GuildVerificationUtils.test.ts @@ -1,13 +1,11 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import {createUserID} from '@app/api/BrandedTypes'; -import {Config} from '@app/api/Config'; import {User} from '@app/api/models/User'; import {checkGuildVerificationWithResponse} from '@app/api/utils/GuildVerificationUtils'; import {GuildFeatures, GuildVerificationLevel} from '@fluxer/constants/src/GuildConstants'; import {ProfileFieldPrivacyFlags} from '@fluxer/constants/src/UserConstants'; import {GuildEmailVerificationRequiredError} from '@fluxer/errors/src/domains/auth/EmailVerificationRequiredError'; -import {GuildPhoneVerificationRequiredError} from '@fluxer/errors/src/domains/auth/GuildPhoneVerificationRequiredError'; import {GuildVerificationRequiredError} from '@fluxer/errors/src/domains/guild/GuildVerificationRequiredError'; import type {GuildMemberResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSchemas'; import type {GuildResponse} from '@fluxer/schema/src/domains/guild/GuildResponseSchemas'; @@ -17,7 +15,7 @@ const TEST_USER_ID = createUserID(175928847299117063n); const TEST_OWNER_ID = createUserID(275928847299117063n); const TEST_JOINED_AT = new Date('2025-01-01T00:00:00.000Z').toISOString(); -function createUser(params?: {emailVerified?: boolean; hasVerifiedPhone?: boolean}): User { +function createUser(params?: {emailVerified?: boolean}): User { return new User({ user_id: TEST_USER_ID, username: 'member', @@ -27,7 +25,6 @@ function createUser(params?: {emailVerified?: boolean; hasVerifiedPhone?: boolea system: false, email: 'member@example.com', email_verified: params?.emailVerified ?? false, - has_verified_phone: params?.hasVerifiedPhone ?? false, email_bounced: false, password_hash: 'hashed', password_last_changed_at: null, @@ -56,7 +53,6 @@ function createUser(params?: {emailVerified?: boolean; hasVerifiedPhone?: boolea stripe_subscription_id: null, stripe_customer_id: null, has_ever_purchased: false, - suspicious_activity_flags: 0, terms_agreed_at: null, privacy_agreed_at: null, last_active_at: null, @@ -158,50 +154,22 @@ describe('GuildVerificationUtils', () => { }), ).not.toThrow(); }); - it('allows very high verification with only a verified phone', () => { + it('treats a stored level above high as high', () => { const guild = createGuildResponse([]); - guild.verification_level = GuildVerificationLevel.VERY_HIGH; + Object.assign(guild, {verification_level: 4}); expect(() => checkGuildVerificationWithResponse({ - user: createUser({emailVerified: false, hasVerifiedPhone: true}), - guild, - member: createMemberResponse(new Date().toISOString()), - }), - ).not.toThrow(); - }); - it('rejects very high verification without a verified phone', () => { - const guild = createGuildResponse([]); - guild.verification_level = GuildVerificationLevel.VERY_HIGH; - expect(() => - checkGuildVerificationWithResponse({ - user: createUser({emailVerified: true, hasVerifiedPhone: false}), + user: createUser({emailVerified: true}), guild, member, }), - ).toThrow(GuildPhoneVerificationRequiredError); - }); - it('treats very high as high when phone verification is unavailable', () => { - const saved = Config.instance.phoneVerificationEnabled; - Config.instance.phoneVerificationEnabled = false; - try { - const guild = createGuildResponse([]); - guild.verification_level = GuildVerificationLevel.VERY_HIGH; - expect(() => - checkGuildVerificationWithResponse({ - user: createUser({emailVerified: true, hasVerifiedPhone: false}), - guild, - member, - }), - ).not.toThrow(); - expect(() => - checkGuildVerificationWithResponse({ - user: createUser({emailVerified: true, hasVerifiedPhone: false}), - guild, - member: createMemberResponse(new Date().toISOString()), - }), - ).toThrow(GuildVerificationRequiredError); - } finally { - Config.instance.phoneVerificationEnabled = saved; - } + ).not.toThrow(); + expect(() => + checkGuildVerificationWithResponse({ + user: createUser({emailVerified: true}), + guild, + member: createMemberResponse(new Date().toISOString()), + }), + ).toThrow(GuildVerificationRequiredError); }); }); diff --git a/fluxer_api/src/api/utils/GuildVerificationUtils.ts b/fluxer_api/src/api/utils/GuildVerificationUtils.ts index ea823a423..f0e83072a 100644 --- a/fluxer_api/src/api/utils/GuildVerificationUtils.ts +++ b/fluxer_api/src/api/utils/GuildVerificationUtils.ts @@ -1,7 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import {createRoleIDSet, createUserID, type RoleID, type UserID} from '@app/api/BrandedTypes'; -import {Config} from '@app/api/Config'; import type {Guild} from '@app/api/models/Guild'; import type {GuildMember} from '@app/api/models/GuildMember'; import type {User} from '@app/api/models/User'; @@ -11,7 +10,6 @@ import { getEffectiveGuildVerificationLevel, } from '@fluxer/constants/src/GuildConstants'; import {GuildEmailVerificationRequiredError} from '@fluxer/errors/src/domains/auth/EmailVerificationRequiredError'; -import {GuildPhoneVerificationRequiredError} from '@fluxer/errors/src/domains/auth/GuildPhoneVerificationRequiredError'; import {AccountTooNewForGuildError} from '@fluxer/errors/src/domains/guild/AccountTooNewForGuildError'; import {GuildVerificationRequiredError} from '@fluxer/errors/src/domains/guild/GuildVerificationRequiredError'; import type {GuildMemberResponse} from '@fluxer/schema/src/domains/guild/GuildMemberSchemas'; @@ -41,12 +39,6 @@ function checkGuildVerification(params: VerificationParams): void { if (memberRoles && memberRoles.size > 0) { return; } - if (verificationLevel === GuildVerificationLevel.VERY_HIGH) { - if (!user.hasVerifiedPhone) { - throw new GuildPhoneVerificationRequiredError(); - } - return; - } if (!user.email) { throw new GuildVerificationRequiredError('You need to claim your account to send messages in this guild.'); } @@ -91,7 +83,6 @@ export function checkGuildVerificationWithGuildModel({ verificationLevel: getEffectiveGuildVerificationLevel( guild.verificationLevel ?? GuildVerificationLevel.NONE, guild.features.has(GuildFeatures.DISCOVERABLE), - Config.instance.phoneVerificationEnabled, ), memberJoinedAt: member.joinedAt, memberRoles: member.roleIds, @@ -117,7 +108,6 @@ export function checkGuildVerificationWithResponse({ verificationLevel: getEffectiveGuildVerificationLevel( guild.verification_level ?? GuildVerificationLevel.NONE, (guild.features ?? []).includes(GuildFeatures.DISCOVERABLE), - Config.instance.phoneVerificationEnabled, ), memberJoinedAt: member.joined_at, memberRoles: createRoleIDSet(new Set(member.roles.map((roleId) => BigInt(roleId)))), diff --git a/fluxer_api/src/api/voice/VoiceService.ts b/fluxer_api/src/api/voice/VoiceService.ts index 371f8eec6..e689e237d 100644 --- a/fluxer_api/src/api/voice/VoiceService.ts +++ b/fluxer_api/src/api/voice/VoiceService.ts @@ -8,7 +8,6 @@ import type {LiveKitService} from '@app/api/infrastructure/LiveKitService'; import type {PinnedRoomServer, VoiceRoomStore} from '@app/api/infrastructure/VoiceRoomStore'; import {Logger} from '@app/api/Logger'; import type {IUserRepository} from '@app/api/user/IUserRepository'; -import {getEffectiveSuspiciousFlags} from '@app/api/user/UserHelpers'; import type {VoiceAccessContext, VoiceAvailabilityService} from '@app/api/voice/VoiceAvailabilityService'; import type {VoiceRegionAvailability, VoiceServerRecord} from '@app/api/voice/VoiceModel'; import { @@ -23,7 +22,6 @@ import {UnclaimedAccountCannotJoinVoiceChannelsError} from '@fluxer/errors/src/d import {UnknownChannelError} from '@fluxer/errors/src/domains/channel/UnknownChannelError'; import {FeatureTemporarilyDisabledError} from '@fluxer/errors/src/domains/core/FeatureTemporarilyDisabledError'; import {UnknownGuildMemberError} from '@fluxer/errors/src/domains/guild/UnknownGuildMemberError'; -import {AccountSuspiciousActivityError} from '@fluxer/errors/src/domains/user/AccountSuspiciousActivityError'; import {UnknownUserError} from '@fluxer/errors/src/domains/user/UnknownUserError'; interface GetVoiceTokenParams { @@ -85,10 +83,6 @@ export class VoiceService { if (!user) { throw new UnknownUserError(); } - const effectiveSuspiciousFlags = getEffectiveSuspiciousFlags(user); - if (effectiveSuspiciousFlags !== 0) { - throw new AccountSuspiciousActivityError(effectiveSuspiciousFlags); - } const channel = await this.channelRepository.findUnique(channelId); if (!channel) { throw new UnknownChannelError(); diff --git a/fluxer_api/src/api/webhook/SmsWebhookForwarder.ts b/fluxer_api/src/api/webhook/SmsWebhookForwarder.ts deleted file mode 100644 index 360c1e7dd..000000000 --- a/fluxer_api/src/api/webhook/SmsWebhookForwarder.ts +++ /dev/null @@ -1,57 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import { - HEADER, - type InboundSms, - PHONE_INBOUND_SUBJECT, - PHONE_RPC_VERSION, -} from '@app/api/infrastructure/activity/Contract.generated'; -import {Logger} from '@app/api/Logger'; -import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware'; -import {RateLimitConfigs} from '@app/api/RateLimitConfig'; -import type {HonoApp} from '@app/api/types/HonoEnv'; -import type {JetStreamClient} from '@nats-io/jetstream'; - -const PUBLISH_TIMEOUT_MS = 2000; -const EMPTY_TWIML = ''; -export const SMS_WEBHOOK_MAX_BODY_BYTES = 8192; -export const SMS_INBOUND_TTL = String(24 * 60 * 60); -const TWILIO_SIGNATURE = /^[A-Za-z0-9+/]{27}=$/; -const MESSAGE_SID = /^(SM|MM)[0-9a-f]{32}$/; - -export function installSmsWebhookForwarder( - routes: HonoApp, - jetStream: () => Pick | null, -): void { - routes.post('/webhooks/twilio/sms', RateLimitMiddleware(RateLimitConfigs.WEBHOOK_TWILIO_SMS), async (ctx) => { - const declared = Number(ctx.req.header('content-length') ?? '0'); - if (declared > SMS_WEBHOOK_MAX_BODY_BYTES) return ctx.text('too large', 413); - const rawBody = await ctx.req.text(); - if (Buffer.byteLength(rawBody) > SMS_WEBHOOK_MAX_BODY_BYTES) return ctx.text('too large', 413); - const signature = ctx.req.header(HEADER.twilioSignature) ?? ''; - const msgID = new URLSearchParams(rawBody).get('MessageSid') ?? ''; - if (!TWILIO_SIGNATURE.test(signature) || !MESSAGE_SID.test(msgID)) return ctx.text('forbidden', 403); - const js = jetStream(); - if (!js) { - Logger.warn('Inbound SMS webhook could not be forwarded, JetStream is not connected'); - return ctx.text('unavailable', 500); - } - const message: InboundSms = { - v: PHONE_RPC_VERSION, - received_at_ms: Date.now(), - signature, - body: rawBody, - }; - try { - await js.publish(PHONE_INBOUND_SUBJECT, JSON.stringify(message), { - msgID, - ttl: SMS_INBOUND_TTL, - timeout: PUBLISH_TIMEOUT_MS, - }); - } catch (error) { - Logger.warn({err: error}, 'Inbound SMS webhook publish failed'); - return ctx.text('unavailable', 500); - } - return ctx.text(EMPTY_TWIML, 200, {'Content-Type': 'text/xml'}); - }); -} diff --git a/fluxer_api/src/api/webhook/WebhookController.ts b/fluxer_api/src/api/webhook/WebhookController.ts index c6fb75fa8..688fbde50 100644 --- a/fluxer_api/src/api/webhook/WebhookController.ts +++ b/fluxer_api/src/api/webhook/WebhookController.ts @@ -17,6 +17,7 @@ import {RateLimitMiddleware} from '@app/api/middleware/RateLimitMiddleware'; import {OpenAPI} from '@app/api/middleware/ResponseTypeMiddleware'; import {RateLimitConfigs} from '@app/api/RateLimitConfig'; import type {HonoApp, HonoEnv} from '@app/api/types/HonoEnv'; +import {assertAccountNotLimited} from '@app/api/user/AccountLimit'; import {parseJsonPreservingLargeIntegers} from '@app/api/utils/LosslessJsonParser'; import {Validator} from '@app/api/Validator'; import type {WebhookExecuteMessageData} from '@app/api/webhook/WebhookService'; @@ -189,6 +190,7 @@ export function WebhookController(app: HonoApp) { Validator('param', ChannelIdParam), Validator('json', WebhookCreateRequest), async (ctx) => { + assertAccountNotLimited(ctx.get('user')); const auditLogReason = ctx.get('auditLogReason') ?? null; const response = await ctx.get('webhookRequestService').createWebhook({ userId: ctx.get('user').id, diff --git a/fluxer_api/src/api/webhook/tests/ChannelFollow.test.ts b/fluxer_api/src/api/webhook/tests/ChannelFollow.test.ts index 92cb2ad80..5e4ff09a0 100644 --- a/fluxer_api/src/api/webhook/tests/ChannelFollow.test.ts +++ b/fluxer_api/src/api/webhook/tests/ChannelFollow.test.ts @@ -113,6 +113,22 @@ describe('Channel follow', () => { ).toHaveLength(0); }); + test('rejects a limited account and creates no webhook', async () => { + const {a, b} = world; + await createBuilder(harness, '') + .post(`/test/users/${b.owner.userId}/security-flags`) + .body({set_flags: ['ACCOUNT_LIMITED']}) + .execute(); + await followRequest(harness, b.owner.token, a.ann.id, b.t1.id) + .expect(HTTP_STATUS.FORBIDDEN, APIErrorCodes.ACCOUNT_LIMITED) + .execute(); + await createBuilder(harness, '') + .post(`/test/users/${b.owner.userId}/security-flags`) + .body({clear_flags: ['ACCOUNT_LIMITED']}) + .execute(); + expect(await getChannelWebhooks(harness, b.t1.id, b.owner.token)).toHaveLength(0); + }); + test('truncates long follower webhook names to 80 code points', async () => { const {b} = world; const longName = `${'\u{1F4E3}'.repeat(10)}${'x'.repeat(80)}`; diff --git a/fluxer_api/src/api/webhook/tests/SmsWebhookForwarder.test.ts b/fluxer_api/src/api/webhook/tests/SmsWebhookForwarder.test.ts deleted file mode 100644 index 7b504e6b6..000000000 --- a/fluxer_api/src/api/webhook/tests/SmsWebhookForwarder.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {PHONE_INBOUND_SUBJECT} from '@app/api/infrastructure/activity/Contract.generated'; -import type {HonoApp} from '@app/api/types/HonoEnv'; -import { - installSmsWebhookForwarder, - SMS_INBOUND_TTL, - SMS_WEBHOOK_MAX_BODY_BYTES, -} from '@app/api/webhook/SmsWebhookForwarder'; -import {Hono} from 'hono'; -import {describe, expect, it} from 'vitest'; - -const SIGNATURE = `${'a'.repeat(27)}=`; -const SID = `SM${'0'.repeat(32)}`; - -function rig() { - const published: Array<{subject: string; options: Record}> = []; - const app = new Hono(); - installSmsWebhookForwarder(app as unknown as HonoApp, () => ({ - publish: async (subject: string, _data: unknown, options?: Record) => { - published.push({subject, options: options ?? {}}); - return {} as never; - }, - })); - const post = (body: string, signature = SIGNATURE) => - app.request('/webhooks/twilio/sms', { - method: 'POST', - headers: {'content-type': 'application/x-www-form-urlencoded', 'x-twilio-signature': signature}, - body, - }); - return {published, post}; -} - -describe('sms webhook forwarder', () => { - it('forwards a well-formed webhook with its MessageSid and a short ttl', async () => { - const {published, post} = rig(); - const res = await post(`MessageSid=${SID}&From=%2B15555550123&Body=123456`); - expect(res.status).toBe(200); - expect(published).toEqual([ - {subject: PHONE_INBOUND_SUBJECT, options: expect.objectContaining({msgID: SID, ttl: SMS_INBOUND_TTL})}, - ]); - }); - - it('refuses unsigned, malformed and oversized posts before touching the stream', async () => { - const {published, post} = rig(); - expect((await post(`MessageSid=${SID}&Body=1`, '')).status).toBe(403); - expect((await post('MessageSid=random&Body=1')).status).toBe(403); - expect((await post(`MessageSid=${SID}&Body=${'x'.repeat(SMS_WEBHOOK_MAX_BODY_BYTES)}`)).status).toBe(413); - expect(published).toEqual([]); - }); -}); diff --git a/fluxer_api/src/api/worker/AccountActionConsumer.ts b/fluxer_api/src/api/worker/AccountActionConsumer.ts index 5b7a66087..dd03d1f3d 100644 --- a/fluxer_api/src/api/worker/AccountActionConsumer.ts +++ b/fluxer_api/src/api/worker/AccountActionConsumer.ts @@ -15,8 +15,7 @@ import {Logger} from '@app/api/Logger'; import { type AccountStateDeps, applyLimitNewConversations, - applyPhoneVerified, - applySuspiciousFlags, + applySetAccountLimit, applyTempBanIp, outcomeOf, } from '@app/api/user/services/AccountStateApplier'; @@ -65,10 +64,8 @@ export function applyAction(deps: AccountActionDeps, env: ActionEnvelope): Promi if (env.v !== CONTRACT_VERSION) return Promise.resolve(outcomeOf(env, 'unsupported')); if (env.expires_at_ms <= (deps.now?.() ?? Date.now())) return Promise.resolve(outcomeOf(env, 'expired')); switch (env.type) { - case 'set_suspicious_flags': - return applySuspiciousFlags(deps.state, env); - case 'phone_verified': - return applyPhoneVerified(deps.state, env); + case 'set_account_limit': + return applySetAccountLimit(deps.state, env); case 'temp_ban_ip': return applyTempBanIp(deps.state, env); case 'limit_new_conversations': diff --git a/fluxer_api/src/api/worker/WorkerLaneConfig.ts b/fluxer_api/src/api/worker/WorkerLaneConfig.ts index d06e89809..c9bfff2db 100644 --- a/fluxer_api/src/api/worker/WorkerLaneConfig.ts +++ b/fluxer_api/src/api/worker/WorkerLaneConfig.ts @@ -53,7 +53,6 @@ const LANE_CONFIG = { 'processGooglePlayNotification', 'refreshStorePurchase', 'bulkUpdateUserFlags', - 'bulkUpdateSuspiciousActivityFlags', 'bulkScheduleUserDeletion', 'bulkUpdateGuildFeatures', 'bulkAddGuildMembers', diff --git a/fluxer_api/src/api/worker/WorkerTaskRegistry.ts b/fluxer_api/src/api/worker/WorkerTaskRegistry.ts index 0b79fc5fe..8ed99dc12 100644 --- a/fluxer_api/src/api/worker/WorkerTaskRegistry.ts +++ b/fluxer_api/src/api/worker/WorkerTaskRegistry.ts @@ -6,7 +6,6 @@ import bulkBanFileShas from '@app/api/worker/tasks/admin_bulk/BulkBanFileShas'; import bulkDeleteMessagesForUsers from '@app/api/worker/tasks/admin_bulk/BulkDeleteMessagesForUsers'; import bulkScheduleUserDeletion from '@app/api/worker/tasks/admin_bulk/BulkScheduleUserDeletion'; import bulkUpdateGuildFeatures from '@app/api/worker/tasks/admin_bulk/BulkUpdateGuildFeatures'; -import bulkUpdateSuspiciousActivityFlags from '@app/api/worker/tasks/admin_bulk/BulkUpdateSuspiciousActivityFlags'; import bulkUpdateUserFlags from '@app/api/worker/tasks/admin_bulk/BulkUpdateUserFlags'; import batchGuildAuditLogMessageDeletes from '@app/api/worker/tasks/BatchGuildAuditLogMessageDeletes'; import bulkDeleteSelfMessagesImmediate from '@app/api/worker/tasks/BulkDeleteSelfMessagesImmediate'; @@ -67,7 +66,6 @@ export const workerTasks: Record = { bulkDeleteUserMessagesScoped, bulkScheduleUserDeletion: bulkScheduleUserDeletion, bulkUpdateGuildFeatures: bulkUpdateGuildFeatures, - bulkUpdateSuspiciousActivityFlags: bulkUpdateSuspiciousActivityFlags, bulkUpdateUserFlags: bulkUpdateUserFlags, crosspostMessage, crosspostMessageChunk, diff --git a/fluxer_api/src/api/worker/tasks/ApplicationProcessDeletion.ts b/fluxer_api/src/api/worker/tasks/ApplicationProcessDeletion.ts index 181cef893..560aa6bbc 100644 --- a/fluxer_api/src/api/worker/tasks/ApplicationProcessDeletion.ts +++ b/fluxer_api/src/api/worker/tasks/ApplicationProcessDeletion.ts @@ -60,16 +60,17 @@ const applicationProcessDeletion: WorkerTaskHandler = async (payload, helpers) = await applicationRepository.deleteApplication(applicationId); return; } - const updatedBotUser = await userRepository.patchUpsert( + const renamedBotUser = await userRepository.patchUpsert( botUserId, { username: DELETED_USER_USERNAME, global_name: DELETED_USER_GLOBAL_NAME, discriminator: DELETED_USER_DISCRIMINATOR, - flags: botUser.flags | UserFlags.DELETED, }, botUser.toRow(), ); + const updatedBotUser = + (await userRepository.updateFlags(botUserId, (flags) => flags | UserFlags.DELETED)) ?? renamedBotUser; await userCacheService.setUserPartialResponseFromUser(updatedBotUser); Logger.debug({applicationId, botUserId}, 'Updated bot user to deleted state'); const guildIds = await userRepository.getUserGuildIds(botUserId); diff --git a/fluxer_api/src/api/worker/tasks/HarvestUserData.ts b/fluxer_api/src/api/worker/tasks/HarvestUserData.ts index 809699f97..9afa11f62 100644 --- a/fluxer_api/src/api/worker/tasks/HarvestUserData.ts +++ b/fluxer_api/src/api/worker/tasks/HarvestUserData.ts @@ -446,7 +446,6 @@ export function buildUserDataJson(params: UserDataJsonParams) { email: user.email, email_verified: user.emailVerified, email_bounced: user.emailBounced, - has_verified_phone: user.hasVerifiedPhone, avatar_hash: user.avatarHash, avatar_url: user.avatarHash ? `${Config.endpoints.media}/avatars/${userId}/${user.avatarHash}.${user.avatarHash.startsWith('a_') ? 'gif' : 'png'}` diff --git a/fluxer_api/src/api/worker/tasks/admin_bulk/BulkUpdateSuspiciousActivityFlags.ts b/fluxer_api/src/api/worker/tasks/admin_bulk/BulkUpdateSuspiciousActivityFlags.ts deleted file mode 100644 index 883e66bd3..000000000 --- a/fluxer_api/src/api/worker/tasks/admin_bulk/BulkUpdateSuspiciousActivityFlags.ts +++ /dev/null @@ -1,90 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {createUserID} from '@app/api/BrandedTypes'; -import {runAdminBulkJob} from '@app/api/worker/tasks/admin_bulk/AdminBulkJob'; -import {createAdminBulkServices} from '@app/api/worker/tasks/admin_bulk/AdminBulkServices'; -import {getWorkerDependencies} from '@app/api/worker/WorkerContext'; -import {ALL_SUSPICIOUS_ACTIVITY_FLAGS, SuspiciousActivityFlags} from '@fluxer/constants/src/UserConstants'; -import {UnknownUserError} from '@fluxer/errors/src/domains/user/UnknownUserError'; -import type {WorkerTaskHandler} from '@pkgs/worker/src/contracts/WorkerTask'; - -interface Payload { - user_ids: Array; - add_flags: Array; - remove_flags: Array; - admin_user_id: string; - audit_log_reason: string | null; -} - -const PROGRESS_EVERY = 25; - -function resolveFlagMask(flagNames: ReadonlyArray): number { - let mask = 0; - const unknownNames: Array = []; - for (const flagName of flagNames) { - const value = SuspiciousActivityFlags[flagName as keyof typeof SuspiciousActivityFlags]; - if (value === undefined) { - unknownNames.push(flagName); - continue; - } - mask |= value; - } - if (unknownNames.length > 0) { - throw new Error(`Unknown suspicious activity flag names: ${unknownNames.join(', ')}`); - } - return mask; -} - -const handler: WorkerTaskHandler = async (rawPayload, helpers) => { - const payload: Payload = { - user_ids: rawPayload.user_ids as Array, - add_flags: rawPayload.add_flags as Array, - remove_flags: rawPayload.remove_flags as Array, - admin_user_id: rawPayload.admin_user_id as string, - audit_log_reason: (rawPayload.audit_log_reason as string | null) ?? null, - }; - const addMask = resolveFlagMask(payload.add_flags); - const removeMask = resolveFlagMask(payload.remove_flags); - const deps = getWorkerDependencies(); - const {auditService, userService} = createAdminBulkServices(deps); - const adminUserId = createUserID(BigInt(payload.admin_user_id)); - const acls = new Set(); - const total = payload.user_ids.length; - await helpers.setContextLink(`/users?ids=${payload.user_ids.slice(0, 50).join(',')}`); - await helpers.reportProgress(0, total, `Updating suspicious flags on ${total} users`); - return await runAdminBulkJob({ - helpers, - ids: payload.user_ids, - progressEvery: PROGRESS_EVERY, - apply: async (id) => { - const userIdBigInt = BigInt(id); - const user = await deps.userRepository.findUnique(createUserID(userIdBigInt)); - if (!user) { - throw new UnknownUserError(); - } - const currentFlags = user.suspiciousActivityFlags ?? 0; - const flags = (currentFlags | addMask) & ~removeMask & ALL_SUSPICIOUS_ACTIVITY_FLAGS; - await userService.securityService.updateSuspiciousActivityFlags( - {user_id: userIdBigInt, flags}, - adminUserId, - payload.audit_log_reason, - acls, - ); - }, - summary: { - auditService, - adminUserId, - action: 'bulk_update_suspicious_activity_flags', - auditLogReason: payload.audit_log_reason, - metadata: ( - [ - ['user_count', total.toString()], - ['add_flags', payload.add_flags.join(',')], - ['remove_flags', payload.remove_flags.join(',')], - ] as Array<[string, string]> - ).filter(([, value]) => value.length > 0), - }, - }); -}; - -export default handler; diff --git a/fluxer_api/src/api/worker/tests/AccountActionConsumer.test.ts b/fluxer_api/src/api/worker/tests/AccountActionConsumer.test.ts index 389cdac2e..35ea36a69 100644 --- a/fluxer_api/src/api/worker/tests/AccountActionConsumer.test.ts +++ b/fluxer_api/src/api/worker/tests/AccountActionConsumer.test.ts @@ -19,7 +19,7 @@ import { startAccountActionConsumer, stopAccountActionConsumer, } from '@app/api/worker/AccountActionConsumer'; -import {SuspiciousActivityFlags, UserFlags} from '@fluxer/constants/src/UserConstants'; +import {UserFlags} from '@fluxer/constants/src/UserConstants'; import {AckPolicy, DeliverPolicy, type JsMsg, jetstream, jetstreamManager} from '@nats-io/jetstream'; import {connect} from '@nats-io/transport-node'; import {afterAll, beforeAll, beforeEach, describe, expect, it} from 'vitest'; @@ -28,13 +28,11 @@ const USER_ID = '1174109840998400001'; const NOW = 1_759_000_000_000; const NATS_URL = process.env.FLUXER_TEST_ACTIVITY_NATS_URL; -function flagEnvelope(overrides: Partial> = {}) { - return envelope<'set_suspicious_flags'>({ - type: 'set_suspicious_flags', +function limitEnvelope(overrides: Partial> = {}) { + return envelope<'set_account_limit'>({ + type: 'set_account_limit', user_id: USER_ID, - set: 1, - clear: 0, - if_current: null, + on: true, ...overrides, }); } @@ -71,20 +69,14 @@ class FakeUsers { return row ? new User(row) : null; } - async patchUpsert(userId: UserID, patch: Partial): Promise { - const row = {...this.rows.get(userId.toString())!, ...patch}; - this.rows.set(userId.toString(), row); - return new User(row); - } - - async compareAndSetSuspiciousFlags(user: User, flags: number): Promise { + async compareAndSetFlags(user: User, flags: bigint): Promise { const row = this.rows.get(user.id.toString())!; if (this.casFailures > 0) { this.casFailures--; return null; } - if ((row.suspicious_activity_flags ?? 0) !== user.suspiciousActivityFlags) return null; - const next = {...row, suspicious_activity_flags: flags}; + if ((row.flags ?? 0n) !== user.flags) return null; + const next = {...row, flags}; this.rows.set(user.id.toString(), next); return new User(next); } @@ -94,7 +86,6 @@ interface Harness { users: FakeUsers; cached: Map; presence: Array; - contactLogs: Array; bans: Array<{ip: string; ttl: number}>; refreshes: number; deps: AccountActionDeps; @@ -106,7 +97,6 @@ function harness(): Harness { users, cached: new Map(), presence: [], - contactLogs: [], bans: [], refreshes: 0, deps: null as never, @@ -118,11 +108,6 @@ function harness(): Harness { h.presence.push(user.id); }, }, - contactChangeLog: { - recordDiff: async (params) => { - h.contactLogs.push(params); - }, - }, ipBans: { isIpBanned: async () => false, banIpTemp: async (ip: string, ttl: number) => { @@ -154,84 +139,68 @@ describe('account action apply', () => { h.users.put(); }); - it('sets requested suspicious bits and reports what it observed', async () => { - const outcome = await applyAction( - h.deps, - envelope<'set_suspicious_flags'>({ - type: 'set_suspicious_flags', - user_id: USER_ID, - set: 1, - clear: 0, - if_current: 0, - }), - ); + it('limits the account and reports what it observed', async () => { + const outcome = await applyAction(h.deps, limitEnvelope()); expect(outcome).toEqual({ action_id: 'a:07:4242:0', - action_type: 'set_suspicious_flags', + action_type: 'set_account_limit', status: 'applied', detail: null, - observed: {flags: '0', suspicious_flags: 1, has_verified_phone: false, deleted: false}, + observed: {flags: UserFlags.ACCOUNT_LIMITED.toString(), deleted: false}, user_id: USER_ID, }); - expect(h.users.current().suspiciousActivityFlags).toBe(1); + expect(h.users.current().flags).toBe(UserFlags.ACCOUNT_LIMITED); expect(h.presence).toHaveLength(1); }); - it('is a noop when the bits already hold, so a redelivery changes nothing', async () => { - const action = envelope<'set_suspicious_flags'>({ - type: 'set_suspicious_flags', - user_id: USER_ID, - set: 1, - clear: 0, - if_current: null, - }); - await applyAction(h.deps, action); - const second = await applyAction(h.deps, action); + it('is a noop when the limitation already holds, so a redelivery changes nothing', async () => { + await applyAction(h.deps, limitEnvelope()); + const second = await applyAction(h.deps, limitEnvelope()); expect(second.status).toBe('noop'); expect(h.presence).toHaveLength(1); }); - it('refuses a stale precondition and leaves the flags alone', async () => { - h.users.put({suspicious_activity_flags: SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL}); - const outcome = await applyAction( - h.deps, - envelope<'set_suspicious_flags'>({ - type: 'set_suspicious_flags', - user_id: USER_ID, - set: 1, - clear: 0, - if_current: 0, - }), - ); - expect(outcome.status).toBe('conflict'); - expect(outcome.observed?.suspicious_flags).toBe(SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL); - expect(h.users.current().suspiciousActivityFlags).toBe(SuspiciousActivityFlags.REQUIRE_REVERIFIED_EMAIL); + it('lifts the limitation and keeps the other flags', async () => { + h.users.put({flags: UserFlags.HAS_SESSION_STARTED | UserFlags.ACCOUNT_LIMITED}); + const lift = limitEnvelope({on: false}); + expect((await applyAction(h.deps, lift)).status).toBe('applied'); + expect(h.users.current().flags).toBe(UserFlags.HAS_SESSION_STARTED); + expect((await applyAction(h.deps, lift)).status).toBe('noop'); + expect(h.presence).toHaveLength(1); + }); + + it('never limits staff, exempt or system accounts', async () => { + for (const overrides of [{flags: UserFlags.STAFF}, {flags: UserFlags.LIMIT_EXEMPT}, {system: true}] satisfies Array< + Partial + >) { + h.users.put(overrides); + expect((await applyAction(h.deps, limitEnvelope())).status).toBe('exempt'); + expect(h.users.current().flags & UserFlags.ACCOUNT_LIMITED).toBe(0n); + } + expect(h.presence).toHaveLength(0); }); it('rereads and retries when the compare and set loses a race', async () => { h.users.casFailures = 2; - const outcome = await applyAction( - h.deps, - envelope<'set_suspicious_flags'>({ - type: 'set_suspicious_flags', - user_id: USER_ID, - set: 1, - clear: 0, - if_current: null, - }), - ); + const outcome = await applyAction(h.deps, limitEnvelope()); expect(outcome.status).toBe('applied'); }); + it('gives up after repeated compare and set losses', async () => { + h.users.casFailures = 3; + await expect(applyAction(h.deps, limitEnvelope())).rejects.toThrow(); + expect(h.users.current().flags).toBe(0n); + }); + it('treats missing, deleted and bot accounts as ineligible', async () => { h.users.rows.clear(); - const missing = await applyAction(h.deps, flagEnvelope()); + const missing = await applyAction(h.deps, limitEnvelope()); expect(missing).toMatchObject({status: 'ineligible', observed: null}); h.users.put({bot: true}); - const bot = await applyAction(h.deps, flagEnvelope()); + const bot = await applyAction(h.deps, limitEnvelope()); expect(bot.status).toBe('ineligible'); h.users.put({flags: UserFlags.DELETED}); - const deleted = await applyAction(h.deps, flagEnvelope()); + const deleted = await applyAction(h.deps, limitEnvelope()); expect(deleted).toMatchObject({status: 'ineligible', observed: {deleted: true}}); }); @@ -283,7 +252,7 @@ describe('account action apply', () => { on: true, until_ms: NOW + 86_400_000, }); - for (const overrides of [{flags: UserFlags.STAFF}, {flags: UserFlags.NOT_SUSPICIOUS}] satisfies Array< + for (const overrides of [{flags: UserFlags.STAFF}, {flags: UserFlags.LIMIT_EXEMPT}] satisfies Array< Partial >) { h.users.put(overrides); @@ -296,46 +265,11 @@ describe('account action apply', () => { expect(h.cached.size).toBe(0); }); - it('attaches a verified phone once and logs the contact change once', async () => { - h.users.put({ - flags: UserFlags.HAS_SESSION_STARTED, - suspicious_activity_flags: - SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL, - }); - const action = envelope<'phone_verified'>({ - type: 'phone_verified', - user_id: USER_ID, - method: 'outbound', - clear_suspicious: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE, - }); - expect((await applyAction(h.deps, action)).status).toBe('applied'); - const user = h.users.current(); - expect(user.hasVerifiedPhone).toBe(true); - expect(user.suspiciousActivityFlags).toBe(SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL); - expect(user.flags).toBe(UserFlags.HAS_SESSION_STARTED); - expect((await applyAction(h.deps, action)).status).toBe('noop'); - expect(h.contactLogs).toHaveLength(1); - }); - it('ignores unknown envelope fields', async () => { - h.users.put({ - flags: UserFlags.HAS_SESSION_STARTED, - suspicious_activity_flags: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE, - }); - const action = { - ...envelope<'phone_verified'>({ - type: 'phone_verified', - user_id: USER_ID, - method: 'outbound', - clear_suspicious: SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE, - }), - unknown_field: true, - }; + h.users.put({flags: UserFlags.HAS_SESSION_STARTED}); + const action = {...limitEnvelope(), unknown_field: true}; expect((await applyAction(h.deps, action)).status).toBe('applied'); - const user = h.users.current(); - expect(user.hasVerifiedPhone).toBe(true); - expect(user.suspiciousActivityFlags).toBe(0); - expect(user.flags).toBe(UserFlags.HAS_SESSION_STARTED); + expect(h.users.current().flags).toBe(UserFlags.HAS_SESSION_STARTED | UserFlags.ACCOUNT_LIMITED); }); it('bans a public address until the requested time and refreshes the ban caches', async () => { @@ -377,13 +311,13 @@ describe('account action apply', () => { }); it('answers expired actions and unknown shapes without touching the account', async () => { - const expired = await applyAction(h.deps, flagEnvelope({expires_at_ms: NOW})); + const expired = await applyAction(h.deps, limitEnvelope({expires_at_ms: NOW})); expect(expired.status).toBe('expired'); - const future = await applyAction(h.deps, {...flagEnvelope(), v: 2}); + const future = await applyAction(h.deps, {...limitEnvelope(), v: 2}); expect(future.status).toBe('unsupported'); - const unknown = await applyAction(h.deps, {...flagEnvelope(), type: 'future_type'} as unknown as ActionEnvelope); + const unknown = await applyAction(h.deps, {...limitEnvelope(), type: 'future_type'} as unknown as ActionEnvelope); expect(unknown).toMatchObject({status: 'unsupported', action_type: 'future_type'}); - expect(h.users.current().suspiciousActivityFlags).toBe(0); + expect(h.users.current().flags).toBe(0n); }); }); @@ -420,7 +354,7 @@ describe('account action messages', () => { h.deps.publishOutcome = async (_key, outcome) => { outcomes.push(outcome); }; - const good = fakeMsg(JSON.stringify(flagEnvelope()), 1); + const good = fakeMsg(JSON.stringify(limitEnvelope()), 1); await handleActionMessage(h.deps, good.msg); expect(outcomes.map((outcome) => outcome.status)).toEqual(['applied']); expect(good.state.acked).toBe(1); @@ -440,7 +374,7 @@ describe('account action messages', () => { h.deps.publishOutcome = async (_key, outcome) => { outcomes.push(outcome); }; - const data = JSON.stringify(flagEnvelope()); + const data = JSON.stringify(limitEnvelope()); const early = fakeMsg(data, 3); await handleActionMessage(h.deps, early.msg); expect(early.state.naks).toEqual([3000]); @@ -486,14 +420,12 @@ describe.skipIf(!NATS_URL)('account action consumer against JetStream', () => { h.deps.retryDelayMs = 200; const js = jetstream(nc); const expires = Date.now() + 60_000; - await js.publish('act.07', JSON.stringify(flagEnvelope({id: 'a:07:1:0', expires_at_ms: expires})), { + await js.publish('act.07', JSON.stringify(limitEnvelope({id: 'a:07:1:0', expires_at_ms: expires})), { msgID: 'a:07:1:0', }); - await js.publish( - 'act.07', - JSON.stringify(flagEnvelope({id: 'a:07:2:0', set: 0, clear: 1, expires_at_ms: expires})), - {msgID: 'a:07:2:0'}, - ); + await js.publish('act.07', JSON.stringify(limitEnvelope({id: 'a:07:2:0', on: false, expires_at_ms: expires})), { + msgID: 'a:07:2:0', + }); startAccountActionConsumer(h.deps); const deadline = Date.now() + 10_000; while (outcomes.length < 2 && Date.now() < deadline) { @@ -503,7 +435,7 @@ describe.skipIf(!NATS_URL)('account action consumer against JetStream', () => { ['a:07:1:0', 'applied'], ['a:07:2:0', 'applied'], ]); - expect(h.users.current().suspiciousActivityFlags).toBe(0); + expect(h.users.current().flags).toBe(0n); const info = await (await jetstreamManager(nc)).consumers.info(ACTIONS_STREAM, effectsConsumer(7)); expect(info.num_ack_pending).toBe(0); expect(info.num_pending).toBe(0); diff --git a/fluxer_api/src/api/worker/tests/BulkUpdateSuspiciousActivityFlagsTask.test.ts b/fluxer_api/src/api/worker/tests/BulkUpdateSuspiciousActivityFlagsTask.test.ts deleted file mode 100644 index 0ff2ebedb..000000000 --- a/fluxer_api/src/api/worker/tests/BulkUpdateSuspiciousActivityFlagsTask.test.ts +++ /dev/null @@ -1,214 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {AdminRepository} from '@app/api/admin/AdminRepository'; -import {createTestAccount, type TestAccount} from '@app/api/auth/tests/AuthTestUtils'; -import {createUserID} from '@app/api/BrandedTypes'; -import {getGatewayService, getSnowflakeService} from '@app/api/middleware/ServiceRegistry'; -import { - createUserCacheService, - getAdminRepository, - getChannelRepository, - getGuildRepository, - getKVAccountDeletionQueue, - getKVBulkMessageDeletionQueue, - getUserRepository, -} from '@app/api/middleware/ServiceSingletons'; -import {type ApiTestHarness, createApiTestHarness} from '@app/api/test/ApiTestHarness'; -import {NoopLogger} from '@app/api/test/mocks/NoopLogger'; -import {createBuilder} from '@app/api/test/TestRequestBuilder'; -import bulkUpdateSuspiciousActivityFlags from '@app/api/worker/tasks/admin_bulk/BulkUpdateSuspiciousActivityFlags'; -import {clearWorkerDependencies, setWorkerDependenciesForTest} from '@app/api/worker/WorkerContext'; -import { - DEFERRED_PHONE_ON_COMMUNITY_JOIN, - PHONE_GATE_PROMOTED_FROM_DEFERRAL, - SuspiciousActivityFlags, -} from '@fluxer/constants/src/UserConstants'; -import type {WorkerTaskHelpers} from '@pkgs/worker/src/contracts/WorkerTask'; -import {afterAll, afterEach, beforeAll, beforeEach, describe, expect, test} from 'vitest'; - -interface BulkJobResult { - successful_count: number; - failed_count: number; - failed: Array<{ - id: string; - error: string; - }>; -} - -const ADMIN_USER_ID = 4000000000000000000n; -const JOB_ID = 7200000000000000000n; -const MISSING_USER_ID = 4200000000000000002n; - -function createHelpers(): WorkerTaskHelpers { - return { - logger: new NoopLogger(), - jobId: JOB_ID, - addJob: async () => 0n, - reportProgress: async () => {}, - shouldCancel: async () => false, - setContextLink: async () => {}, - }; -} - -function installWorkerDependencies(): void { - setWorkerDependenciesForTest({ - adminRepository: getAdminRepository(), - snowflakeService: getSnowflakeService(), - userRepository: getUserRepository(), - guildRepository: getGuildRepository(), - channelRepository: getChannelRepository(), - userCacheService: createUserCacheService(), - deletionQueueService: getKVAccountDeletionQueue(), - bulkMessageDeletionQueueService: getKVBulkMessageDeletionQueue(), - gatewayService: getGatewayService(), - stripe: null, - }); -} - -describe('bulkUpdateSuspiciousActivityFlags task', () => { - let harness: ApiTestHarness; - beforeAll(async () => { - harness = await createApiTestHarness({search: 'enabled'}); - }); - afterAll(async () => { - await harness.shutdown(); - }); - beforeEach(async () => { - await harness.resetData(); - installWorkerDependencies(); - }); - afterEach(() => { - clearWorkerDependencies(); - }); - - async function setSuspiciousFlags(account: TestAccount, flags: number): Promise { - await createBuilder(harness, '') - .post(`/test/users/${account.userId}/security-flags`) - .body({ - suspicious_activity_flags: flags, - }) - .execute(); - } - - async function readSuspiciousFlags(account: TestAccount): Promise { - const user = await getUserRepository().findUnique(createUserID(BigInt(account.userId))); - return user!.suspiciousActivityFlags ?? 0; - } - - test('writes a per-user audit row with the admin reason and reports failures', async () => { - const account = await createTestAccount(harness); - await setSuspiciousFlags(account, 0); - - const result = (await bulkUpdateSuspiciousActivityFlags( - { - user_ids: [account.userId, MISSING_USER_ID.toString()], - add_flags: ['REQUIRE_VERIFIED_EMAIL'], - remove_flags: [], - admin_user_id: ADMIN_USER_ID.toString(), - audit_log_reason: 'Lilith verification sweep', - }, - createHelpers(), - )) as unknown as BulkJobResult; - - expect(result.successful_count).toBe(1); - expect(result.failed).toEqual([{id: MISSING_USER_ID.toString(), error: 'UNKNOWN_USER'}]); - expect(await readSuspiciousFlags(account)).toBe(SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL); - - const auditLogs = await new AdminRepository().listAllAuditLogsPaginated(50); - const perUserLogs = auditLogs.filter((log) => log.action === 'update_suspicious_activity_flags'); - expect(perUserLogs).toHaveLength(1); - expect(perUserLogs[0]!.targetType).toBe('user'); - expect(perUserLogs[0]!.targetId).toBe(BigInt(account.userId)); - expect(perUserLogs[0]!.adminUserId.toString()).toBe(ADMIN_USER_ID.toString()); - expect(perUserLogs[0]!.auditLogReason).toBe('Lilith verification sweep'); - expect(perUserLogs[0]!.metadata.get('flags')).toBe(SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL.toString()); - - const summaryLogs = auditLogs.filter((log) => log.action === 'bulk_update_suspicious_activity_flags'); - expect(summaryLogs).toHaveLength(1); - expect(summaryLogs[0]!.targetType).toBe('bulk_job'); - expect(summaryLogs[0]!.targetId).toBe(JOB_ID); - expect(summaryLogs[0]!.auditLogReason).toBe('Lilith verification sweep'); - expect(summaryLogs[0]!.metadata.get('user_count')).toBe('2'); - expect(summaryLogs[0]!.metadata.get('add_flags')).toBe('REQUIRE_VERIFIED_EMAIL'); - expect(summaryLogs[0]!.metadata.has('remove_flags')).toBe(false); - expect(summaryLogs[0]!.metadata.get('successful')).toBe('1'); - expect(summaryLogs[0]!.metadata.get('failed')).toBe('1'); - }); - - test('removing a phone requirement clears the deferral bookkeeping bits', async () => { - const account = await createTestAccount(harness); - await setSuspiciousFlags( - account, - SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | - DEFERRED_PHONE_ON_COMMUNITY_JOIN | - PHONE_GATE_PROMOTED_FROM_DEFERRAL, - ); - - const result = (await bulkUpdateSuspiciousActivityFlags( - { - user_ids: [account.userId], - add_flags: [], - remove_flags: ['REQUIRE_VERIFIED_PHONE'], - admin_user_id: ADMIN_USER_ID.toString(), - audit_log_reason: 'Phone gate lifted', - }, - createHelpers(), - )) as unknown as BulkJobResult; - - expect(result.failed).toEqual([]); - expect(await readSuspiciousFlags(account)).toBe(0); - - const auditLogs = await new AdminRepository().listAllAuditLogsPaginated(50); - const perUserLogs = auditLogs.filter((log) => log.action === 'update_suspicious_activity_flags'); - expect(perUserLogs).toHaveLength(1); - expect(perUserLogs[0]!.auditLogReason).toBe('Phone gate lifted'); - expect(perUserLogs[0]!.metadata.get('flags')).toBe('0'); - }); - - test('keeps the deferral bits when the deferrable phone flags are unchanged', async () => { - const account = await createTestAccount(harness); - await setSuspiciousFlags( - account, - SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | DEFERRED_PHONE_ON_COMMUNITY_JOIN, - ); - - await bulkUpdateSuspiciousActivityFlags( - { - user_ids: [account.userId], - add_flags: ['REQUIRE_VERIFIED_EMAIL'], - remove_flags: [], - admin_user_id: ADMIN_USER_ID.toString(), - audit_log_reason: 'Add email requirement', - }, - createHelpers(), - ); - - expect(await readSuspiciousFlags(account)).toBe( - SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | - SuspiciousActivityFlags.REQUIRE_VERIFIED_EMAIL | - DEFERRED_PHONE_ON_COMMUNITY_JOIN, - ); - }); - - test('rejects an unknown suspicious flag name instead of silently ignoring it', async () => { - const account = await createTestAccount(harness); - await setSuspiciousFlags(account, 0); - - await expect( - bulkUpdateSuspiciousActivityFlags( - { - user_ids: [account.userId], - add_flags: ['REQUIRE_VERIFIED_EMAIL', 'REQUIRE_VERIFIED_EMAILL'], - remove_flags: [], - admin_user_id: ADMIN_USER_ID.toString(), - audit_log_reason: 'Typo sweep', - }, - createHelpers(), - ), - ).rejects.toThrow('Unknown suspicious activity flag names: REQUIRE_VERIFIED_EMAILL'); - - expect(await readSuspiciousFlags(account)).toBe(0); - const auditLogs = await new AdminRepository().listAllAuditLogsPaginated(50); - expect(auditLogs).toEqual([]); - }); -}); diff --git a/fluxer_app/package.json b/fluxer_app/package.json index bda1de229..21bcf28cd 100644 --- a/fluxer_app/package.json +++ b/fluxer_app/package.json @@ -217,7 +217,6 @@ "jpeg-js": "^0.4.4", "katex": "catalog:", "lexical": "catalog:", - "libphonenumber-js": "catalog:", "livekit-client": "workspace:*", "lodash": "catalog:", "lru-cache": "catalog:", diff --git a/fluxer_app/src/features/app/components/alerts/DmActionErrorModal.tsx b/fluxer_app/src/features/app/components/alerts/DmActionErrorModal.tsx index 3adfdf150..008ef867f 100644 --- a/fluxer_app/src/features/app/components/alerts/DmActionErrorModal.tsx +++ b/fluxer_app/src/features/app/components/alerts/DmActionErrorModal.tsx @@ -72,6 +72,7 @@ export function resolveDmActionErrorContent( ): {title: string; message: string} { switch (code) { case APIErrorCodes.NEW_CONVERSATIONS_LIMITED: + case APIErrorCodes.ACCOUNT_LIMITED: return { title: i18nGlobal._(GENERIC_TITLE_DESCRIPTOR), message: apiMessage || i18nGlobal._(GENERIC_ERROR_BODY_DESCRIPTOR), diff --git a/fluxer_app/src/features/app/components/layout/AppLayout.tsx b/fluxer_app/src/features/app/components/layout/AppLayout.tsx index 96a7ca1e5..c705663c7 100644 --- a/fluxer_app/src/features/app/components/layout/AppLayout.tsx +++ b/fluxer_app/src/features/app/components/layout/AppLayout.tsx @@ -2,7 +2,6 @@ import styles from '@app/features/app/components/layout/AppLayout.module.css'; import {useAppLayoutState} from '@app/features/app/components/layout/app_layout/AppLayoutHooks'; -import RequiredActionGate from '@app/features/app/components/layout/RequiredActionGate'; import Initialization from '@app/features/app/state/Initialization'; import * as AuthenticationCommands from '@app/features/auth/commands/AuthenticationCommands'; import AccountManager from '@app/features/auth/state/AccountManager'; @@ -40,7 +39,6 @@ export const AppLayout = observer(({children}: {children: React.ReactNode}) => { )} {isAuthenticated && } - {isAuthenticated && }
{ - const requiredActionKey = resolveRequiredActionFlow(Users.currentUser?.requiredActions)?.key ?? null; - const isModalOpen = Modal.hasModal(REQUIRED_ACTION_MODAL_KEY); - useEffect(() => { - if (!requiredActionKey) { - if (isModalOpen) { - ModalCommands.popWithKey(REQUIRED_ACTION_MODAL_KEY); - } - return; - } - if (!isModalOpen) { - LayerManager.closeAll(); - } - ModalCommands.pushWithKey( - ModalCommands.modal(() => ( - - )), - REQUIRED_ACTION_MODAL_KEY, - ); - }, [isModalOpen, requiredActionKey]); - useEffect( - () => () => { - ModalCommands.popWithKey(REQUIRED_ACTION_MODAL_KEY); - }, - [], - ); - return null; -}); - -export default RequiredActionGate; diff --git a/fluxer_app/src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx b/fluxer_app/src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx index af56f0863..3d2771bef 100644 --- a/fluxer_app/src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx +++ b/fluxer_app/src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx @@ -7,6 +7,7 @@ import {NAGBAR_TONES, NagbarToneKind} from '@app/features/app/components/layout/ import {OPEN_SETTINGS_DESCRIPTOR} from '@app/features/i18n/utils/CommonMessageDescriptors'; import * as ModalCommands from '@app/features/ui/commands/ModalCommands'; import {modal} from '@app/features/ui/commands/ModalCommands'; +import {BouncedEmailChangeModal} from '@app/features/user/components/modals/BouncedEmailChangeModal'; import {UserSettingsModal} from '@app/features/user/components/modals/UserSettingsModal'; import Users from '@app/features/user/state/Users'; import * as NicknameUtils from '@app/features/user/utils/NicknameUtils'; @@ -19,12 +20,29 @@ const EMAIL_VERIFICATION_NAGBAR_MESSAGE_DESCRIPTOR = msg({ comment: 'Nagbar warning shown when the current user still needs to verify email. displayName is the user display name.', }); +const EMAIL_BOUNCED_NAGBAR_MESSAGE_DESCRIPTOR = msg({ + message: "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account.", + comment: + 'Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name.', +}); +const ADD_A_WORKING_EMAIL_BUTTON_DESCRIPTOR = msg({ + message: 'Add a working email', + comment: 'Nagbar button that opens the flow to replace an email address that bounced. Keep it concise.', +}); export const EmailVerificationNagbar = observer(({isMobile}: {isMobile: boolean}) => { const {i18n} = useLingui(); const user = Users.currentUser; if (!user) { return null; } + const isEmailBounced = user.emailBounced === true; + const openBouncedEmailChange = () => { + ModalCommands.push( + modal(() => ( + + )), + ); + }; const openUserSettings = () => { ModalCommands.push( modal(() => ( @@ -44,17 +62,28 @@ export const EmailVerificationNagbar = observer(({isMobile}: {isMobile: boolean} > - {i18n._(OPEN_SETTINGS_DESCRIPTOR)} - + isEmailBounced ? ( + + {i18n._(ADD_A_WORKING_EMAIL_BUTTON_DESCRIPTOR)} + + ) : ( + + {i18n._(OPEN_SETTINGS_DESCRIPTOR)} + + ) } data-flx="app.app-layout.nagbars.email-verification-nagbar.nagbar-content" /> diff --git a/fluxer_app/src/features/app/constants/Endpoints.ts b/fluxer_app/src/features/app/constants/Endpoints.ts index 20b28d91f..8972b8a52 100644 --- a/fluxer_app/src/features/app/constants/Endpoints.ts +++ b/fluxer_app/src/features/app/constants/Endpoints.ts @@ -188,17 +188,12 @@ export const Endpoints = { USER_MFA_WEBAUTHN_MIGRATION_REGISTRATION_OPTIONS: '/users/@me/mfa/webauthn/migration/registration-options', USER_PASSKEY_BRIDGE: '/users/@me/passkey-bridge', USER_PASSKEY_BRIDGE_REDEEM: (ceremonyId: string) => `/users/@me/passkey-bridge/${ceremonyId}/redeem`, - USER_PHONE_SEND_VERIFICATION: '/users/@me/phone/send-verification', - USER_PHONE_INBOUND_CHALLENGE: '/users/@me/phone/inbound-challenge', - USER_PHONE_VERIFY: '/users/@me/phone/verify', - USER_REQUIRED_ACTION_PHONE_GATE_ESCAPE: '/users/@me/required-actions/phone-gate-escape', USER_EMAIL_CHANGE_START: '/users/@me/email-change/start', USER_EMAIL_CHANGE_RESEND_ORIGINAL: '/users/@me/email-change/resend-original', USER_EMAIL_CHANGE_VERIFY_ORIGINAL: '/users/@me/email-change/verify-original', USER_EMAIL_CHANGE_REQUEST_NEW: '/users/@me/email-change/request-new', USER_EMAIL_CHANGE_RESEND_NEW: '/users/@me/email-change/resend-new', USER_EMAIL_CHANGE_VERIFY_NEW: '/users/@me/email-change/verify-new', - USER_EMAIL_CHANGE_APPLY: '/users/@me/email-change/apply', USER_EMAIL_CHANGE_BOUNCED_REQUEST_NEW: '/users/@me/email-change/bounced/request-new', USER_EMAIL_CHANGE_BOUNCED_RESEND_NEW: '/users/@me/email-change/bounced/resend-new', USER_EMAIL_CHANGE_BOUNCED_VERIFY_NEW: '/users/@me/email-change/bounced/verify-new', diff --git a/fluxer_app/src/features/app/state/RuntimeConfig.ts b/fluxer_app/src/features/app/state/RuntimeConfig.ts index 3637131ef..4a67384ea 100644 --- a/fluxer_app/src/features/app/state/RuntimeConfig.ts +++ b/fluxer_app/src/features/app/state/RuntimeConfig.ts @@ -100,7 +100,7 @@ const DEFAULT_INSTANCE_FEATURES: InstanceFeatures = { self_hosted: false, presigned_attachment_uploads: false, emails_enabled: false, - phone_verification_enabled: true, + phone_verification_enabled: false, }; export const DEFAULT_INSTANCE_REGISTRATION: InstanceRegistration = { @@ -517,10 +517,6 @@ class RuntimeConfig { return this.features.emails_enabled; } - get phoneVerificationEnabled(): boolean { - return this.features.phone_verification_enabled; - } - get productName(): string { return this.appPublic.branding.product_name.trim() || DEFAULT_APP_PUBLIC_CONFIG.branding.product_name; } diff --git a/fluxer_app/src/features/auth/components/modals/RequiredActionFlow.ts b/fluxer_app/src/features/auth/components/modals/RequiredActionFlow.ts deleted file mode 100644 index 0d12cb0a5..000000000 --- a/fluxer_app/src/features/auth/components/modals/RequiredActionFlow.ts +++ /dev/null @@ -1,161 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import type {RequiredAction} from '@fluxer/schema/src/domains/user/UserResponseSchemas'; - -export type VerificationMode = 'email' | 'phone' | 'email_or_phone' | 'email_and_phone'; -export type VerificationChannel = 'email' | 'phone'; - -export interface ChannelVerificationPlan { - readonly channel: VerificationChannel; - readonly actions: ReadonlyArray; - readonly reverify: boolean; - readonly clearsAll: boolean; - readonly remainingActionsAfterCompletion: ReadonlyArray; - readonly requiresInboundPhone: boolean; -} - -export interface RequiredActionFlow { - readonly actions: ReadonlyArray; - readonly key: string; - readonly mode: VerificationMode; - readonly defaultTab: VerificationChannel; - readonly email: ChannelVerificationPlan | null; - readonly phone: ChannelVerificationPlan | null; - readonly reverify: boolean; - readonly requiresInboundPhone: boolean; -} - -const EMAIL_ACTIONS = new Set([ - 'REQUIRE_VERIFIED_EMAIL', - 'REQUIRE_REVERIFIED_EMAIL', - 'REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE', - 'REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE', - 'REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE', - 'REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE', -]); -const PHONE_ACTIONS = new Set([ - 'REQUIRE_VERIFIED_PHONE', - 'REQUIRE_REVERIFIED_PHONE', - 'REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE', - 'REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE', - 'REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE', - 'REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE', - 'REQUIRE_INBOUND_PHONE_VERIFICATION', -]); -const EMAIL_REVERIFY_ACTIONS = new Set([ - 'REQUIRE_REVERIFIED_EMAIL', - 'REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE', - 'REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE', -]); -const PHONE_REVERIFY_ACTIONS = new Set([ - 'REQUIRE_REVERIFIED_PHONE', - 'REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE', - 'REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE', -]); -const EMAIL_COMPLETION_CLEARED_ACTIONS = new Set([ - 'REQUIRE_VERIFIED_EMAIL', - 'REQUIRE_REVERIFIED_EMAIL', - 'REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE', - 'REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE', - 'REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE', - 'REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE', -]); -const PHONE_COMPLETION_CLEARED_ACTIONS = new Set([ - 'REQUIRE_VERIFIED_PHONE', - 'REQUIRE_REVERIFIED_PHONE', - 'REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE', - 'REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE', - 'REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE', - 'REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE', - 'REQUIRE_INBOUND_PHONE_VERIFICATION', -]); - -function sortActions(actions: ReadonlyArray): Array { - return [...new Set(actions)].sort(); -} - -function clearChannelActions( - actions: ReadonlyArray, - channel: VerificationChannel, -): ReadonlyArray { - const clearedActions = channel === 'email' ? EMAIL_COMPLETION_CLEARED_ACTIONS : PHONE_COMPLETION_CLEARED_ACTIONS; - return actions.filter((action) => !clearedActions.has(action)); -} - -function buildChannelPlan( - channel: VerificationChannel, - actions: ReadonlyArray, -): ChannelVerificationPlan | null { - const channelActionSet = channel === 'email' ? EMAIL_ACTIONS : PHONE_ACTIONS; - const reverifyActionSet = channel === 'email' ? EMAIL_REVERIFY_ACTIONS : PHONE_REVERIFY_ACTIONS; - const channelActions = actions.filter((action) => channelActionSet.has(action)); - if (channelActions.length === 0) { - return null; - } - const remainingActionsAfterCompletion = clearChannelActions(actions, channel); - return { - channel, - actions: channelActions, - reverify: channelActions.some((action) => reverifyActionSet.has(action)), - clearsAll: remainingActionsAfterCompletion.length === 0, - remainingActionsAfterCompletion, - requiresInboundPhone: channel === 'phone' && actions.includes('REQUIRE_INBOUND_PHONE_VERIFICATION'), - }; -} - -function pickDefaultTab( - email: ChannelVerificationPlan | null, - phone: ChannelVerificationPlan | null, -): VerificationChannel { - if (!email) { - return 'phone'; - } - if (!phone) { - return 'email'; - } - if (email.clearsAll !== phone.clearsAll) { - return email.clearsAll ? 'email' : 'phone'; - } - if (email.remainingActionsAfterCompletion.length !== phone.remainingActionsAfterCompletion.length) { - return email.remainingActionsAfterCompletion.length < phone.remainingActionsAfterCompletion.length - ? 'email' - : 'phone'; - } - return 'email'; -} - -export function getRequiredActionsKey( - requiredActions: ReadonlyArray | null | undefined, -): string | null { - if (!requiredActions || requiredActions.length === 0) { - return null; - } - return sortActions(requiredActions).join('|'); -} - -export function resolveRequiredActionFlow( - requiredActions: ReadonlyArray | null | undefined, -): RequiredActionFlow | null { - if (!requiredActions || requiredActions.length === 0) { - return null; - } - const actions = sortActions(requiredActions); - const email = buildChannelPlan('email', actions); - const phone = buildChannelPlan('phone', actions); - let mode: VerificationMode = 'email'; - if (email && phone) { - mode = email.clearsAll || phone.clearsAll ? 'email_or_phone' : 'email_and_phone'; - } else if (phone) { - mode = 'phone'; - } - return { - actions, - key: getRequiredActionsKey(actions)!, - mode, - defaultTab: pickDefaultTab(email, phone), - email, - phone, - reverify: !!email?.reverify || !!phone?.reverify, - requiresInboundPhone: phone?.requiresInboundPhone ?? false, - }; -} diff --git a/fluxer_app/src/features/auth/components/modals/RequiredActionModal.module.css b/fluxer_app/src/features/auth/components/modals/RequiredActionModal.module.css deleted file mode 100644 index ad521632f..000000000 --- a/fluxer_app/src/features/auth/components/modals/RequiredActionModal.module.css +++ /dev/null @@ -1,234 +0,0 @@ -/* SPDX-License-Identifier: AGPL-3.0-or-later */ - -.container { - gap: 1rem; - min-height: 14rem; -} - -.stepShell { - display: flex; - flex-direction: column; - gap: 1rem; -} - -.stepHeader { - display: flex; - flex-direction: column; - gap: 0.375rem; -} - -.stepTitle { - font-size: 1rem; - line-height: 1.375rem; - font-weight: 600; - color: var(--text-primary); - margin: 0; -} - -.stepDescription { - margin: 0; -} - -.inlineNotice, -.errorNotice { - border: 0.0625rem solid var(--background-header-secondary); - border-radius: 0.5rem; - padding: 0.625rem 0.75rem; - font-size: 0.8125rem; - line-height: 1.125rem; - color: var(--text-primary-muted); - background-color: var(--background-tertiary); -} - -.errorNotice { - color: var(--status-danger); - border-color: color-mix(in srgb, var(--status-danger) 35%, transparent); - background-color: color-mix(in srgb, var(--status-danger) 8%, var(--background-tertiary)); -} - -.choiceGroup { - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -.valueStack { - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -.valueBlock { - display: flex; - flex-direction: column; - gap: 0.25rem; - padding: 0.75rem; - border: 0.0625rem solid var(--background-header-secondary); - border-radius: 0.5rem; - background-color: var(--background-tertiary); -} - -.valueLabel { - font-size: 0.6875rem; - line-height: 0.875rem; - font-weight: 600; - color: var(--text-tertiary); - text-transform: uppercase; - letter-spacing: 0.02em; -} - -.valueText { - overflow-wrap: anywhere; - font-size: 0.9375rem; - line-height: 1.25rem; - font-weight: 600; - color: var(--text-primary); -} - -.inlineActions { - display: flex; - flex-direction: column; - gap: 0.375rem; -} - -.inlineLink { - align-self: flex-start; - background: transparent; - border: none; - padding: 0.125rem 0; - font-size: 0.8125rem; - line-height: 1.125rem; - font-weight: 500; - color: var(--text-link); - cursor: pointer; - text-align: left; -} - -.inlineLink:hover { - text-decoration: underline; -} - -.inlineLink:disabled { - color: var(--text-muted); - cursor: default; - text-decoration: none; -} - -.supportBlock { - display: flex; - justify-content: flex-start; -} - -.supportLink { - font-size: 0.8125rem; - line-height: 1.125rem; -} - -.altRoutesTitle { - margin: 0 0 0.375rem; - font-size: 0.875rem; - line-height: 1.25rem; - font-weight: 600; - color: var(--text-primary); -} - -.altRoutesBody { - margin: 0 0 0.5rem; -} - -.altRoutesDivider { - height: 0.0625rem; - margin: 0.75rem 0; - background-color: var(--background-header-secondary); -} - -.altRoutesAction { - margin-top: 0.5rem; -} - -.escapeConfirmLines { - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -.signOutRow { - display: flex; - align-items: center; - justify-content: center; - gap: 0.375rem; - padding-top: 0.5rem; - border-top: 0.0625rem solid var(--background-header-secondary); - font-size: 0.8125rem; - line-height: 1.125rem; - color: var(--text-muted); -} - -.signOutButton { - background: transparent; - border: none; - padding: 0.125rem 0.25rem; - font-size: 0.8125rem; - line-height: 1.125rem; - font-weight: 600; - color: var(--text-link); - cursor: pointer; -} - -.signOutButton:hover { - text-decoration: underline; -} - -.signOutButton:disabled { - color: var(--text-muted); - cursor: default; - text-decoration: none; -} - -.phoneInputContainer { - display: flex; - flex-direction: column; - gap: 0.75rem; -} - -.countryOption { - display: flex; - align-items: center; - gap: 0.5rem; -} - -.countryFlag { - height: 1.25rem; - width: 1.25rem; - flex-shrink: 0; - object-fit: contain; -} - -.countryFlagText { - display: inline-flex; - width: 1.25rem; - height: 1.25rem; - flex-shrink: 0; - align-items: center; - justify-content: center; - font-size: 1rem; - line-height: 1; -} - -.countryDialCode { - color: var(--text-tertiary); -} - -.countryValue { - display: flex; - align-items: center; - gap: 0.5rem; -} - -.selectable { - user-select: text !important; - -webkit-user-select: text !important; - -moz-user-select: text !important; - -ms-user-select: text !important; - cursor: text; -} diff --git a/fluxer_app/src/features/auth/components/modals/RequiredActionModal.tsx b/fluxer_app/src/features/auth/components/modals/RequiredActionModal.tsx deleted file mode 100644 index 9ee02f8eb..000000000 --- a/fluxer_app/src/features/auth/components/modals/RequiredActionModal.tsx +++ /dev/null @@ -1,946 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {ConfirmModal} from '@app/features/app/components/dialogs/ConfirmModal'; -import * as Modal from '@app/features/app/components/dialogs/Modal'; -import {PRODUCT_NAME, SUPPORT_EMAIL} from '@app/features/app/config/I18nDisplayConstants'; -import RuntimeConfig from '@app/features/app/state/RuntimeConfig'; -import * as AuthenticationCommands from '@app/features/auth/commands/AuthenticationCommands'; -import { - type RequiredActionFlow, - resolveRequiredActionFlow, - type VerificationChannel, -} from '@app/features/auth/components/modals/RequiredActionFlow'; -import styles from '@app/features/auth/components/modals/RequiredActionModal.module.css'; -import { - ACCOUNT_VERIFICATION_REQUIRED_DESCRIPTOR, - CHOOSE_METHOD_DESCRIPTION_DESCRIPTOR, - CHOOSE_METHOD_TITLE_DESCRIPTOR, - CONTINUE_DESCRIPTOR, - ESCAPE_FAILED_NOTHING_CHANGED_DESCRIPTOR, - ESCAPE_FAILED_PARTIAL_DESCRIPTOR, - ESCAPE_SUCCESS_EMAIL_REMAINS_TOAST_DESCRIPTOR, - ESCAPE_SUCCESS_TOAST_DESCRIPTOR, - ESCAPE_UNAVAILABLE_DESCRIPTOR, - ESCAPE_UNAVAILABLE_SELF_HOSTED_DESCRIPTOR, - GET_NEW_CODE_DESCRIPTOR, - NEXT_DESCRIPTOR, - RESEND_EMAIL_DESCRIPTOR, - SEND_CODE_DESCRIPTOR, - START_DESCRIPTOR, - STEP_INTRO_BOUNCED_EMAIL_DESCRIPTION_DESCRIPTOR, - STEP_INTRO_EMAIL_AND_PHONE_DESCRIPTION_DESCRIPTOR, - STEP_INTRO_EMAIL_OR_PHONE_DESCRIPTION_DESCRIPTOR, - STEP_INTRO_GENERIC_DESCRIPTION_DESCRIPTOR, - STEP_INTRO_PHONE_DESCRIPTION_DESCRIPTOR, - STEP_INTRO_TITLE_DESCRIPTOR, - UPDATE_EMAIL_DESCRIPTOR, - USE_EMAIL_DESCRIPTOR, - USE_PHONE_DESCRIPTOR, - VERIFY_PHONE_DESCRIPTOR, -} from '@app/features/auth/components/modals/required_action/RequiredActionDescriptors'; -import { - EmailCheckStep, - EmailCodeStep, - EmailHelpStep, - NewEmailStep, - useEmailVerification, -} from '@app/features/auth/components/modals/required_action/RequiredActionEmail'; -import {buildPhoneGateEscapeConfirmCopy} from '@app/features/auth/components/modals/required_action/RequiredActionEscapeCopy'; -import { - InboundPhoneInstructionStep, - InboundPhoneStartStep, - PhoneCodeStep, - PhoneNumberStep, - usePhoneVerification, -} from '@app/features/auth/components/modals/required_action/RequiredActionPhone'; -import { - BackButton, - RequiredActionAltRoutes, - RequiredActionBackdrop, - resolveRequiredActionErrorMessage, - SignOutFooterRow, - StepShell, -} from '@app/features/auth/components/modals/required_action/RequiredActionShared'; -import type { - ActiveInboundChallenge, - EmailScreen, - PhoneScreen, -} from '@app/features/auth/components/modals/required_action/RequiredActionTypes'; -import DeveloperOptions from '@app/features/devtools/state/DeveloperOptions'; -import {CANCEL_DESCRIPTOR, VERIFY_DESCRIPTOR} from '@app/features/i18n/utils/CommonMessageDescriptors'; -import {failureCode} from '@app/features/platform/utils/ResponseInspection'; -import {Button} from '@app/features/ui/button/Button'; -import * as ModalCommands from '@app/features/ui/commands/ModalCommands'; -import * as ToastCommands from '@app/features/ui/commands/ToastCommands'; -import {SteppedCarousel} from '@app/features/ui/stepped_carousel/SteppedCarousel'; -import * as UserCommands from '@app/features/user/commands/UserCommands'; -import Users from '@app/features/user/state/Users'; -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import type {PhoneGateEscapePreviewResponse} from '@fluxer/schema/src/domains/user/UserResponseSchemas'; -import type {I18n, MessageDescriptor} from '@lingui/core'; -import {useLingui} from '@lingui/react/macro'; -import {observer} from 'mobx-react-lite'; -import type React from 'react'; -import {useCallback, useEffect, useMemo, useRef, useState} from 'react'; - -type RequiredActionViewKind = - | 'intro' - | 'choose-method' - | 'email-check' - | 'email-help' - | 'email-recovery-new' - | 'email-recovery-code' - | 'bounced-email-new' - | 'bounced-email-code' - | 'phone-inbound-start' - | 'phone-inbound-prepare' - | 'phone-inbound-send' - | 'phone-inbound-wait' - | 'phone-number' - | 'phone-code'; - -interface RequiredActionView { - kind: RequiredActionViewKind; -} - -const REQUIRED_ACTION_VIEW_ORDER: ReadonlyArray = [ - 'intro', - 'choose-method', - 'email-check', - 'email-help', - 'email-recovery-new', - 'email-recovery-code', - 'bounced-email-new', - 'bounced-email-code', - 'phone-inbound-start', - 'phone-inbound-prepare', - 'phone-inbound-send', - 'phone-inbound-wait', - 'phone-number', - 'phone-code', -]; - -function emailScreenToView(screen: EmailScreen): RequiredActionView { - switch (screen.kind) { - case 'email-instructions': - return {kind: 'email-check'}; - case 'email-recovery-new': - return {kind: 'email-recovery-new'}; - case 'email-recovery-code': - return {kind: 'email-recovery-code'}; - case 'bounced-email-new': - return {kind: 'bounced-email-new'}; - case 'bounced-email-code': - return {kind: 'bounced-email-code'}; - } -} - -function phoneScreenToView(screen: PhoneScreen): RequiredActionView { - switch (screen.kind) { - case 'phone-inbound-start': - return {kind: 'phone-inbound-start'}; - case 'phone-inbound-challenge': - return {kind: 'phone-inbound-prepare'}; - case 'phone-number': - return {kind: 'phone-number'}; - case 'phone-code': - return {kind: 'phone-code'}; - } -} - -function isEmailView(kind: RequiredActionViewKind): boolean { - return ( - kind === 'email-check' || - kind === 'email-help' || - kind === 'email-recovery-new' || - kind === 'email-recovery-code' || - kind === 'bounced-email-new' || - kind === 'bounced-email-code' - ); -} - -function isPhoneView(kind: RequiredActionViewKind): boolean { - return ( - kind === 'phone-inbound-start' || - kind === 'phone-inbound-prepare' || - kind === 'phone-inbound-send' || - kind === 'phone-inbound-wait' || - kind === 'phone-number' || - kind === 'phone-code' - ); -} - -function getIntroDescription(flow: RequiredActionFlow | null, isEmailBounced: boolean): MessageDescriptor { - if (isEmailBounced) return STEP_INTRO_BOUNCED_EMAIL_DESCRIPTION_DESCRIPTOR; - if (flow?.mode === 'email_and_phone') return STEP_INTRO_EMAIL_AND_PHONE_DESCRIPTION_DESCRIPTOR; - if (flow?.mode === 'email_or_phone') return STEP_INTRO_EMAIL_OR_PHONE_DESCRIPTION_DESCRIPTOR; - if (flow?.mode === 'phone') return STEP_INTRO_PHONE_DESCRIPTION_DESCRIPTOR; - return STEP_INTRO_GENERIC_DESCRIPTION_DESCRIPTOR; -} - -function escapeUnavailableMessage(i18n: I18n): string { - return RuntimeConfig.isSelfHosted() - ? i18n._(ESCAPE_UNAVAILABLE_SELF_HOSTED_DESCRIPTOR) - : i18n._(ESCAPE_UNAVAILABLE_DESCRIPTOR, {supportEmail: SUPPORT_EMAIL}); -} - -const RequiredActionModal: React.FC<{mock?: boolean}> = observer(({mock = false}) => { - const {i18n} = useLingui(); - const user = Users.currentUser; - const liveRequiredActionFlow = useMemo( - () => resolveRequiredActionFlow(user?.requiredActions), - [user?.requiredActions], - ); - const [selectedVerificationType, setSelectedVerificationType] = useState( - DeveloperOptions.mockRequiredActionsSelectedTab, - ); - const [isLoggingOut, setIsLoggingOut] = useState(false); - const [renderedFlow, setRenderedFlow] = useState(liveRequiredActionFlow); - const [view, setView] = useState({kind: 'intro'}); - const [history, setHistory] = useState>([]); - const [carouselDirection, setCarouselDirection] = useState(1); - const [actionError, setActionError] = useState(null); - const [escapePreview, setEscapePreview] = useState(null); - const [escapeSubmitting, setEscapeSubmitting] = useState(false); - const viewRef = useRef(view); - const isEmailBounced = !mock && !!user?.emailBounced; - const mockFlow = mock ? buildMockRequiredActionFlow() : null; - const effectiveFlow = mockFlow ?? liveRequiredActionFlow ?? renderedFlow; - const flowKey = effectiveFlow?.key; - const defaultVerificationType = effectiveFlow?.defaultTab; - useEffect(() => { - viewRef.current = view; - }, [view]); - useEffect(() => { - if (!mock && liveRequiredActionFlow) { - setRenderedFlow(liveRequiredActionFlow); - } - }, [liveRequiredActionFlow, mock]); - useEffect(() => { - if (mock) { - setSelectedVerificationType(DeveloperOptions.mockRequiredActionsSelectedTab); - } else if (defaultVerificationType) { - setSelectedVerificationType(defaultVerificationType); - } - setView({kind: 'intro'}); - setHistory([]); - setActionError(null); - setCarouselDirection(1); - }, [mock, flowKey, defaultVerificationType]); - const hasEmailVerification = !!effectiveFlow?.email; - const hasPhoneVerification = !!effectiveFlow?.phone; - const showMethodChoice = hasEmailVerification && hasPhoneVerification && effectiveFlow?.mode === 'email_or_phone'; - const requiresInboundPhone = effectiveFlow?.phone?.requiresInboundPhone ?? false; - const canSelfServeEmailRecovery = !mock && !isEmailBounced && user?.verified !== true; - const canUsePhoneRecovery = hasPhoneVerification; - useEffect(() => { - if (mock) { - setEscapePreview({available: true, guilds: [], owned_guilds: []}); - return; - } - if (!hasPhoneVerification) { - setEscapePreview(null); - return; - } - let cancelled = false; - void UserCommands.getPhoneGateEscapePreview() - .then((preview) => { - if (!cancelled) setEscapePreview(preview); - }) - .catch(() => { - if (!cancelled) setEscapePreview(null); - }); - return () => { - cancelled = true; - }; - }, [mock, hasPhoneVerification, flowKey]); - const goTo = useCallback((nextView: RequiredActionView) => { - setCarouselDirection(1); - setActionError(null); - setHistory((current) => [...current, viewRef.current]); - setView(nextView); - }, []); - const goBack = useCallback(() => { - setCarouselDirection(-1); - setActionError(null); - setHistory((current) => { - const previous = current.at(-1); - if (!previous) return current; - setView(previous); - return current.slice(0, -1); - }); - }, []); - const goBackToFallback = useCallback((fallbackView: RequiredActionView) => { - setCarouselDirection(-1); - setActionError(null); - setHistory((current) => { - const previous = current.at(-1); - setView(previous ?? fallbackView); - return previous ? current.slice(0, -1) : current; - }); - }, []); - const switchToPhonePath = useCallback(() => { - setSelectedVerificationType('phone'); - }, []); - const phoneVerification = usePhoneVerification({ - mock, - requiresInboundPhone, - resetKey: flowKey, - }); - const emailVerification = useEmailVerification({ - mock, - isEmailBounced, - resetKey: flowKey, - onSwitchToPhoneTab: switchToPhonePath, - }); - const startPath = useCallback( - (channel: VerificationChannel) => { - setSelectedVerificationType(channel); - goTo( - channel === 'email' ? emailScreenToView(emailVerification.screen) : phoneScreenToView(phoneVerification.screen), - ); - }, - [emailVerification.screen, goTo, phoneVerification.screen], - ); - const handleIntroNext = useCallback(() => { - if (!effectiveFlow) return; - if (showMethodChoice) { - goTo({kind: 'choose-method'}); - return; - } - const channel = hasEmailVerification ? 'email' : hasPhoneVerification ? 'phone' : selectedVerificationType; - startPath(channel); - }, [ - effectiveFlow, - goTo, - hasEmailVerification, - hasPhoneVerification, - selectedVerificationType, - showMethodChoice, - startPath, - ]); - useEffect(() => { - if (!isEmailView(viewRef.current.kind)) return; - const nextView = emailScreenToView(emailVerification.screen); - if (viewRef.current.kind !== nextView.kind) { - goTo(nextView); - } - }, [emailVerification.screen.kind, goTo]); - useEffect(() => { - if (!isPhoneView(viewRef.current.kind)) return; - if (phoneVerification.screen.kind === 'phone-inbound-challenge') { - if ( - viewRef.current.kind === 'phone-inbound-prepare' || - viewRef.current.kind === 'phone-inbound-send' || - viewRef.current.kind === 'phone-inbound-wait' - ) { - return; - } - } - const nextView = phoneScreenToView(phoneVerification.screen); - if (viewRef.current.kind !== nextView.kind) { - goTo(nextView); - } - }, [phoneVerification.screen.kind, goTo]); - const handleModalClose = useCallback(() => { - if (mock) { - ModalCommands.pop(); - } - }, [mock]); - const handleLogout = useCallback(async () => { - if (isLoggingOut) return; - setIsLoggingOut(true); - try { - await AuthenticationCommands.logout(); - } finally { - setIsLoggingOut(false); - } - }, [isLoggingOut]); - const runPhoneAction = useCallback( - async ( - action: () => Promise, - context: 'phone-number' | 'phone-code' | 'general' = 'general', - ): Promise => { - setActionError(null); - try { - return await action(); - } catch (error) { - setActionError(resolveRequiredActionErrorMessage(i18n, error, context)); - return null; - } - }, - [i18n], - ); - const handleEscape = useCallback(async () => { - const hadGuildsToLeave = (escapePreview?.guilds.length ?? 0) > 0; - setActionError(null); - setEscapeSubmitting(true); - try { - const updated = await UserCommands.executePhoneGateEscape(); - Users.handleUserUpdate(updated, {clearMissingOptionalFields: true}); - const remaining = updated.required_actions; - const phoneRemains = remaining.some((action) => action.includes('PHONE')); - if (phoneRemains) { - setActionError(escapeUnavailableMessage(i18n)); - return; - } - ToastCommands.success( - remaining.length === 0 - ? i18n._(ESCAPE_SUCCESS_TOAST_DESCRIPTOR) - : i18n._(ESCAPE_SUCCESS_EMAIL_REMAINS_TOAST_DESCRIPTOR), - ); - } catch (error) { - if (failureCode(error) === APIErrorCodes.PHONE_GATE_ESCAPE_UNAVAILABLE) { - setActionError(escapeUnavailableMessage(i18n)); - } else if (hadGuildsToLeave) { - setActionError(i18n._(ESCAPE_FAILED_PARTIAL_DESCRIPTOR)); - } else { - setActionError(i18n._(ESCAPE_FAILED_NOTHING_CHANGED_DESCRIPTOR)); - } - void UserCommands.getPhoneGateEscapePreview() - .then(setEscapePreview) - .catch(() => undefined); - } finally { - setEscapeSubmitting(false); - } - }, [escapePreview, i18n]); - const handleEscapePress = useCallback(() => { - if (!escapePreview?.available) return; - const copy = buildPhoneGateEscapeConfirmCopy(i18n, { - guildNames: escapePreview.guilds.map((guild) => guild.name), - ownedGuildNames: escapePreview.owned_guilds.map((guild) => guild.name), - emailStepRemains: hasEmailVerification, - }); - ModalCommands.push( - ModalCommands.modal(() => ( - - {copy.bodyLines.map((line) => ( -

- {line} -

- ))} -
- } - primaryText={copy.primaryText} - primaryVariant={copy.primaryVariant} - secondaryText={i18n._(CANCEL_DESCRIPTOR)} - onPrimary={handleEscape} - data-flx="auth.required-action-modal.escape-confirm.confirm-modal" - /> - )), - ); - }, [escapePreview, hasEmailVerification, handleEscape, i18n]); - const escapeAction = escapePreview?.available - ? {guildCount: escapePreview.guilds.length, submitting: escapeSubmitting, onPress: handleEscapePress} - : null; - const activeInboundChallenge: ActiveInboundChallenge | null = - phoneVerification.screen.kind === 'phone-inbound-challenge' - ? { - code: phoneVerification.screen.code, - ourNumber: phoneVerification.screen.ourNumber, - } - : null; - const renderView = (): React.ReactNode => { - switch (view.kind) { - case 'intro': { - const descriptionDescriptor = getIntroDescription(effectiveFlow, isEmailBounced); - const description = - descriptionDescriptor === STEP_INTRO_GENERIC_DESCRIPTION_DESCRIPTOR - ? i18n._(descriptionDescriptor, {productName: PRODUCT_NAME}) - : i18n._(descriptionDescriptor); - return ( - - ) : undefined - } - data-flx="auth.required-action-modal.render-view.step-shell" - /> - ); - } - case 'choose-method': - return ( - -
- - -
-
- ); - case 'email-check': - return ( - goTo({kind: 'email-help'})} - data-flx="auth.required-action-modal.render-view.email-check-step" - /> - ); - case 'email-help': - return ( - { - emailVerification.onStartEmailRecovery(); - goTo({kind: 'email-recovery-new'}); - }} - onUsePhone={() => startPath('phone')} - data-flx="auth.required-action-modal.render-view.email-help-step" - /> - ); - case 'email-recovery-new': - return ( - - ); - case 'email-recovery-code': - return ( - - ); - case 'bounced-email-new': - return ( - - ); - case 'bounced-email-code': - return ( - - ); - case 'phone-inbound-start': - return ( - - ); - case 'phone-inbound-prepare': - return activeInboundChallenge ? ( - - ) : ( - - ); - case 'phone-inbound-send': - return activeInboundChallenge ? ( - - ) : ( - - ); - case 'phone-inbound-wait': - return activeInboundChallenge ? ( - - ) : ( - - ); - case 'phone-number': - return ( - - ); - case 'phone-code': - return ( - - ); - } - }; - const renderFooterActions = (): React.ReactNode => { - const canGoBack = history.length > 0; - switch (view.kind) { - case 'intro': - return effectiveFlow ? ( - - ) : null; - case 'choose-method': - return canGoBack ? ( - - ) : null; - case 'email-check': - return ( - <> - {canGoBack ? ( - - ) : null} - - - ); - case 'email-help': - return canGoBack ? ( - - ) : null; - case 'email-recovery-new': - return ( - <> - {canGoBack ? ( - - ) : null} - - - ); - case 'email-recovery-code': - return ( - <> - { - emailVerification.onUseDifferentRecoveryEmail(); - goBackToFallback({kind: 'email-recovery-new'}); - }} - disabled={emailVerification.isEmailRecoveryCodeSubmitting} - data-flx="auth.required-action-modal.render-footer-actions.back-button.use-different-recovery-email" - /> - - - ); - case 'bounced-email-new': - return ( - <> - {canGoBack ? ( - - ) : null} - - - ); - case 'bounced-email-code': - return ( - <> - { - emailVerification.onUseDifferentBouncedEmail(); - goBackToFallback({kind: 'bounced-email-new'}); - }} - disabled={emailVerification.isBouncedEmailCodeSubmitting} - data-flx="auth.required-action-modal.render-footer-actions.back-button.use-different-bounced-email" - /> - - - ); - case 'phone-inbound-start': - return ( - <> - {canGoBack ? ( - - ) : null} - - - ); - case 'phone-inbound-prepare': - return ( - <> - {canGoBack ? ( - - ) : null} - - - ); - case 'phone-inbound-send': - return ( - <> - - - - ); - case 'phone-inbound-wait': - return ( - <> - - - - ); - case 'phone-number': - return ( - <> - {canGoBack ? ( - - ) : null} - - - ); - case 'phone-code': - return ( - <> - { - phoneVerification.onBackToPhone(); - goBackToFallback({kind: 'phone-number'}); - }} - disabled={phoneVerification.isCodeSubmitting} - data-flx="auth.required-action-modal.render-footer-actions.back-button.back-to-phone" - /> - - - ); - } - }; - const footerActions = renderFooterActions(); - return ( - - } - data-flx="auth.required-action-modal.modal-root" - > - - - - - {renderView()} - - {actionError ? ( -
- {actionError} -
- ) : null} - {hasPhoneVerification && view.kind !== 'intro' ? ( -
- -
- ) : null} - -
-
- {footerActions ? ( - {footerActions} - ) : null} -
- ); -}); - -function buildMockRequiredActionFlow(): RequiredActionFlow { - const mode = DeveloperOptions.mockRequiredActionsMode; - const reverify = DeveloperOptions.mockRequiredActionsReverify; - const channelPlan = { - actions: [], - reverify, - clearsAll: true, - remainingActionsAfterCompletion: [], - requiresInboundPhone: false, - } as const; - return { - actions: [], - key: `mock:${mode}:${reverify}`, - mode, - defaultTab: mode === 'phone' ? 'phone' : 'email', - email: mode === 'phone' ? null : {channel: 'email', ...channelPlan}, - phone: mode === 'email' ? null : {channel: 'phone', ...channelPlan}, - reverify, - requiresInboundPhone: false, - }; -} - -export default RequiredActionModal; diff --git a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts b/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts deleted file mode 100644 index 503928bee..000000000 --- a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts +++ /dev/null @@ -1,638 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {PRODUCT_NAME} from '@app/features/app/config/I18nDisplayConstants'; -import type {RequiredActionFlow} from '@app/features/auth/components/modals/RequiredActionFlow'; -import type {MessageDescriptor} from '@lingui/core'; -import {msg} from '@lingui/core/macro'; - -export const ACCOUNT_VERIFICATION_REQUIRED_DESCRIPTOR = msg({ - message: 'Account verification required', - comment: 'Required-action modal title shown when an account-level verification step is required to proceed.', -}); -export const EMAIL_UPDATE_REQUIRED_DESCRIPTOR = msg({ - message: 'Email update required', - comment: 'Required-action modal title shown when the user must update their email address to continue.', -}); -export const EMAIL_RE_VERIFICATION_REQUIRED_DESCRIPTOR = msg({ - message: 'Email re-verification required', - comment: 'Required-action modal title shown when the email address must be reverified.', -}); -export const EMAIL_VERIFICATION_REQUIRED_DESCRIPTOR = msg({ - message: 'Email verification required', - comment: 'Required-action modal title shown when the email address must be verified for the first time.', -}); -export const PHONE_RE_VERIFICATION_REQUIRED_DESCRIPTOR = msg({ - message: 'Phone re-verification required', - comment: 'Required-action modal title shown when the phone number must be reverified.', -}); -export const PHONE_VERIFICATION_REQUIRED_DESCRIPTOR = msg({ - message: 'Phone verification required', - comment: 'Required-action modal title shown when the phone number must be verified for the first time.', -}); -export const EMAIL_OR_PHONE_RE_VERIFICATION_REQUIRED_DESCRIPTOR = msg({ - message: 'Email or phone re-verification required', - comment: 'Required-action modal title shown when either email or phone needs reverification (user chooses).', -}); -export const ADDITIONAL_VERIFICATION_REQUIRED_DESCRIPTOR = msg({ - message: 'Additional verification required', - comment: 'Required-action modal title for a generic additional verification step (e.g. anti-spam).', -}); -export const PLEASE_COMPLETE_THE_REQUIRED_VERIFICATION_STEPS_TO_CONTINUE_DESCRIPTOR = msg({ - message: 'Complete the required verification to continue using {productName}.', - comment: 'Required-action modal body. Generic instructions to complete verification. Product name is interpolated.', -}); -export const YOUR_CURRENT_EMAIL_ADDRESS_COULDN_T_RECEIVE_MESSAGES_DESCRIPTOR = msg({ - message: "Your email couldn't receive messages. Update it to continue using {productName}.", - comment: - 'Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated.', -}); -export const PLEASE_REVERIFY_YOUR_EMAIL_ADDRESS_TO_CONTINUE_USING_DESCRIPTOR = msg({ - message: 'Reverify your email to continue using {productName}.', - comment: 'Required-action modal body for email re-verification. Product name is interpolated.', -}); -export const PLEASE_VERIFY_YOUR_EMAIL_ADDRESS_TO_CONTINUE_USING_DESCRIPTOR = msg({ - message: 'Verify your email to continue using {productName}.', - comment: 'Required-action modal body for first-time email verification. Product name is interpolated.', -}); -export const PLEASE_VERIFY_YOUR_PHONE_NUMBER_AGAIN_TO_CONTINUE_DESCRIPTOR = msg({ - message: 'Reverify your phone number to continue using {productName}.', - comment: 'Required-action modal body for phone re-verification. Product name is interpolated.', -}); -export const YOUR_REGISTRATION_NEEDS_AN_EXTRA_ANTI_SPAM_CHECK_DESCRIPTOR = msg({ - message: 'Your registration needs an extra anti-spam check before you can continue.', - comment: 'Required-action modal body for an extra anti-spam verification during registration.', -}); -export const PLEASE_REVERIFY_YOUR_EMAIL_ADDRESS_OR_VERIFY_YOUR_DESCRIPTOR = msg({ - message: 'Reverify your email or verify your phone to continue using {productName}.', - comment: 'Required-action modal body when user must reverify email or verify phone. Product name is interpolated.', -}); -export const PLEASE_VERIFY_YOUR_EMAIL_ADDRESS_OR_PHONE_NUMBER_DESCRIPTOR = msg({ - message: 'Verify your email or phone to continue using {productName}.', - comment: - 'Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation.', -}); -export const COMPLETE_ONE_OF_THE_VERIFICATION_PATHS_BELOW_TO_DESCRIPTOR = msg({ - message: 'Complete one of the verification paths below to continue using {productName}.', - comment: - 'Required-action modal body when either of two verification paths is acceptable. Product name is interpolated.', -}); -export const COMPLETE_THE_REQUIRED_EMAIL_AND_PHONE_VERIFICATION_STEPS_DESCRIPTOR = msg({ - message: 'Complete the required email and phone verification steps below to continue using {productName}.', - comment: - 'Required-action modal body when both email and phone verification are required. Product name is interpolated.', -}); -export const NEW_EMAIL_DESCRIPTOR = msg({ - message: 'New email', - comment: 'Form field label for the new email address input in the email update flow.', -}); -export const YOUR_NEW_EMAIL_DESCRIPTOR = msg({ - message: 'your new email', - comment: 'Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase.', -}); -export const COUNTRY_DESCRIPTOR = msg({ - message: 'Country', - comment: 'Form field label for the country selector in the phone verification step.', -}); -export const SEARCH_COUNTRIES_DESCRIPTOR = msg({ - message: 'Search countries…', - comment: 'Placeholder text inside the country search input.', -}); -export const PHONE_NUMBER_DESCRIPTOR = msg({ - message: 'Phone number', - comment: 'Form field label for the phone number input.', -}); -export const PHONE_DESCRIPTOR = msg({ - message: 'Phone', - comment: 'Tab label for the phone verification path in the required-action modal.', -}); -export const PLEASE_ENTER_A_VALID_PHONE_NUMBER_DESCRIPTOR = msg({ - message: 'Enter a valid phone number', - comment: 'Form validation error shown when the entered phone number cannot be parsed.', -}); -export const PLEASE_REQUEST_A_VERIFICATION_CODE_FIRST_DESCRIPTOR = msg({ - message: 'Request a verification code first.', - comment: 'Form validation error shown when the user tries to submit a code before requesting one.', -}); -export const PHONE_NUMBER_IS_REQUIRED_DESCRIPTOR = msg({ - message: 'Phone number is required', - comment: 'Form validation error shown when the phone number field is empty.', -}); -export const VERIFICATION_CODE_SENT_CHECK_YOUR_NEW_EMAIL_INBOX_DESCRIPTOR = msg({ - message: 'Verification code sent. Check your new email inbox.', - comment: 'Toast confirmation after sending a verification code to the new email address during email update.', -}); -export const YOUR_EMAIL_ADDRESS_HAS_BEEN_UPDATED_DESCRIPTOR = msg({ - message: 'Your email address has been updated.', - comment: 'Toast confirmation after the email address has been successfully updated.', -}); -export const YOU_NEED_ACCESS_TO_YOUR_CURRENT_EMAIL_TO_DESCRIPTOR = msg({ - message: - 'You need access to your current email to change it from here. Use phone verification if available or contact support.', - comment: - 'Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm.', -}); -export const VERIFICATION_EMAIL_SENT_PLEASE_CHECK_YOUR_INBOX_DESCRIPTOR = msg({ - message: 'Verification email sent. Check your inbox.', - comment: 'Toast confirmation after a verification email has been sent to the existing email address.', -}); -export const TOO_MANY_REQUESTS_PLEASE_TRY_AGAIN_LATER_DESCRIPTOR = msg({ - message: 'Too many requests. Try again later.', - comment: 'Toast error shown when the verification request is rate-limited.', -}); -export const FAILED_TO_SEND_VERIFICATION_EMAIL_PLEASE_TRY_AGAIN_DESCRIPTOR = msg({ - message: 'Failed to send verification email. Try again later.', - comment: 'Toast error shown when sending the verification email fails.', -}); -export const A_NEW_VERIFICATION_CODE_HAS_BEEN_SENT_DESCRIPTOR = msg({ - message: 'A new verification code has been sent.', - comment: 'Toast confirmation shown after resending a verification code.', -}); -export const FAILED_TO_RESEND_VERIFICATION_CODE_PLEASE_TRY_AGAIN_DESCRIPTOR = msg({ - message: 'Failed to resend verification code. Try again later.', - comment: 'Toast error shown when resending the verification code fails.', -}); -export const NEXT_DESCRIPTOR = msg({ - message: 'Next', - comment: 'Primary button in the required-action modal. Moves to the next carousel step.', -}); -export const START_DESCRIPTOR = msg({ - message: 'Start', - comment: 'Primary button in the required-action modal. Starts the selected verification path.', -}); -export const CONTINUE_DESCRIPTOR = msg({ - message: 'Continue', - comment: 'Primary button in the required-action modal. Continues the current verification path.', -}); -export const I_NEED_ANOTHER_WAY_DESCRIPTOR = msg({ - message: 'I need another way', - comment: 'Secondary button in the required-action modal. Opens recovery options for the current verification step.', -}); -export const USE_EMAIL_DESCRIPTOR = msg({ - message: 'Use email', - comment: 'Button in the required-action modal. Selects the email verification path.', -}); -export const USE_PHONE_DESCRIPTOR = msg({ - message: 'Use phone', - comment: 'Button in the required-action modal. Selects the phone verification path.', -}); -export const VERIFY_PHONE_DESCRIPTOR = msg({ - message: 'Verify phone', - comment: 'Primary button in the required-action modal. Sends or submits phone verification.', -}); -export const USE_DIFFERENT_EMAIL_DESCRIPTOR = msg({ - message: 'Use different email', - comment: 'Button in the required-action modal. Starts the flow for changing to another email address.', -}); -export const UPDATE_EMAIL_DESCRIPTOR = msg({ - message: 'Update email', - comment: 'Primary button in the required-action modal. Submits a code to update the account email.', -}); -export const SEND_CODE_DESCRIPTOR = msg({ - message: 'Send code', - comment: 'Primary button in the required-action modal. Requests a verification code.', -}); -export const RESEND_CODE_DESCRIPTOR = msg({ - message: 'Resend code', - comment: 'Button in the required-action modal. Requests another verification code.', -}); -export const RESEND_EMAIL_DESCRIPTOR = msg({ - message: 'Resend email', - comment: 'Button in the required-action modal. Sends another verification email.', -}); -export const GET_NEW_CODE_DESCRIPTOR = msg({ - message: 'Get new code', - comment: 'Button in the required-action modal. Requests a new inbound SMS challenge code.', -}); -export const STEP_INTRO_TITLE_DESCRIPTOR = msg({ - message: 'One quick check', - comment: 'Required-action modal carousel step title. Introduces why account verification is required.', -}); -export const STEP_INTRO_GENERIC_DESCRIPTION_DESCRIPTOR = msg({ - message: - 'We need one verification step before you continue. This helps protect accounts and keep spam off {productName}.', - comment: - 'Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise.', -}); -export const STEP_INTRO_EMAIL_AND_PHONE_DESCRIPTION_DESCRIPTOR = msg({ - message: 'We need two verification steps before you continue. We will show one step at a time.', - comment: 'Required-action modal intro text when both email and phone verification are required.', -}); -export const STEP_INTRO_EMAIL_OR_PHONE_DESCRIPTION_DESCRIPTOR = msg({ - message: 'Choose one verification method. Either method can clear this check.', - comment: 'Required-action modal intro text when email or phone verification can satisfy the requirement.', -}); -export const STEP_INTRO_BOUNCED_EMAIL_DESCRIPTION_DESCRIPTOR = msg({ - message: 'Your email could not receive messages. Add a working email so we can keep your account reachable.', - comment: 'Required-action modal intro text when the current account email bounced and must be replaced.', -}); -export const STEP_INTRO_PHONE_DESCRIPTION_DESCRIPTOR = msg({ - message: 'This is an anti-spam check. Your phone number is not linked to your account.', - comment: 'Required-action modal intro text when phone verification is required.', -}); -export const CHOOSE_METHOD_TITLE_DESCRIPTOR = msg({ - message: 'Choose a method', - comment: 'Required-action modal carousel step title for choosing email or phone verification.', -}); -export const CHOOSE_METHOD_DESCRIPTION_DESCRIPTOR = msg({ - message: 'Pick the method you can complete now.', - comment: 'Required-action modal body for choosing a verification method.', -}); -export const CHECK_YOUR_EMAIL_TITLE_DESCRIPTOR = msg({ - message: 'Check your email', - comment: 'Required-action modal carousel step title for existing-email verification.', -}); -export const CHECK_YOUR_EMAIL_DESCRIPTION_DESCRIPTOR = msg({ - message: 'Open the verification email and use the link inside. This window updates after the link opens.', - comment: 'Required-action modal body explaining how to finish email verification.', -}); -export const EMAIL_ADDRESS_LABEL_DESCRIPTOR = msg({ - message: 'Email address', - comment: 'Label for the current account email shown in the required-action modal.', -}); -export const EMAIL_HELP_TITLE_DESCRIPTOR = msg({ - message: "Can't access that email?", - comment: 'Required-action modal carousel step title for email recovery options.', -}); -export const EMAIL_HELP_SELF_SERVE_DESCRIPTION_DESCRIPTOR = msg({ - message: 'Use a different email address and verify it with a code.', - comment: 'Required-action modal body for self-serve email recovery.', -}); -export const EMAIL_HELP_SUPPORT_DESCRIPTION_DESCRIPTOR = msg({ - message: 'If you cannot use any verification method, contact support for help.', - comment: 'Required-action modal body when the user must contact support for account recovery.', -}); -export const SUPPORT_LINK_LABEL_DESCRIPTOR = msg({ - message: 'Contact support', - comment: 'Link label in the required-action modal. Opens an email to Fluxer support.', -}); -export const INSTANCE_ADMIN_CONTACT_DESCRIPTOR = msg({ - message: 'Contact the administrators of this instance for help.', - comment: - 'Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker.', -}); -export const ALT_ROUTES_TITLE_DESCRIPTOR = msg({ - message: "If you can't verify by SMS", - comment: - 'Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print.', -}); -export const ALT_ROUTES_HUMAN_REVIEW_DESCRIPTOR = msg({ - message: - 'Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant.', - comment: - 'Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time.', -}); -export const ALT_ROUTES_HUMAN_REVIEW_SELF_HOSTED_DESCRIPTOR = msg({ - message: - 'Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account.', - comment: - 'Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker.', -}); -export const ESCAPE_BUTTON_DESCRIPTOR = msg({ - message: 'Set this check aside', - comment: - 'Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button.', -}); -export const ESCAPE_HINT_NO_GUILDS_DESCRIPTOR = msg({ - message: - 'Your account works normally again straight away and nothing is removed. We can ask for this check again later.', - comment: - 'Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join.', -}); -export const ESCAPE_HINT_WITH_GUILDS_DESCRIPTOR = msg({ - message: - 'You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again.', - comment: - 'Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code.', -}); -export const ESCAPE_CONFIRM_TITLE_NO_GUILDS_DESCRIPTOR = msg({ - message: 'Set this check aside?', - comment: 'Confirmation dialog title in the required-action modal when nothing will be left.', -}); -export const ESCAPE_CONFIRM_TITLE_WITH_GUILDS_DESCRIPTOR = msg({ - message: 'Leave {count, plural, one {# community} other {# communities}} and set this check aside?', - comment: - 'Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code.', -}); -export const ESCAPE_CONFIRM_OUTCOME_DESCRIPTOR = msg({ - message: - 'Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later.', - comment: - 'First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back.', -}); -export const ESCAPE_CONFIRM_LEAVE_DESCRIPTOR = msg({ - message: 'You will leave {guildNames}. Nothing you posted is deleted, and you can join again later.', - comment: - 'Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have.', -}); -export const ESCAPE_CONFIRM_OWNED_DESCRIPTOR = msg({ - message: 'You stay in {ownedNames}. Owners cannot leave their own community.', - comment: - 'Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code.', -}); -export const ESCAPE_CONFIRM_EMAIL_REMAINS_DESCRIPTOR = msg({ - message: 'You will still need to finish the email step.', - comment: - 'Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards.', -}); -export const ESCAPE_CONFIRM_SUPPORT_DESCRIPTOR = msg({ - message: 'You can still email {supportEmail} for a human review at any time.', - comment: - 'Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route.', -}); -export const ESCAPE_CONFIRM_SUPPORT_SELF_HOSTED_DESCRIPTOR = msg({ - message: 'You can still ask the administrators of this instance for a human review at any time.', - comment: - 'Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker.', -}); -export const ESCAPE_CONFIRM_PRIMARY_NO_GUILDS_DESCRIPTOR = msg({ - message: 'Set this check aside', - comment: - 'Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one.', -}); -export const ESCAPE_CONFIRM_PRIMARY_WITH_GUILDS_DESCRIPTOR = msg({ - message: 'Leave and set aside', - comment: - 'Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style.', -}); -export const ESCAPE_SUCCESS_TOAST_DESCRIPTOR = msg({ - message: 'Your account is back to normal.', - comment: - 'Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar.', -}); -export const ESCAPE_SUCCESS_EMAIL_REMAINS_TOAST_DESCRIPTOR = msg({ - message: 'The phone check is set aside. One email step is left.', - comment: - 'Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them.', -}); -export const ESCAPE_UNAVAILABLE_DESCRIPTOR = msg({ - message: 'This is not available on your account right now. Email {supportEmail} and a person will review it.', - comment: - 'Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view.', -}); -export const ESCAPE_UNAVAILABLE_SELF_HOSTED_DESCRIPTOR = msg({ - message: 'This is not available on your account right now. Ask the administrators of this instance to review it.', - comment: - 'Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force.', -}); -export const ESCAPE_FAILED_NOTHING_CHANGED_DESCRIPTOR = msg({ - message: 'That did not go through. Nothing changed. Try again.', - comment: - 'Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost.', -}); -export const ESCAPE_FAILED_PARTIAL_DESCRIPTOR = msg({ - message: - 'That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish.', - comment: - 'Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press.', -}); -export const ADD_WORKING_EMAIL_TITLE_DESCRIPTOR = msg({ - message: 'Add a working email', - comment: 'Required-action modal carousel step title for replacing a bounced email address.', -}); -export const ADD_WORKING_EMAIL_DESCRIPTION_DESCRIPTOR = msg({ - message: 'Enter an email address you can access. We will send a code there.', - comment: 'Required-action modal body for entering a replacement email address.', -}); -export const ENTER_NEW_EMAIL_TITLE_DESCRIPTOR = msg({ - message: 'Enter new email', - comment: 'Required-action modal carousel step title for changing to a new email address.', -}); -export const ENTER_NEW_EMAIL_DESCRIPTION_DESCRIPTOR = msg({ - message: 'Use an email address you can access. We will send a code there.', - comment: 'Required-action modal body for entering a new email address.', -}); -export const ENTER_EMAIL_CODE_TITLE_DESCRIPTOR = msg({ - message: 'Enter the email code', - comment: 'Required-action modal carousel step title for entering an email verification code.', -}); -export const ENTER_EMAIL_CODE_DESCRIPTION_DESCRIPTOR = msg({ - message: 'Enter the code sent to {emailAddress}.', - comment: - 'Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code.', -}); -export const PHONE_NUMBER_TITLE_DESCRIPTOR = msg({ - message: 'Enter your phone number', - comment: 'Required-action modal carousel step title for entering a phone number.', -}); -export const PHONE_NUMBER_DESCRIPTION_DESCRIPTOR = msg({ - message: 'We will send an SMS code when available.', - comment: 'Required-action modal body for entering a phone number.', -}); -export const PHONE_PRIVACY_DESCRIPTOR = msg({ - message: - 'Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time.', - comment: 'Required-action modal privacy note for phone verification.', -}); -export const ENTER_PHONE_CODE_TITLE_DESCRIPTOR = msg({ - message: 'Enter the SMS code', - comment: 'Required-action modal carousel step title for entering a phone SMS verification code.', -}); -export const ENTER_PHONE_CODE_DESCRIPTION_DESCRIPTOR = msg({ - message: 'Enter the {digitCount}-digit code sent to {phoneNumber}.', - comment: 'Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code.', -}); -export const INBOUND_PHONE_START_TITLE_DESCRIPTOR = msg({ - message: 'Text us from your phone', - comment: 'Required-action modal carousel step title for starting inbound phone verification.', -}); -export const INBOUND_PHONE_START_DESCRIPTION_DESCRIPTOR = msg({ - message: 'For this check, you send us a text message instead of receiving one from us.', - comment: 'Required-action modal body for starting an inbound phone verification challenge.', -}); -export const INBOUND_PHONE_DEFAULT_REASON_DESCRIPTOR = msg({ - message: 'This number needs text-in verification instead of an SMS from us.', - comment: 'Required-action modal explanation for an inbound phone verification challenge.', -}); -export const INBOUND_PHONE_PREPARE_TITLE_DESCRIPTOR = msg({ - message: 'Open your messages', - comment: 'Required-action modal carousel step title for the first inbound phone verification instruction.', -}); -export const INBOUND_PHONE_PREPARE_DESCRIPTION_DESCRIPTOR = msg({ - message: "Open your phone's messaging app and start a new text message.", - comment: 'Required-action modal body for the first inbound phone verification instruction.', -}); -export const INBOUND_PHONE_SEND_TITLE_DESCRIPTOR = msg({ - message: 'Send this code', - comment: 'Required-action modal carousel step title for the second inbound phone verification instruction.', -}); -export const INBOUND_PHONE_SEND_DESCRIPTION_DESCRIPTOR = msg({ - message: 'Send the code to the phone number below.', - comment: 'Required-action modal body for the second inbound phone verification instruction.', -}); -export const INBOUND_PHONE_CODE_LABEL_DESCRIPTOR = msg({ - message: 'Code', - comment: 'Label for an inbound phone verification code shown in the required-action modal.', -}); -export const INBOUND_PHONE_DESTINATION_LABEL_DESCRIPTOR = msg({ - message: 'Send to', - comment: 'Label for the destination phone number in an inbound phone verification challenge.', -}); -export const INBOUND_PHONE_WAIT_TITLE_DESCRIPTOR = msg({ - message: 'Wait here', - comment: 'Required-action modal carousel step title after the user sends an inbound phone verification text.', -}); -export const INBOUND_PHONE_WAIT_DESCRIPTION_DESCRIPTOR = msg({ - message: 'This window updates automatically after we receive your message.', - comment: 'Required-action modal body after the user sends an inbound phone verification text.', -}); -export const MESSAGE_RATES_NOTICE_DESCRIPTOR = msg({ - message: 'Standard messaging rates from your carrier may apply.', - comment: 'Required-action modal notice for inbound phone verification.', -}); -export const PHONE_VERIFIED_DESCRIPTOR = msg({ - message: 'Phone number verified', - comment: 'Toast shown after phone verification succeeds.', -}); -export const CODE_DID_NOT_WORK_DESCRIPTOR = msg({ - message: "That code didn't work. Check it and try again.", - comment: 'Required-action form error for an invalid verification code.', -}); -export const CODE_EXPIRED_DESCRIPTOR = msg({ - message: 'That code expired. Request a new code.', - comment: 'Required-action form error for an expired verification code.', -}); -export const CODE_NOT_REQUESTED_DESCRIPTOR = msg({ - message: 'Request a new code first.', - comment: 'Required-action form error when the user submits before a code exists.', -}); -export const VERIFICATION_SESSION_EXPIRED_DESCRIPTOR = msg({ - message: 'This verification session expired. Start again.', - comment: 'Required-action form error when an email-change ticket or proof is invalid or expired.', -}); -export const TOO_MANY_ATTEMPTS_DESCRIPTOR = msg({ - message: 'Too many attempts. Wait a bit, then try again.', - comment: 'Required-action error shown for rate limits.', -}); -export const ENTER_VALID_EMAIL_DESCRIPTOR = msg({ - message: 'Enter a valid email address.', - comment: 'Required-action form error for an invalid email address.', -}); -export const EMAIL_ALREADY_IN_USE_DESCRIPTOR = msg({ - message: 'That email is already in use.', - comment: 'Required-action form error when a new email is already used by another account.', -}); -export const EMAIL_MUST_BE_DIFFERENT_DESCRIPTOR = msg({ - message: 'Use an email that is different from your current one.', - comment: 'Required-action form error when the new email matches the current account email.', -}); -export const EMAIL_CHANGE_UNAVAILABLE_DESCRIPTOR = msg({ - message: 'Email update is unavailable right now. Try again later or contact support.', - comment: 'Required-action error shown when email update cannot continue.', -}); -export const ENTER_VALID_PHONE_DESCRIPTOR = msg({ - message: 'Enter a valid mobile phone number.', - comment: 'Required-action form error for an invalid phone number.', -}); -export const PHONE_CANNOT_BE_USED_DESCRIPTOR = msg({ - message: 'This phone number cannot be used. Try another mobile number or contact support.', - comment: 'Required-action form error when the backend rejects a phone number.', -}); -export const PHONE_ALREADY_USED_DESCRIPTOR = msg({ - message: 'This phone number has already been used. Try another number or contact support.', - comment: 'Required-action form error when the backend rejects a reused phone number.', -}); -export const SMS_UNAVAILABLE_DESCRIPTOR = msg({ - message: 'SMS verification is unavailable right now. Try again later or contact support.', - comment: 'Required-action error when the SMS provider cannot send or verify a code.', -}); -export const PHONE_NOT_ELIGIBLE_DESCRIPTOR = msg({ - message: 'Phone verification is not available for this account. Use another method or contact support.', - comment: 'Required-action error when the account is not eligible to add phone verification.', -}); -export const PHONE_COUNTRY_NOT_SUPPORTED_DESCRIPTOR = msg({ - message: - "We don't send verification texts to this country. Try a mobile number from another country, or contact support.", - comment: - "Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid.", -}); -export const PHONE_INBOUND_REQUIRED_DESCRIPTOR = msg({ - message: - 'This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text.', - comment: - 'Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there.', -}); -export const PHONE_LOOKUP_UNAVAILABLE_DESCRIPTOR = msg({ - message: - 'Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again.', - comment: - 'Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number.', -}); -export const PHONE_NOT_IN_SERVICE_DESCRIPTOR = msg({ - message: - "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct.", - comment: - 'Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong.', -}); -export const PHONE_NOT_MOBILE_DESCRIPTOR = msg({ - message: - "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong.", - comment: 'Required-action form error when the number is not a mobile line. Do not name the line type.', -}); -export const PHONE_NEEDS_REVIEW_DESCRIPTOR = msg({ - message: "We couldn't verify this number automatically. Contact support and a person will review your account.", - comment: - 'Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific.', -}); -export const SOMETHING_WENT_WRONG_TRY_AGAIN_DESCRIPTOR = msg({ - message: 'Something went wrong. Try again.', - comment: 'Generic required-action error fallback.', -}); -export const getTitleDescriptor = (flow: RequiredActionFlow | null, emailBounced = false): MessageDescriptor => { - if (!flow) { - return ACCOUNT_VERIFICATION_REQUIRED_DESCRIPTOR; - } - switch (flow.mode) { - case 'email': - if (emailBounced) { - return EMAIL_UPDATE_REQUIRED_DESCRIPTOR; - } - return flow.email?.reverify ? EMAIL_RE_VERIFICATION_REQUIRED_DESCRIPTOR : EMAIL_VERIFICATION_REQUIRED_DESCRIPTOR; - case 'phone': - return flow.phone?.reverify ? PHONE_RE_VERIFICATION_REQUIRED_DESCRIPTOR : PHONE_VERIFICATION_REQUIRED_DESCRIPTOR; - case 'email_or_phone': - if (flow.email?.reverify === flow.phone?.reverify) { - return flow.reverify - ? EMAIL_OR_PHONE_RE_VERIFICATION_REQUIRED_DESCRIPTOR - : ACCOUNT_VERIFICATION_REQUIRED_DESCRIPTOR; - } - return ADDITIONAL_VERIFICATION_REQUIRED_DESCRIPTOR; - case 'email_and_phone': - return ADDITIONAL_VERIFICATION_REQUIRED_DESCRIPTOR; - } -}; -export const getDescriptionDescriptor = (flow: RequiredActionFlow | null, emailBounced = false): MessageDescriptor => { - if (!flow) { - return { - ...PLEASE_COMPLETE_THE_REQUIRED_VERIFICATION_STEPS_TO_CONTINUE_DESCRIPTOR, - values: {productName: PRODUCT_NAME}, - }; - } - switch (flow.mode) { - case 'email': - if (emailBounced) { - return { - ...YOUR_CURRENT_EMAIL_ADDRESS_COULDN_T_RECEIVE_MESSAGES_DESCRIPTOR, - values: {productName: PRODUCT_NAME}, - }; - } - return flow.email?.reverify - ? {...PLEASE_REVERIFY_YOUR_EMAIL_ADDRESS_TO_CONTINUE_USING_DESCRIPTOR, values: {productName: PRODUCT_NAME}} - : {...PLEASE_VERIFY_YOUR_EMAIL_ADDRESS_TO_CONTINUE_USING_DESCRIPTOR, values: {productName: PRODUCT_NAME}}; - case 'phone': - return flow.phone?.reverify - ? {...PLEASE_VERIFY_YOUR_PHONE_NUMBER_AGAIN_TO_CONTINUE_DESCRIPTOR, values: {productName: PRODUCT_NAME}} - : YOUR_REGISTRATION_NEEDS_AN_EXTRA_ANTI_SPAM_CHECK_DESCRIPTOR; - case 'email_or_phone': - if (flow.email?.reverify === flow.phone?.reverify) { - return flow.reverify - ? {...PLEASE_REVERIFY_YOUR_EMAIL_ADDRESS_OR_VERIFY_YOUR_DESCRIPTOR, values: {productName: PRODUCT_NAME}} - : {...PLEASE_VERIFY_YOUR_EMAIL_ADDRESS_OR_PHONE_NUMBER_DESCRIPTOR, values: {productName: PRODUCT_NAME}}; - } - return {...COMPLETE_ONE_OF_THE_VERIFICATION_PATHS_BELOW_TO_DESCRIPTOR, values: {productName: PRODUCT_NAME}}; - case 'email_and_phone': - return { - ...COMPLETE_THE_REQUIRED_EMAIL_AND_PHONE_VERIFICATION_STEPS_DESCRIPTOR, - values: {productName: PRODUCT_NAME}, - }; - } -}; diff --git a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionEmail.tsx b/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionEmail.tsx deleted file mode 100644 index 97726a004..000000000 --- a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionEmail.tsx +++ /dev/null @@ -1,463 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {showGenericErrorModal} from '@app/features/app/components/alerts/GenericErrorModalCommands'; -import * as AuthenticationCommands from '@app/features/auth/commands/AuthenticationCommands'; -import {VerificationResult} from '@app/features/auth/commands/AuthenticationCommands'; -import styles from '@app/features/auth/components/modals/RequiredActionModal.module.css'; -import { - ADD_WORKING_EMAIL_DESCRIPTION_DESCRIPTOR, - ADD_WORKING_EMAIL_TITLE_DESCRIPTOR, - CHECK_YOUR_EMAIL_DESCRIPTION_DESCRIPTOR, - CHECK_YOUR_EMAIL_TITLE_DESCRIPTOR, - CODE_NOT_REQUESTED_DESCRIPTOR, - EMAIL_ADDRESS_LABEL_DESCRIPTOR, - EMAIL_HELP_SELF_SERVE_DESCRIPTION_DESCRIPTOR, - EMAIL_HELP_SUPPORT_DESCRIPTION_DESCRIPTOR, - EMAIL_HELP_TITLE_DESCRIPTOR, - ENTER_EMAIL_CODE_DESCRIPTION_DESCRIPTOR, - ENTER_EMAIL_CODE_TITLE_DESCRIPTOR, - ENTER_NEW_EMAIL_DESCRIPTION_DESCRIPTOR, - ENTER_NEW_EMAIL_TITLE_DESCRIPTOR, - FAILED_TO_SEND_VERIFICATION_EMAIL_PLEASE_TRY_AGAIN_DESCRIPTOR, - I_NEED_ANOTHER_WAY_DESCRIPTOR, - RESEND_CODE_DESCRIPTOR, - TOO_MANY_REQUESTS_PLEASE_TRY_AGAIN_LATER_DESCRIPTOR, - USE_DIFFERENT_EMAIL_DESCRIPTOR, - USE_PHONE_DESCRIPTOR, - VERIFICATION_CODE_SENT_CHECK_YOUR_NEW_EMAIL_INBOX_DESCRIPTOR, - VERIFICATION_EMAIL_SENT_PLEASE_CHECK_YOUR_INBOX_DESCRIPTOR, - YOU_NEED_ACCESS_TO_YOUR_CURRENT_EMAIL_TO_DESCRIPTOR, - YOUR_EMAIL_ADDRESS_HAS_BEEN_UPDATED_DESCRIPTOR, - YOUR_NEW_EMAIL_DESCRIPTOR, -} from '@app/features/auth/components/modals/required_action/RequiredActionDescriptors'; -import { - InlineLink, - NewEmailAddressForm, - StepShell, - SupportLinkLine, - useRequiredActionFormSubmit, - useResendEmailChangeCode, - ValueBlock, - VerificationCodeForm, -} from '@app/features/auth/components/modals/required_action/RequiredActionShared'; -import { - type CodeFormInputs, - type EmailScreen, - type NewEmailFormInputs, - normalizeVerificationCode, - type SubmitCallback, -} from '@app/features/auth/components/modals/required_action/RequiredActionTypes'; -import DeveloperOptions from '@app/features/devtools/state/DeveloperOptions'; -import {SOMETHING_WENT_WRONG_DESCRIPTOR} from '@app/features/i18n/utils/CommonMessageDescriptors'; -import {Button} from '@app/features/ui/button/Button'; -import * as ToastCommands from '@app/features/ui/commands/ToastCommands'; -import * as UserCommands from '@app/features/user/commands/UserCommands'; -import Users from '@app/features/user/state/Users'; -import type {MessageDescriptor} from '@lingui/core'; -import {useLingui} from '@lingui/react/macro'; -import type React from 'react'; -import {useCallback, useEffect, useState} from 'react'; -import {type UseFormReturn, useForm} from 'react-hook-form'; - -interface EmailCheckStepProps { - userEmail: string | null | undefined; - onNeedAnotherWay: () => void; -} - -export const EmailCheckStep: React.FC = ({userEmail, onNeedAnotherWay}) => { - const {i18n} = useLingui(); - return ( - - - {userEmail ?? i18n._(YOUR_NEW_EMAIL_DESCRIPTOR)} - - } - data-flx="auth.required-action.required-action-email.email-check-step.value-block" - /> - - {i18n._(I_NEED_ANOTHER_WAY_DESCRIPTOR)} - - - ); -}; - -interface EmailHelpStepProps { - canSelfServeEmailRecovery: boolean; - canUsePhoneRecovery: boolean; - onUseDifferentEmail: () => void; - onUsePhone: () => void; -} - -export const EmailHelpStep: React.FC = ({ - canSelfServeEmailRecovery, - canUsePhoneRecovery, - onUseDifferentEmail, - onUsePhone, -}) => { - const {i18n} = useLingui(); - return ( - - {canSelfServeEmailRecovery || canUsePhoneRecovery ? ( -
- {canSelfServeEmailRecovery ? ( - - ) : null} - {canUsePhoneRecovery ? ( - - ) : null} -
- ) : null} -
- -
-
- ); -}; - -interface NewEmailStepProps { - form: UseFormReturn; - onSubmit: SubmitCallback; - isBouncedEmail: boolean; -} - -export const NewEmailStep: React.FC = ({form, onSubmit, isBouncedEmail}) => { - const {i18n} = useLingui(); - return ( - - ); -}; - -interface EmailCodeStepProps { - form: UseFormReturn; - onSubmit: SubmitCallback; - recipient: string | null | undefined; - onResendCode: () => void; - isResendingCode: boolean; - isSubmitting: boolean; -} - -export const EmailCodeStep: React.FC = ({ - form, - onSubmit, - recipient, - onResendCode, - isResendingCode, - isSubmitting, -}) => { - const {i18n} = useLingui(); - const emailAddress = recipient || i18n._(YOUR_NEW_EMAIL_DESCRIPTOR); - return ( - - - {i18n._(RESEND_CODE_DESCRIPTOR)} - - - ); -}; - -export interface EmailVerificationController { - screen: EmailScreen; - isEmailResending: boolean; - emailRecoveryForm: UseFormReturn; - emailRecoveryCodeForm: UseFormReturn; - bouncedEmailForm: UseFormReturn; - bouncedEmailCodeForm: UseFormReturn; - isEmailRecoverySubmitting: boolean; - isEmailRecoveryCodeSubmitting: boolean; - isBouncedEmailSubmitting: boolean; - isBouncedEmailCodeSubmitting: boolean; - isResendingEmailRecoveryCode: boolean; - isResendingBouncedEmailCode: boolean; - onResendEmail: () => Promise; - onEmailRecoverySubmit: SubmitCallback; - onEmailRecoveryCodeSubmit: SubmitCallback; - onBouncedEmailSubmit: SubmitCallback; - onBouncedEmailCodeSubmit: SubmitCallback; - onStartEmailRecovery: () => void; - onUsePhoneRecovery: () => void; - onBackToRecoveryInstructions: () => void; - onUseDifferentRecoveryEmail: () => void; - onUseDifferentBouncedEmail: () => void; - onResendEmailRecoveryCode: () => void; - onResendBouncedEmailCode: () => void; -} - -interface UseEmailVerificationParams { - mock: boolean; - isEmailBounced: boolean; - resetKey: string | undefined; - onSwitchToPhoneTab: () => void; -} - -export const useEmailVerification = ({ - mock, - isEmailBounced, - resetKey, - onSwitchToPhoneTab, -}: UseEmailVerificationParams): EmailVerificationController => { - const {i18n} = useLingui(); - const [screen, setScreen] = useState({kind: 'email-instructions'}); - const [isResendingEmail, setIsResendingEmail] = useState(false); - const [isResendingEmailRecoveryCode, setIsResendingEmailRecoveryCode] = useState(false); - const [isResendingBouncedEmailCode, setIsResendingBouncedEmailCode] = useState(false); - const emailRecoveryForm = useForm(); - const emailRecoveryCodeForm = useForm(); - const bouncedEmailForm = useForm(); - const bouncedEmailCodeForm = useForm(); - const defaultScreen = useCallback( - (): EmailScreen => (isEmailBounced ? {kind: 'bounced-email-new'} : {kind: 'email-instructions'}), - [isEmailBounced], - ); - useEffect(() => { - if (mock) { - setScreen({kind: 'email-instructions'}); - } else if (resetKey) { - setScreen(defaultScreen()); - setIsResendingEmail(false); - setIsResendingEmailRecoveryCode(false); - setIsResendingBouncedEmailCode(false); - emailRecoveryForm.reset(); - emailRecoveryCodeForm.reset(); - bouncedEmailForm.reset(); - bouncedEmailCodeForm.reset(); - } - }, [mock, resetKey, defaultScreen, emailRecoveryForm, emailRecoveryCodeForm, bouncedEmailForm, bouncedEmailCodeForm]); - const setMissingVerificationCodeError = useCallback( - (form: UseFormReturn) => { - form.setError('code', {message: i18n._(CODE_NOT_REQUESTED_DESCRIPTOR)}); - }, - [i18n], - ); - const onBouncedEmailSubmit = useCallback( - async (data: NewEmailFormInputs) => { - const result = await UserCommands.requestBouncedEmailChangeNew(data.newEmail); - setScreen({kind: 'bounced-email-code', recipient: result.new_email, ticket: result.ticket}); - bouncedEmailCodeForm.reset(); - ToastCommands.success(i18n._(VERIFICATION_CODE_SENT_CHECK_YOUR_NEW_EMAIL_INBOX_DESCRIPTOR)); - }, - [bouncedEmailCodeForm, i18n], - ); - const onBouncedEmailCodeSubmit = useCallback( - async (data: CodeFormInputs) => { - if (screen.kind !== 'bounced-email-code') { - setMissingVerificationCodeError(bouncedEmailCodeForm); - return; - } - const updatedUser = await UserCommands.verifyBouncedEmailChangeNew( - screen.ticket, - normalizeVerificationCode(data.code), - ); - Users.handleUserUpdate(updatedUser, {clearMissingOptionalFields: true}); - ToastCommands.success(i18n._(YOUR_EMAIL_ADDRESS_HAS_BEEN_UPDATED_DESCRIPTOR)); - }, - [bouncedEmailCodeForm, screen, setMissingVerificationCodeError, i18n], - ); - const onEmailRecoverySubmit = useCallback( - async (data: NewEmailFormInputs) => { - let activeTicket = screen.kind === 'email-recovery-code' ? screen.ticket : null; - let activeProof = screen.kind === 'email-recovery-code' ? screen.proof : null; - if (!activeTicket || !activeProof) { - const startResult = await UserCommands.startEmailChange(); - if (startResult.require_original || !startResult.original_proof) { - emailRecoveryForm.setError('newEmail', { - type: 'server', - message: i18n._(YOU_NEED_ACCESS_TO_YOUR_CURRENT_EMAIL_TO_DESCRIPTOR), - }); - return; - } - activeTicket = startResult.ticket; - activeProof = startResult.original_proof; - } - const result = await UserCommands.requestEmailChangeNew(activeTicket, data.newEmail, activeProof); - setScreen({ - kind: 'email-recovery-code', - recipient: result.new_email, - ticket: result.ticket, - proof: activeProof, - }); - emailRecoveryCodeForm.reset(); - ToastCommands.success(i18n._(VERIFICATION_CODE_SENT_CHECK_YOUR_NEW_EMAIL_INBOX_DESCRIPTOR)); - }, - [emailRecoveryCodeForm, emailRecoveryForm, screen, i18n], - ); - const onEmailRecoveryCodeSubmit = useCallback( - async (data: CodeFormInputs) => { - if (screen.kind !== 'email-recovery-code') { - setMissingVerificationCodeError(emailRecoveryCodeForm); - return; - } - const {email_token} = await UserCommands.verifyEmailChangeNew( - screen.ticket, - normalizeVerificationCode(data.code), - screen.proof, - ); - const updatedUser = await UserCommands.applyEmailChange(email_token); - Users.handleUserUpdate(updatedUser, {clearMissingOptionalFields: true}); - ToastCommands.success(i18n._(YOUR_EMAIL_ADDRESS_HAS_BEEN_UPDATED_DESCRIPTOR)); - }, - [emailRecoveryCodeForm, screen, setMissingVerificationCodeError, i18n], - ); - const {handleSubmit: handleBouncedEmailSubmit, isSubmitting: isBouncedEmailSubmitting} = useRequiredActionFormSubmit( - bouncedEmailForm, - onBouncedEmailSubmit, - 'newEmail', - 'email-address', - ); - const {handleSubmit: handleEmailRecoverySubmit, isSubmitting: isEmailRecoverySubmitting} = - useRequiredActionFormSubmit(emailRecoveryForm, onEmailRecoverySubmit, 'newEmail', 'email-address'); - const {handleSubmit: handleEmailRecoveryCodeSubmit, isSubmitting: isEmailRecoveryCodeSubmitting} = - useRequiredActionFormSubmit(emailRecoveryCodeForm, onEmailRecoveryCodeSubmit, 'code', 'email-code'); - const {handleSubmit: handleBouncedEmailCodeSubmit, isSubmitting: isBouncedEmailCodeSubmitting} = - useRequiredActionFormSubmit(bouncedEmailCodeForm, onBouncedEmailCodeSubmit, 'code', 'email-code'); - const onResendEmail = useCallback(async () => { - const showResendErrorModal = (message: MessageDescriptor) => { - showGenericErrorModal({ - title: () => i18n._(SOMETHING_WENT_WRONG_DESCRIPTOR), - message: () => i18n._(message), - dataFlx: 'auth.required-action-email.resend-error-modal', - }); - }; - if (mock) { - const outcome = DeveloperOptions.mockRequiredActionsResendOutcome; - switch (outcome) { - case 'success': - ToastCommands.success(i18n._(VERIFICATION_EMAIL_SENT_PLEASE_CHECK_YOUR_INBOX_DESCRIPTOR)); - break; - case 'rate_limited': - showResendErrorModal(TOO_MANY_REQUESTS_PLEASE_TRY_AGAIN_LATER_DESCRIPTOR); - break; - case 'server_error': - showResendErrorModal(FAILED_TO_SEND_VERIFICATION_EMAIL_PLEASE_TRY_AGAIN_DESCRIPTOR); - break; - } - return; - } - if (isResendingEmail) return; - setIsResendingEmail(true); - try { - const result = await AuthenticationCommands.resendVerificationEmail(); - switch (result) { - case VerificationResult.SUCCESS: - ToastCommands.success(i18n._(VERIFICATION_EMAIL_SENT_PLEASE_CHECK_YOUR_INBOX_DESCRIPTOR)); - break; - case VerificationResult.RATE_LIMITED: - showResendErrorModal(TOO_MANY_REQUESTS_PLEASE_TRY_AGAIN_LATER_DESCRIPTOR); - break; - case VerificationResult.SERVER_ERROR: - case VerificationResult.EXPIRED_TOKEN: - showResendErrorModal(FAILED_TO_SEND_VERIFICATION_EMAIL_PLEASE_TRY_AGAIN_DESCRIPTOR); - break; - } - } finally { - setIsResendingEmail(false); - } - }, [i18n, isResendingEmail, mock]); - const resendEmailChangeCode = useResendEmailChangeCode(); - const onResendBouncedEmailCode = useCallback(() => { - const ticket = screen.kind === 'bounced-email-code' ? screen.ticket : null; - return resendEmailChangeCode( - ticket, - isResendingBouncedEmailCode, - setIsResendingBouncedEmailCode, - UserCommands.resendBouncedEmailChangeNew, - ); - }, [screen, isResendingBouncedEmailCode, resendEmailChangeCode]); - const onResendEmailRecoveryCode = useCallback(() => { - const ticket = screen.kind === 'email-recovery-code' ? screen.ticket : null; - return resendEmailChangeCode( - ticket, - isResendingEmailRecoveryCode, - setIsResendingEmailRecoveryCode, - UserCommands.resendEmailChangeNew, - ); - }, [screen, isResendingEmailRecoveryCode, resendEmailChangeCode]); - const onStartEmailRecovery = useCallback(() => { - setScreen({kind: 'email-recovery-new'}); - }, []); - const onBackToRecoveryInstructions = useCallback(() => { - setScreen({kind: 'email-instructions'}); - emailRecoveryForm.reset(); - }, [emailRecoveryForm]); - const onUseDifferentRecoveryEmail = useCallback(() => { - setScreen({kind: 'email-recovery-new'}); - emailRecoveryCodeForm.reset(); - }, [emailRecoveryCodeForm]); - const onUseDifferentBouncedEmail = useCallback(() => { - setScreen({kind: 'bounced-email-new'}); - bouncedEmailCodeForm.reset(); - }, [bouncedEmailCodeForm]); - const isEmailResending = mock ? DeveloperOptions.mockRequiredActionsResending : isResendingEmail; - return { - screen, - isEmailResending, - emailRecoveryForm, - emailRecoveryCodeForm, - bouncedEmailForm, - bouncedEmailCodeForm, - isEmailRecoverySubmitting, - isEmailRecoveryCodeSubmitting, - isBouncedEmailSubmitting, - isBouncedEmailCodeSubmitting, - isResendingEmailRecoveryCode, - isResendingBouncedEmailCode, - onResendEmail, - onEmailRecoverySubmit: handleEmailRecoverySubmit, - onEmailRecoveryCodeSubmit: handleEmailRecoveryCodeSubmit, - onBouncedEmailSubmit: handleBouncedEmailSubmit, - onBouncedEmailCodeSubmit: handleBouncedEmailCodeSubmit, - onStartEmailRecovery, - onUsePhoneRecovery: onSwitchToPhoneTab, - onBackToRecoveryInstructions, - onUseDifferentRecoveryEmail, - onUseDifferentBouncedEmail, - onResendEmailRecoveryCode, - onResendBouncedEmailCode, - }; -}; diff --git a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionEscapeCopy.ts b/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionEscapeCopy.ts deleted file mode 100644 index cfe1a8804..000000000 --- a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionEscapeCopy.ts +++ /dev/null @@ -1,80 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {SUPPORT_EMAIL} from '@app/features/app/config/I18nDisplayConstants'; -import RuntimeConfig from '@app/features/app/state/RuntimeConfig'; -import { - ESCAPE_CONFIRM_EMAIL_REMAINS_DESCRIPTOR, - ESCAPE_CONFIRM_LEAVE_DESCRIPTOR, - ESCAPE_CONFIRM_OUTCOME_DESCRIPTOR, - ESCAPE_CONFIRM_OWNED_DESCRIPTOR, - ESCAPE_CONFIRM_PRIMARY_NO_GUILDS_DESCRIPTOR, - ESCAPE_CONFIRM_PRIMARY_WITH_GUILDS_DESCRIPTOR, - ESCAPE_CONFIRM_SUPPORT_DESCRIPTOR, - ESCAPE_CONFIRM_SUPPORT_SELF_HOSTED_DESCRIPTOR, - ESCAPE_CONFIRM_TITLE_NO_GUILDS_DESCRIPTOR, - ESCAPE_CONFIRM_TITLE_WITH_GUILDS_DESCRIPTOR, - ESCAPE_HINT_NO_GUILDS_DESCRIPTOR, - ESCAPE_HINT_WITH_GUILDS_DESCRIPTOR, -} from '@app/features/auth/components/modals/required_action/RequiredActionDescriptors'; -import type {I18n} from '@lingui/core'; -import {formatListWithConfig} from '@pkgs/list_utils/src/ListFormatting'; - -export interface PhoneGateEscapePlan { - guildNames: ReadonlyArray; - ownedGuildNames: ReadonlyArray; - emailStepRemains: boolean; -} - -export interface PhoneGateEscapeConfirmCopy { - title: string; - bodyLines: ReadonlyArray; - primaryText: string; - primaryVariant: 'primary' | 'danger'; -} - -export function buildPhoneGateEscapeHint(i18n: I18n, guildCount: number): string { - return guildCount === 0 - ? i18n._(ESCAPE_HINT_NO_GUILDS_DESCRIPTOR) - : i18n._(ESCAPE_HINT_WITH_GUILDS_DESCRIPTOR, {count: guildCount}); -} - -export function buildPhoneGateEscapeConfirmCopy(i18n: I18n, plan: PhoneGateEscapePlan): PhoneGateEscapeConfirmCopy { - const leaving = plan.guildNames.length > 0; - const bodyLines: Array = [i18n._(ESCAPE_CONFIRM_OUTCOME_DESCRIPTOR)]; - if (leaving) { - bodyLines.push( - i18n._(ESCAPE_CONFIRM_LEAVE_DESCRIPTOR, { - guildNames: formatListWithConfig(plan.guildNames, {locale: i18n.locale, style: 'long', type: 'conjunction'}), - }), - ); - } - if (plan.ownedGuildNames.length > 0) { - bodyLines.push( - i18n._(ESCAPE_CONFIRM_OWNED_DESCRIPTOR, { - ownedNames: formatListWithConfig(plan.ownedGuildNames, { - locale: i18n.locale, - style: 'long', - type: 'conjunction', - }), - }), - ); - } - if (plan.emailStepRemains) { - bodyLines.push(i18n._(ESCAPE_CONFIRM_EMAIL_REMAINS_DESCRIPTOR)); - } - bodyLines.push( - RuntimeConfig.isSelfHosted() - ? i18n._(ESCAPE_CONFIRM_SUPPORT_SELF_HOSTED_DESCRIPTOR) - : i18n._(ESCAPE_CONFIRM_SUPPORT_DESCRIPTOR, {supportEmail: SUPPORT_EMAIL}), - ); - return { - title: leaving - ? i18n._(ESCAPE_CONFIRM_TITLE_WITH_GUILDS_DESCRIPTOR, {count: plan.guildNames.length}) - : i18n._(ESCAPE_CONFIRM_TITLE_NO_GUILDS_DESCRIPTOR), - bodyLines, - primaryText: leaving - ? i18n._(ESCAPE_CONFIRM_PRIMARY_WITH_GUILDS_DESCRIPTOR) - : i18n._(ESCAPE_CONFIRM_PRIMARY_NO_GUILDS_DESCRIPTOR), - primaryVariant: leaving ? 'danger' : 'primary', - }; -} diff --git a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionPhone.tsx b/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionPhone.tsx deleted file mode 100644 index 59dc53b6b..000000000 --- a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionPhone.tsx +++ /dev/null @@ -1,481 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {MFA_CODE_DIGIT_COUNT} from '@app/features/app/config/I18nDisplayConstants'; -import styles from '@app/features/auth/components/modals/RequiredActionModal.module.css'; -import { - COUNTRY_DESCRIPTOR, - ENTER_PHONE_CODE_DESCRIPTION_DESCRIPTOR, - ENTER_PHONE_CODE_TITLE_DESCRIPTOR, - ENTER_VALID_PHONE_DESCRIPTOR, - INBOUND_PHONE_CODE_LABEL_DESCRIPTOR, - INBOUND_PHONE_DEFAULT_REASON_DESCRIPTOR, - INBOUND_PHONE_DESTINATION_LABEL_DESCRIPTOR, - INBOUND_PHONE_PREPARE_DESCRIPTION_DESCRIPTOR, - INBOUND_PHONE_PREPARE_TITLE_DESCRIPTOR, - INBOUND_PHONE_SEND_DESCRIPTION_DESCRIPTOR, - INBOUND_PHONE_SEND_TITLE_DESCRIPTOR, - INBOUND_PHONE_START_DESCRIPTION_DESCRIPTOR, - INBOUND_PHONE_START_TITLE_DESCRIPTOR, - INBOUND_PHONE_WAIT_DESCRIPTION_DESCRIPTOR, - INBOUND_PHONE_WAIT_TITLE_DESCRIPTOR, - MESSAGE_RATES_NOTICE_DESCRIPTOR, - PHONE_NUMBER_DESCRIPTION_DESCRIPTOR, - PHONE_NUMBER_DESCRIPTOR, - PHONE_NUMBER_IS_REQUIRED_DESCRIPTOR, - PHONE_NUMBER_TITLE_DESCRIPTOR, - PHONE_PRIVACY_DESCRIPTOR, - PHONE_VERIFIED_DESCRIPTOR, - PLEASE_ENTER_A_VALID_PHONE_NUMBER_DESCRIPTOR, - SEARCH_COUNTRIES_DESCRIPTOR, -} from '@app/features/auth/components/modals/required_action/RequiredActionDescriptors'; -import { - StepShell, - useRequiredActionFormSubmit, - ValueBlock, - VerificationCodeForm, -} from '@app/features/auth/components/modals/required_action/RequiredActionShared'; -import { - type ActiveInboundChallenge, - type CodeFormInputs, - normalizeVerificationCode, - type PhoneFormInputs, - type PhoneScreen, - type SubmitCallback, -} from '@app/features/auth/components/modals/required_action/RequiredActionTypes'; -import DeveloperOptions from '@app/features/devtools/state/DeveloperOptions'; -import * as EmojiUtils from '@app/features/expressions/utils/EmojiUtils'; -import * as ToastCommands from '@app/features/ui/commands/ToastCommands'; -import {Form} from '@app/features/ui/components/form/Form'; -import {Combobox, type ComboboxFilterOption} from '@app/features/ui/components/form/FormCombobox'; -import {Input} from '@app/features/ui/components/form/FormInput'; -import * as UserCommands from '@app/features/user/commands/UserCommands'; -import * as LocaleUtils from '@app/features/user/utils/LocaleUtils'; -import { - COUNTRY_CODES, - type CountryCode, - formatPhoneNumber, - getCountryName, - getDefaultCountry, - getE164PhoneNumber, - getPhoneNumberPlaceholder, -} from '@app/media/data/CountryCodes'; -import {useLingui} from '@lingui/react/macro'; -import type React from 'react'; -import {useCallback, useEffect, useMemo, useState} from 'react'; -import {type UseFormReturn, useForm} from 'react-hook-form'; - -interface CountrySelectOption { - value: string; - label: string; - country: CountryCode; -} - -const getCountryOptions = (locale: string): ReadonlyArray => - COUNTRY_CODES.map((country) => ({ - value: country.code, - label: `${getCountryName(country.code, locale)} (${country.dialCode})`, - country, - })); -const renderCountryOption = (option: CountrySelectOption) => { - const {country} = option; - const locale = LocaleUtils.getCurrentLocale(); - const countryName = getCountryName(country.code, locale); - const flagUrl = EmojiUtils.getEmojiURL(country.flag); - return ( -
- {flagUrl ? ( - {countryName} - ) : ( - - {country.flag} - - )} - {countryName} - - ({country.dialCode}) - -
- ); -}; -const renderCountryValue = (option: CountrySelectOption | null) => { - if (!option) return null; - const {country} = option; - const locale = LocaleUtils.getCurrentLocale(); - const countryName = getCountryName(country.code, locale); - const flagUrl = EmojiUtils.getEmojiURL(country.flag); - return ( -
- {flagUrl ? ( - {countryName} - ) : ( - - {country.flag} - - )} - {country.dialCode} -
- ); -}; - -interface InboundPhoneStartStepProps { - requiresInboundPhone: boolean; -} - -export const InboundPhoneStartStep: React.FC = ({requiresInboundPhone}) => { - const {i18n} = useLingui(); - return ( - - ); -}; - -interface InboundPhoneInstructionStepProps { - challenge: ActiveInboundChallenge; - kind: 'prepare' | 'send' | 'wait'; -} - -export const InboundPhoneInstructionStep: React.FC = ({challenge, kind}) => { - const {i18n} = useLingui(); - if (kind === 'prepare') { - return ( - - ); - } - if (kind === 'send') { - return ( - -
- - {challenge.code} - - } - data-flx="auth.required-action.required-action-phone.inbound-phone-instruction-step.value-block" - /> - - {challenge.ourNumber} - - } - data-flx="auth.required-action.required-action-phone.inbound-phone-instruction-step.value-block--2" - /> -
-
- ); - } - return ( - - ); -}; - -interface PhoneNumberFormProps { - form: UseFormReturn; - onSubmit: SubmitCallback; - selectedCountry: CountryCode; - formattedPhone: string; - onCountryChange: (country: CountryCode) => void; - onPhoneInput: (event: React.ChangeEvent) => void; -} - -export const PhoneNumberStep: React.FC = ({ - form, - onSubmit, - selectedCountry, - formattedPhone, - onCountryChange, - onPhoneInput, -}) => { - const {i18n} = useLingui(); - const locale = LocaleUtils.getCurrentLocale(); - const countryOptions = useMemo(() => getCountryOptions(locale), [locale]); - return ( -
- -
- { - const country = countryOptions.find((o) => o.value === value)?.country; - if (country) { - onCountryChange(country); - } - }} - options={countryOptions} - renderOption={renderCountryOption} - renderValue={renderCountryValue} - placeholder={i18n._(SEARCH_COUNTRIES_DESCRIPTOR)} - filterOption={(option: ComboboxFilterOption, inputValue: string) => { - const searchTerm = inputValue.toLowerCase(); - const countryName = getCountryName(option.data.country.code, locale); - return ( - countryName.toLowerCase().includes(searchTerm) || - option.data.country.dialCode.includes(searchTerm) || - option.data.country.code.toLowerCase().includes(searchTerm) - ); - }} - data-flx="auth.required-action-modal.phone-number-form.select" - /> - - -
-
-
- ); -}; - -interface PhoneCodeStepProps { - form: UseFormReturn; - onSubmit: SubmitCallback; - recipient: string; -} - -export const PhoneCodeStep: React.FC = ({form, onSubmit, recipient}) => { - const {i18n} = useLingui(); - return ( - - ); -}; - -interface UsePhoneVerificationParams { - mock: boolean; - requiresInboundPhone: boolean; - resetKey: string | undefined; -} - -export interface PhoneVerificationController { - screen: PhoneScreen; - phoneForm: UseFormReturn; - codeForm: UseFormReturn; - isPhoneSubmitting: boolean; - isCodeSubmitting: boolean; - isStartingInbound: boolean; - selectedCountry: CountryCode; - formattedPhone: string; - phoneCodeRecipient: string; - onStartInbound: SubmitCallback; - onPhoneFormSubmit: SubmitCallback; - onCodeFormSubmit: SubmitCallback; - onCountryChange: (country: CountryCode) => void; - onPhoneInput: (event: React.ChangeEvent) => void; - onRefreshInboundChallenge: () => Promise; - onBackToPhone: () => void; -} - -export const usePhoneVerification = ({ - mock, - requiresInboundPhone, - resetKey, -}: UsePhoneVerificationParams): PhoneVerificationController => { - const {i18n} = useLingui(); - const initialPhoneScreen = (): PhoneScreen => - DeveloperOptions.mockRequiredActionsPhoneStep === 'code' - ? {kind: 'phone-code', recipient: ''} - : {kind: 'phone-number'}; - const [screen, setScreen] = useState(initialPhoneScreen); - const [selectedCountry, setSelectedCountry] = useState(getDefaultCountry()); - const [phoneNumber, setPhoneNumber] = useState(''); - const [formattedPhone, setFormattedPhone] = useState(''); - const [isStartingInbound, setIsStartingInbound] = useState(false); - const phoneForm = useForm(); - const codeForm = useForm(); - const defaultScreen = useCallback( - (): PhoneScreen => (requiresInboundPhone ? {kind: 'phone-inbound-start'} : {kind: 'phone-number'}), - [requiresInboundPhone], - ); - useEffect(() => { - setFormattedPhone(formatPhoneNumber(phoneNumber, selectedCountry)); - }, [phoneNumber, selectedCountry]); - useEffect(() => { - if (mock) { - setScreen(initialPhoneScreen()); - } else if (resetKey) { - setScreen(defaultScreen()); - setPhoneNumber(''); - setFormattedPhone(''); - phoneForm.reset(); - codeForm.reset(); - } - }, [mock, resetKey, defaultScreen, phoneForm, codeForm]); - const getCurrentE164PhoneNumber = useCallback( - () => getE164PhoneNumber(phoneNumber, selectedCountry), - [phoneNumber, selectedCountry], - ); - const setInvalidPhoneNumberError = useCallback(() => { - phoneForm.setError('phoneNumber', {message: i18n._(PLEASE_ENTER_A_VALID_PHONE_NUMBER_DESCRIPTOR)}); - }, [phoneForm, i18n]); - const onStartInbound = useCallback(async () => { - if (requiresInboundPhone) { - setIsStartingInbound(true); - try { - const challenge = await UserCommands.startInboundPhoneChallenge(); - setScreen({kind: 'phone-inbound-challenge', code: challenge.challenge_code, ourNumber: challenge.our_number}); - } finally { - setIsStartingInbound(false); - } - return; - } - if (!phoneNumber) { - phoneForm.setError('phoneNumber', {message: i18n._(PHONE_NUMBER_IS_REQUIRED_DESCRIPTOR)}); - return; - } - const e164Phone = getCurrentE164PhoneNumber(); - if (!e164Phone) { - setInvalidPhoneNumberError(); - return; - } - const verification = await UserCommands.sendPhoneVerification(e164Phone); - if (verification.channel === 'inbound_challenge') { - setScreen({ - kind: 'phone-inbound-challenge', - code: verification.challenge_code, - ourNumber: verification.our_number, - }); - return; - } - setScreen({kind: 'phone-code', recipient: e164Phone}); - }, [getCurrentE164PhoneNumber, phoneForm, phoneNumber, requiresInboundPhone, setInvalidPhoneNumberError, i18n]); - const returnToPhoneStepWithError = useCallback(() => { - setScreen({kind: 'phone-number'}); - phoneForm.setError('phoneNumber', {message: i18n._(ENTER_VALID_PHONE_DESCRIPTOR)}); - }, [phoneForm, i18n]); - const onSubmitCode = useCallback( - async (data: CodeFormInputs) => { - const e164Phone = getCurrentE164PhoneNumber(); - if (!e164Phone) { - returnToPhoneStepWithError(); - return; - } - await UserCommands.verifyPhone(e164Phone, normalizeVerificationCode(data.code)); - ToastCommands.success(i18n._(PHONE_VERIFIED_DESCRIPTOR)); - }, - [getCurrentE164PhoneNumber, returnToPhoneStepWithError, i18n], - ); - const onRefreshInboundChallenge = useCallback(async (): Promise => { - if (screen.kind !== 'phone-inbound-challenge') return false; - setIsStartingInbound(true); - try { - const challenge = await UserCommands.startInboundPhoneChallenge(); - setScreen({kind: 'phone-inbound-challenge', code: challenge.challenge_code, ourNumber: challenge.our_number}); - return true; - } finally { - setIsStartingInbound(false); - } - }, [screen]); - const {handleSubmit: onPhoneFormSubmit, isSubmitting: isPhoneSubmitting} = useRequiredActionFormSubmit( - phoneForm, - onStartInbound, - 'phoneNumber', - 'phone-number', - ); - const {handleSubmit: onCodeFormSubmit, isSubmitting: isCodeSubmitting} = useRequiredActionFormSubmit( - codeForm, - onSubmitCode, - 'code', - 'phone-code', - ); - const onPhoneInput = useCallback((e: React.ChangeEvent) => { - setPhoneNumber(e.target.value.replace(/\D/g, '')); - }, []); - const onCountryChange = useCallback((country: CountryCode) => { - setSelectedCountry(country); - setPhoneNumber(''); - setFormattedPhone(''); - }, []); - const onBackToPhone = useCallback(() => { - setScreen({kind: 'phone-number'}); - codeForm.reset(); - }, [codeForm]); - const phoneCodeRecipient = - screen.kind === 'phone-code' ? screen.recipient : (getCurrentE164PhoneNumber() ?? formattedPhone); - return { - screen, - phoneForm, - codeForm, - isPhoneSubmitting, - isCodeSubmitting, - isStartingInbound, - selectedCountry, - formattedPhone, - phoneCodeRecipient, - onStartInbound, - onPhoneFormSubmit, - onCodeFormSubmit, - onCountryChange, - onPhoneInput, - onRefreshInboundChallenge, - onBackToPhone, - }; -}; diff --git a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionShared.tsx b/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionShared.tsx deleted file mode 100644 index d31d989ad..000000000 --- a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionShared.tsx +++ /dev/null @@ -1,549 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {showGenericErrorModal} from '@app/features/app/components/alerts/GenericErrorModalCommands'; -import * as Modal from '@app/features/app/components/dialogs/Modal'; -import {ExternalLink} from '@app/features/app/components/shared/ExternalLink'; -import {EXAMPLE_EMAIL, SUPPORT_EMAIL, SUPPORT_EMAIL_MAILTO} from '@app/features/app/config/I18nDisplayConstants'; -import RuntimeConfig from '@app/features/app/state/RuntimeConfig'; -import styles from '@app/features/auth/components/modals/RequiredActionModal.module.css'; -import { - A_NEW_VERIFICATION_CODE_HAS_BEEN_SENT_DESCRIPTOR, - ALT_ROUTES_HUMAN_REVIEW_DESCRIPTOR, - ALT_ROUTES_HUMAN_REVIEW_SELF_HOSTED_DESCRIPTOR, - ALT_ROUTES_TITLE_DESCRIPTOR, - CODE_DID_NOT_WORK_DESCRIPTOR, - CODE_EXPIRED_DESCRIPTOR, - CODE_NOT_REQUESTED_DESCRIPTOR, - EMAIL_ALREADY_IN_USE_DESCRIPTOR, - EMAIL_CHANGE_UNAVAILABLE_DESCRIPTOR, - EMAIL_MUST_BE_DIFFERENT_DESCRIPTOR, - ENTER_VALID_EMAIL_DESCRIPTOR, - ENTER_VALID_PHONE_DESCRIPTOR, - ESCAPE_BUTTON_DESCRIPTOR, - FAILED_TO_RESEND_VERIFICATION_CODE_PLEASE_TRY_AGAIN_DESCRIPTOR, - INSTANCE_ADMIN_CONTACT_DESCRIPTOR, - NEW_EMAIL_DESCRIPTOR, - PHONE_ALREADY_USED_DESCRIPTOR, - PHONE_CANNOT_BE_USED_DESCRIPTOR, - PHONE_COUNTRY_NOT_SUPPORTED_DESCRIPTOR, - PHONE_INBOUND_REQUIRED_DESCRIPTOR, - PHONE_LOOKUP_UNAVAILABLE_DESCRIPTOR, - PHONE_NEEDS_REVIEW_DESCRIPTOR, - PHONE_NOT_ELIGIBLE_DESCRIPTOR, - PHONE_NOT_IN_SERVICE_DESCRIPTOR, - PHONE_NOT_MOBILE_DESCRIPTOR, - SMS_UNAVAILABLE_DESCRIPTOR, - SOMETHING_WENT_WRONG_TRY_AGAIN_DESCRIPTOR, - SUPPORT_LINK_LABEL_DESCRIPTOR, - TOO_MANY_ATTEMPTS_DESCRIPTOR, - VERIFICATION_SESSION_EXPIRED_DESCRIPTOR, -} from '@app/features/auth/components/modals/required_action/RequiredActionDescriptors'; -import {buildPhoneGateEscapeHint} from '@app/features/auth/components/modals/required_action/RequiredActionEscapeCopy'; -import type { - CodeFormInputs, - NewEmailFormInputs, - SubmitCallback, -} from '@app/features/auth/components/modals/required_action/RequiredActionTypes'; -import {isAbortError} from '@app/features/auth/state/SudoPrompt'; -import { - CANCEL_DESCRIPTOR, - GO_BACK_DESCRIPTOR, - SIGN_OUT_DESCRIPTOR, - SOMETHING_WENT_WRONG_DESCRIPTOR, - VERIFICATION_CODE_DESCRIPTOR, -} from '@app/features/i18n/utils/CommonMessageDescriptors'; -import {failureCode, failureRetryAfter, failureValidationErrors} from '@app/features/platform/utils/ResponseInspection'; -import {Button} from '@app/features/ui/button/Button'; -import * as ToastCommands from '@app/features/ui/commands/ToastCommands'; -import {Form} from '@app/features/ui/components/form/Form'; -import {Input} from '@app/features/ui/components/form/FormInput'; -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes'; -import type {I18n} from '@lingui/core'; -import {useLingui} from '@lingui/react/macro'; -import type React from 'react'; -import {useCallback} from 'react'; -import type {FieldValues, Path, UseFormReturn} from 'react-hook-form'; - -interface ValidationFaultWithCode { - path: string; - message: string; - code?: string; -} - -export type RequiredActionErrorContext = - | 'email-address' - | 'email-code' - | 'phone-number' - | 'phone-code' - | 'resend' - | 'general'; - -const EMAIL_VALIDATION_CODES = new Set([ - ValidationErrorCodes.EMAIL_IS_REQUIRED, - ValidationErrorCodes.EMAIL_LENGTH_INVALID, - ValidationErrorCodes.INVALID_EMAIL_FORMAT, - ValidationErrorCodes.INVALID_EMAIL_LOCAL_PART, - ValidationErrorCodes.INVALID_EMAIL_ADDRESS, - ValidationErrorCodes.EMAIL_DOMAIN_CANNOT_RECEIVE_MAIL, -]); -const CODE_SESSION_VALIDATION_CODES = new Set([ - ValidationErrorCodes.EMAIL_TOKEN_EXPIRED, - ValidationErrorCodes.INVALID_OR_EXPIRED_TICKET, - ValidationErrorCodes.INVALID_EMAIL_TOKEN, - ValidationErrorCodes.INVALID_PROOF_TOKEN, - ValidationErrorCodes.ORIGINAL_EMAIL_MUST_BE_VERIFIED_FIRST, - ValidationErrorCodes.ORIGINAL_VERIFICATION_NOT_REQUIRED, - ValidationErrorCodes.TICKET_ALREADY_COMPLETED, -]); - -function getStatus(error: unknown): number | undefined { - if (!error || typeof error !== 'object' || !('status' in error)) return undefined; - const status = (error as {status?: unknown}).status; - return typeof status === 'number' ? status : undefined; -} - -function getFirstValidationCode(error: unknown): string | undefined { - const validationErrors = failureValidationErrors(error) as ReadonlyArray | undefined; - const first = validationErrors?.[0]; - if (!first) return undefined; - return first.code ?? first.message; -} - -function resolveValidationErrorMessage(i18n: I18n, code: string, context: RequiredActionErrorContext): string | null { - if (EMAIL_VALIDATION_CODES.has(code)) { - return i18n._(ENTER_VALID_EMAIL_DESCRIPTOR); - } - switch (code) { - case ValidationErrorCodes.EMAIL_ALREADY_IN_USE: - return i18n._(EMAIL_ALREADY_IN_USE_DESCRIPTOR); - case ValidationErrorCodes.NEW_EMAIL_MUST_BE_DIFFERENT: - return i18n._(EMAIL_MUST_BE_DIFFERENT_DESCRIPTOR); - case ValidationErrorCodes.INVALID_VERIFICATION_CODE: - return i18n._(CODE_DID_NOT_WORK_DESCRIPTOR); - case ValidationErrorCodes.VERIFICATION_CODE_EXPIRED: - return i18n._(CODE_EXPIRED_DESCRIPTOR); - case ValidationErrorCodes.VERIFICATION_CODE_NOT_ISSUED: - case ValidationErrorCodes.NO_NEW_EMAIL_REQUESTED: - return i18n._(CODE_NOT_REQUESTED_DESCRIPTOR); - case ValidationErrorCodes.PHONE_NUMBER_INVALID_FORMAT: - return i18n._(ENTER_VALID_PHONE_DESCRIPTOR); - case ValidationErrorCodes.MUST_HAVE_EMAIL_TO_CHANGE_IT: - case ValidationErrorCodes.NO_ORIGINAL_EMAIL_ON_RECORD: - case ValidationErrorCodes.ORIGINAL_EMAIL_ALREADY_VERIFIED: - return i18n._(EMAIL_CHANGE_UNAVAILABLE_DESCRIPTOR); - default: - if (CODE_SESSION_VALIDATION_CODES.has(code)) { - return i18n._(VERIFICATION_SESSION_EXPIRED_DESCRIPTOR); - } - if (context === 'email-code' || context === 'phone-code') { - return i18n._(CODE_DID_NOT_WORK_DESCRIPTOR); - } - return null; - } -} - -export function resolveRequiredActionErrorMessage( - i18n: I18n, - error: unknown, - context: RequiredActionErrorContext, -): string { - const apiCode = failureCode(error); - const validationCode = apiCode === APIErrorCodes.INVALID_FORM_BODY ? getFirstValidationCode(error) : undefined; - if (validationCode) { - const validationMessage = resolveValidationErrorMessage(i18n, validationCode, context); - if (validationMessage) return validationMessage; - } - const status = getStatus(error); - const retryAfter = failureRetryAfter(error); - const isRateLimited = - status === 429 || - apiCode === APIErrorCodes.RATE_LIMITED || - apiCode === APIErrorCodes.PHONE_RATE_LIMIT_EXCEEDED || - typeof retryAfter === 'number'; - if (isRateLimited) { - return i18n._(TOO_MANY_ATTEMPTS_DESCRIPTOR); - } - switch (apiCode) { - case APIErrorCodes.INVALID_PHONE_NUMBER: - return context === 'phone-number' - ? i18n._(ENTER_VALID_PHONE_DESCRIPTOR) - : i18n._(PHONE_CANNOT_BE_USED_DESCRIPTOR); - case APIErrorCodes.PHONE_COUNTRY_NOT_SUPPORTED: - return i18n._(PHONE_COUNTRY_NOT_SUPPORTED_DESCRIPTOR); - case APIErrorCodes.PHONE_NUMBER_NOT_IN_SERVICE: - return i18n._(PHONE_NOT_IN_SERVICE_DESCRIPTOR); - case APIErrorCodes.PHONE_NUMBER_NOT_MOBILE: - return i18n._(PHONE_NOT_MOBILE_DESCRIPTOR); - case APIErrorCodes.PHONE_LOOKUP_UNAVAILABLE: - return i18n._(PHONE_LOOKUP_UNAVAILABLE_DESCRIPTOR); - case APIErrorCodes.PHONE_INBOUND_VERIFICATION_REQUIRED: - return i18n._(PHONE_INBOUND_REQUIRED_DESCRIPTOR); - case APIErrorCodes.PHONE_VERIFICATION_NEEDS_REVIEW: - return i18n._(PHONE_NEEDS_REVIEW_DESCRIPTOR); - case APIErrorCodes.INVALID_PHONE_VERIFICATION_CODE: - return i18n._(CODE_DID_NOT_WORK_DESCRIPTOR); - case APIErrorCodes.PHONE_ALREADY_USED: - return i18n._(PHONE_ALREADY_USED_DESCRIPTOR); - case APIErrorCodes.SMS_VERIFICATION_UNAVAILABLE: - return i18n._(SMS_UNAVAILABLE_DESCRIPTOR); - case APIErrorCodes.PHONE_ADD_NOT_ELIGIBLE: - case APIErrorCodes.BOT_USER_AUTH_ENDPOINT_ACCESS_DENIED: - case APIErrorCodes.PHONE_VERIFICATION_REQUIRED: - return i18n._(PHONE_NOT_ELIGIBLE_DESCRIPTOR); - case APIErrorCodes.ACCESS_DENIED: - case APIErrorCodes.FORBIDDEN: - return i18n._(EMAIL_CHANGE_UNAVAILABLE_DESCRIPTOR); - default: - return i18n._(SOMETHING_WENT_WRONG_TRY_AGAIN_DESCRIPTOR); - } -} - -function clearServerErrors(form: UseFormReturn): void { - const errors = form.formState.errors; - const errorFields = Object.keys(errors) as Array>; - errorFields.forEach((field) => { - const error = errors[field]; - if (error && 'type' in error && error.type === 'server') { - form.clearErrors(field); - } - }); -} - -export const useRequiredActionFormSubmit = ( - form: UseFormReturn, - onSubmit: (data: T) => Promise | void, - defaultErrorField: Path, - errorContext: RequiredActionErrorContext, -) => { - const {i18n} = useLingui(); - const handleSubmit = useCallback( - async (data: T) => { - try { - await onSubmit(data); - } catch (error) { - if (isAbortError(error)) return; - form.setError(defaultErrorField, { - type: 'server', - message: resolveRequiredActionErrorMessage(i18n, error, errorContext), - }); - throw error; - } - }, - [defaultErrorField, errorContext, form, i18n, onSubmit], - ); - const submitWithErrorClearing = useCallback(async () => { - clearServerErrors(form); - await form - .handleSubmit(handleSubmit)() - .catch(() => undefined); - }, [form, handleSubmit]); - return { - handleSubmit: submitWithErrorClearing, - isSubmitting: form.formState.isSubmitting, - }; -}; - -interface StepShellProps { - title: string; - description?: React.ReactNode; - children?: React.ReactNode; - notice?: React.ReactNode; -} - -export const StepShell: React.FC = ({title, description, children, notice}) => ( -
-
-

- {title} -

- {description ? ( - - {description} - - ) : null} -
- {notice ? ( -
- {notice} -
- ) : null} - {children} -
-); - -interface ValueBlockProps { - label: string; - value: React.ReactNode; -} - -export const ValueBlock: React.FC = ({label, value}) => ( -
-
- {label} -
-
- {value} -
-
-); -export const SupportLinkLine: React.FC = () => { - const {i18n} = useLingui(); - if (RuntimeConfig.isSelfHosted()) { - return ( - - {i18n._(INSTANCE_ADMIN_CONTACT_DESCRIPTOR)} - - ); - } - return ( - - {i18n._(SUPPORT_LINK_LABEL_DESCRIPTOR)} ({SUPPORT_EMAIL}) - - ); -}; - -interface RequiredActionAltRoutesProps { - escapeAction: { - guildCount: number; - submitting: boolean; - onPress: () => void; - } | null; -} - -export const RequiredActionAltRoutes: React.FC = ({escapeAction}) => { - const {i18n} = useLingui(); - const selfHosted = RuntimeConfig.isSelfHosted(); - return ( -
-

- {i18n._(ALT_ROUTES_TITLE_DESCRIPTOR)} -

-

- {i18n._(selfHosted ? ALT_ROUTES_HUMAN_REVIEW_SELF_HOSTED_DESCRIPTOR : ALT_ROUTES_HUMAN_REVIEW_DESCRIPTOR)} -

- {selfHosted ? null : ( -
- -
- )} - {escapeAction ? ( - <> -
-

- {buildPhoneGateEscapeHint(i18n, escapeAction.guildCount)} -

- - - ) : null} -
- ); -}; - -interface NewEmailAddressFormProps { - form: UseFormReturn; - onSubmit: SubmitCallback; - title: string; - description: string; -} - -export const NewEmailAddressForm: React.FC = ({form, onSubmit, title, description}) => { - const {i18n} = useLingui(); - return ( -
- - - -
- ); -}; - -interface VerificationCodeFormProps { - form: UseFormReturn; - onSubmit: SubmitCallback; - title: string; - description: string; - children?: React.ReactNode; -} - -export const VerificationCodeForm: React.FC = ({ - form, - onSubmit, - title, - description, - children, -}) => { - const {i18n} = useLingui(); - return ( -
- - - {children} - -
- ); -}; - -interface SignOutFooterRowProps { - mock: boolean; - isLoggingOut: boolean; - onDismiss: () => void; - onLogout: () => Promise; -} - -export const SignOutFooterRow: React.FC = ({mock, isLoggingOut, onDismiss, onLogout}) => { - const {i18n} = useLingui(); - return ( -
- - {mock ? ( - <> - - - - ) : null} -
- ); -}; - -interface InlineLinkProps { - onClick: () => void; - disabled?: boolean; - submitting?: boolean; - children: React.ReactNode; - 'data-flx'?: string; -} - -export const InlineLink: React.FC = ({onClick, disabled, submitting, children, ...props}) => ( - -); - -interface BackButtonProps { - onClick: () => void; - disabled?: boolean; -} - -export const BackButton: React.FC = ({onClick, disabled}) => { - const {i18n} = useLingui(); - return ( - - ); -}; -export const RequiredActionBackdrop: React.FC<{mock: boolean}> = ({mock}) => ( -
-); -export const useResendEmailChangeCode = () => { - const {i18n} = useLingui(); - return useCallback( - async ( - ticket: string | null, - isResending: boolean, - setIsResending: React.Dispatch>, - resend: (ticket: string) => Promise, - ) => { - if (!ticket || isResending) { - return; - } - setIsResending(true); - try { - await resend(ticket); - ToastCommands.success(i18n._(A_NEW_VERIFICATION_CODE_HAS_BEEN_SENT_DESCRIPTOR)); - } catch (error) { - showGenericErrorModal({ - title: () => i18n._(SOMETHING_WENT_WRONG_DESCRIPTOR), - message: () => - resolveRequiredActionErrorMessage(i18n, error, 'resend') || - i18n._(FAILED_TO_RESEND_VERIFICATION_CODE_PLEASE_TRY_AGAIN_DESCRIPTOR), - dataFlx: 'auth.required-action-shared.resend-email-change-code-error-modal', - }); - } finally { - setIsResending(false); - } - }, - [i18n], - ); -}; diff --git a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionTypes.ts b/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionTypes.ts deleted file mode 100644 index 7fb52725c..000000000 --- a/fluxer_app/src/features/auth/components/modals/required_action/RequiredActionTypes.ts +++ /dev/null @@ -1,79 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import type {RequiredActionFlow} from '@app/features/auth/components/modals/RequiredActionFlow'; -import DeveloperOptions from '@app/features/devtools/state/DeveloperOptions'; - -export interface PhoneFormInputs { - phoneNumber: string; -} - -export interface CodeFormInputs { - code: string; -} - -export interface NewEmailFormInputs { - newEmail: string; -} - -export type VerificationType = 'email' | 'phone'; - -export interface VerificationTab { - id: VerificationType; - label: string; -} - -export interface ActiveInboundChallenge { - code: string; - ourNumber: string; -} - -export type EmailScreen = - | {kind: 'email-instructions'} - | {kind: 'email-recovery-new'} - | {kind: 'email-recovery-code'; recipient: string; ticket: string; proof: string} - | {kind: 'bounced-email-new'} - | {kind: 'bounced-email-code'; recipient: string; ticket: string}; -export type PhoneScreen = - | {kind: 'phone-number'} - | {kind: 'phone-code'; recipient: string} - | {kind: 'phone-inbound-start'} - | {kind: 'phone-inbound-challenge'; code: string; ourNumber: string}; - -export const EMAIL_SCREEN_ORDER: ReadonlyArray = [ - 'email-instructions', - 'email-recovery-new', - 'email-recovery-code', - 'bounced-email-new', - 'bounced-email-code', -]; -export const PHONE_SCREEN_ORDER: ReadonlyArray = [ - 'phone-inbound-start', - 'phone-inbound-challenge', - 'phone-number', - 'phone-code', -]; - -export type SubmitCallback = () => Promise; - -export const normalizeVerificationCode = (code: string): string => code.split(' ').join(''); -export const buildMockRequiredActionFlow = (): RequiredActionFlow => { - const mode = DeveloperOptions.mockRequiredActionsMode; - const reverify = DeveloperOptions.mockRequiredActionsReverify; - const channelPlan = { - actions: [], - reverify, - clearsAll: true, - remainingActionsAfterCompletion: [], - requiresInboundPhone: false, - } as const; - return { - actions: [], - key: `mock:${mode}:${reverify}`, - mode, - defaultTab: mode === 'phone' ? 'phone' : 'email', - email: mode === 'phone' ? null : {channel: 'email', ...channelPlan}, - phone: mode === 'email' ? null : {channel: 'phone', ...channelPlan}, - reverify, - requiresInboundPhone: false, - }; -}; diff --git a/fluxer_app/src/features/auth/components/pages/EmailRevertPage.tsx b/fluxer_app/src/features/auth/components/pages/EmailRevertPage.tsx index 70d7bc29a..2140beb39 100644 --- a/fluxer_app/src/features/auth/components/pages/EmailRevertPage.tsx +++ b/fluxer_app/src/features/auth/components/pages/EmailRevertPage.tsx @@ -73,8 +73,8 @@ const EmailRevertPage = observer(function EmailRevertPage() {

- We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your - account with a new password. + We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new + password.

diff --git a/fluxer_app/src/features/auth/state/AuthFlow.ts b/fluxer_app/src/features/auth/state/AuthFlow.ts index de25fb0d8..dbf462dfb 100644 --- a/fluxer_app/src/features/auth/state/AuthFlow.ts +++ b/fluxer_app/src/features/auth/state/AuthFlow.ts @@ -14,7 +14,6 @@ export interface LoginSuccessPayload { export interface MfaChallenge { ticket: string; - sms?: boolean; totp: boolean; webauthn: boolean; backupCodes: boolean; @@ -76,7 +75,6 @@ export async function loginWithPassword({ type: 'mfa', challenge: { ticket: response.ticket, - sms: (response as {sms?: boolean}).sms ?? false, totp: response.totp, webauthn: response.webauthn, backupCodes: response.backup_codes ?? false, @@ -266,7 +264,6 @@ export async function resetPassword(token: string, password: string): Promise ( { data-flx="channel.verification-barrier.not-member-long-enough-barrier" /> ); - case VerificationFailureReason.NO_PHONE_NUMBER: - return ; case VerificationFailureReason.SEND_MESSAGE_DISABLED: return ; case VerificationFailureReason.TIMED_OUT: diff --git a/fluxer_app/src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx b/fluxer_app/src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx index 5ac8ade85..46e0f049e 100644 --- a/fluxer_app/src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx +++ b/fluxer_app/src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx @@ -2,9 +2,10 @@ import i18n from '@app/app/I18n'; import {GenericErrorModal} from '@app/features/app/components/alerts/GenericErrorModal'; -import {failureCode} from '@app/features/platform/utils/ResponseInspection'; +import {failureCode, failureMessage} from '@app/features/platform/utils/ResponseInspection'; import * as ModalCommands from '@app/features/ui/commands/ModalCommands'; import {modal} from '@app/features/ui/commands/ModalCommands'; +import {ACCOUNT_LIMITED_NOTICE_DESCRIPTOR} from '@app/features/user/utils/AccountLimitUtils'; import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; import {msg} from '@lingui/core/macro'; @@ -46,6 +47,9 @@ export function showGroupRecipientAddFailedModal(error: unknown): void { case APIErrorCodes.RATE_LIMITED: message = i18n._(RATE_LIMITED_DESCRIPTOR); break; + case APIErrorCodes.ACCOUNT_LIMITED: + message = failureMessage(error) || i18n._(ACCOUNT_LIMITED_NOTICE_DESCRIPTOR); + break; default: message = i18n._(ADD_TO_GROUP_FAILED_MESSAGE_DESCRIPTOR); break; diff --git a/fluxer_app/src/features/channel/components/barriers/BarrierComponents.tsx b/fluxer_app/src/features/channel/components/barriers/BarrierComponents.tsx index 2d8d76d7a..99305e268 100644 --- a/fluxer_app/src/features/channel/components/barriers/BarrierComponents.tsx +++ b/fluxer_app/src/features/channel/components/barriers/BarrierComponents.tsx @@ -14,8 +14,10 @@ import {remFromPx} from '@app/features/theme/layout/RemFromPx'; import {Button} from '@app/features/ui/button/Button'; import * as ModalCommands from '@app/features/ui/commands/ModalCommands'; import {modal} from '@app/features/ui/commands/ModalCommands'; -import {PhoneAddModal} from '@app/features/user/components/modals/PhoneAddModal'; +import {BouncedEmailChangeModal} from '@app/features/user/components/modals/BouncedEmailChangeModal'; import {UserSettingsModal} from '@app/features/user/components/modals/UserSettingsModal'; +import Users from '@app/features/user/state/Users'; +import {ACCOUNT_LIMITED_NOTICE_DESCRIPTOR} from '@app/features/user/utils/AccountLimitUtils'; import {msg} from '@lingui/core/macro'; import {Trans, useLingui} from '@lingui/react/macro'; import { @@ -23,7 +25,6 @@ import { EnvelopeSimpleIcon, InfoIcon, MegaphoneSimpleIcon, - PhoneIcon, ProhibitIcon, ShieldWarningIcon, TimerIcon, @@ -181,13 +182,18 @@ export const UnverifiedEmailBarrier = observer(({onAction}: BarrierProps) => { small={true} onClick={() => { onAction?.(); + const bounced = Users.currentUser?.emailBounced === true; ModalCommands.push( - modal(() => ( - - )), + modal(() => + bounced ? ( + + ) : ( + + ), + ), ); }} data-flx="channel.barriers.barrier-components.unverified-email-barrier.button.action" @@ -245,34 +251,20 @@ export const NotMemberLongEnoughBarrier = observer(({initialTimeRemaining = 10 * /> ); }); -export const NoPhoneNumberBarrier = observer(({onAction}: BarrierProps) => { +export const AccountLimitedBarrier = observer(() => { + const {i18n} = useLingui(); return ( You need to verify a phone number to send messages in this community.} + message={i18n._(ACCOUNT_LIMITED_NOTICE_DESCRIPTOR)} icon={ - } - action={ - - } - data-flx="channel.barriers.barrier-components.no-phone-number-barrier.barrier-base" + action={null} + data-flx="channel.barriers.barrier-components.account-limited-barrier.barrier-base" /> ); }); diff --git a/fluxer_app/src/features/channel/components/channel_header_components/DeveloperToolsContextMenu.tsx b/fluxer_app/src/features/channel/components/channel_header_components/DeveloperToolsContextMenu.tsx index 7f3fb3125..6e66d8875 100644 --- a/fluxer_app/src/features/channel/components/channel_header_components/DeveloperToolsContextMenu.tsx +++ b/fluxer_app/src/features/channel/components/channel_header_components/DeveloperToolsContextMenu.tsx @@ -37,10 +37,7 @@ export const DeveloperToolsContextMenu: React.FC<{onClose: () => void}> = observ - + diff --git a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts index d219482e5..7194f1a2b 100644 --- a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts +++ b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts @@ -221,34 +221,6 @@ const GEO_BLOCK_OVERLAY_DESCRIPTOR = msg({ message: 'Geo block overlay', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', }); -const REQUIRED_ACTIONS_OVERLAY_DESCRIPTOR = msg({ - message: 'Required actions overlay', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const REQUIRED_ACTION_VARIANT_DESCRIPTOR = msg({ - message: 'Required action variant', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const REQUIRED_ACTION_DEFAULT_TAB_DESCRIPTOR = msg({ - message: 'Required action default tab', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const REQUIRED_ACTION_PHONE_STEP_DESCRIPTOR = msg({ - message: 'Required action phone step', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const REQUIRED_ACTION_RESEND_LOADING_DESCRIPTOR = msg({ - message: 'Required action resend loading', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const REQUIRED_ACTION_RESEND_OUTCOME_DESCRIPTOR = msg({ - message: 'Required action resend outcome', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const REQUIRED_ACTION_REVERIFICATION_TEXT_DESCRIPTOR = msg({ - message: 'Required action reverification text', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); const NO_SEND_PERMISSION_DESCRIPTOR = msg({ message: 'No {sendMessagesPermission} permission', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', @@ -324,10 +296,6 @@ const formatDeveloperOptionValue = ( case 'mockVerificationBarrier': case 'mockMatureContentGateReason': case 'mockMatureMediaGateReason': - case 'mockRequiredActionsMode': - case 'mockRequiredActionsSelectedTab': - case 'mockRequiredActionsPhoneStep': - case 'mockRequiredActionsResendOutcome': case 'mockTitlebarPlatformOverride': case 'mockUpdaterState': return String(value).replace(/_/g, ' '); @@ -448,20 +416,6 @@ export const getDeveloperOptionLabel = (key: keyof DeveloperOptionsState): Messa return UK_GEO_DESCRIPTOR; case 'mockGeoBlocked': return GEO_BLOCK_OVERLAY_DESCRIPTOR; - case 'mockRequiredActionsOverlay': - return REQUIRED_ACTIONS_OVERLAY_DESCRIPTOR; - case 'mockRequiredActionsMode': - return REQUIRED_ACTION_VARIANT_DESCRIPTOR; - case 'mockRequiredActionsSelectedTab': - return REQUIRED_ACTION_DEFAULT_TAB_DESCRIPTOR; - case 'mockRequiredActionsPhoneStep': - return REQUIRED_ACTION_PHONE_STEP_DESCRIPTOR; - case 'mockRequiredActionsResending': - return REQUIRED_ACTION_RESEND_LOADING_DESCRIPTOR; - case 'mockRequiredActionsResendOutcome': - return REQUIRED_ACTION_RESEND_OUTCOME_DESCRIPTOR; - case 'mockRequiredActionsReverify': - return REQUIRED_ACTION_REVERIFICATION_TEXT_DESCRIPTOR; case 'forceNoSendMessages': return {...NO_SEND_PERMISSION_DESCRIPTOR, values: {sendMessagesPermission: SEND_MESSAGES_PERMISSION}}; case 'forceNoAttachFiles': diff --git a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx index 0a28448e4..be6917bcd 100644 --- a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx +++ b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx @@ -1,7 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import {ATTACH_FILES_PERMISSION, SEND_MESSAGES_PERMISSION} from '@app/features/app/config/I18nDisplayConstants'; -import RequiredActionModal from '@app/features/auth/components/modals/RequiredActionModal'; import { DeveloperOptionCheckbox, DeveloperOptionRadioItems, @@ -12,10 +11,6 @@ import { getGiftDurationOptions, getMatureContentChannelGateOptions, getMatureContentMediaGateOptions, - getRequiredActionModeOptions, - getRequiredActionPhoneStepOptions, - getRequiredActionResendOutcomeOptions, - getRequiredActionTabOptions, getVerificationBarrierOptions, } from '@app/features/channel/components/channel_header_components/developer_tools/OptionPresets'; import {updateOption} from '@app/features/channel/components/channel_header_components/developer_tools/ResetOptions'; @@ -25,7 +20,6 @@ import {remFromPx} from '@app/features/theme/layout/RemFromPx'; import {MenuItem} from '@app/features/ui/action_menu/MenuItem'; import {MenuItemSlider} from '@app/features/ui/action_menu/MenuItemSlider'; import {MenuItemSubmenu} from '@app/features/ui/action_menu/MenuItemSubmenu'; -import * as ModalCommands from '@app/features/ui/commands/ModalCommands'; import Users from '@app/features/user/state/Users'; import {msg, plural} from '@lingui/core/macro'; import {Trans, useLingui} from '@lingui/react/macro'; @@ -57,30 +51,10 @@ const SLOWMODE_TIME_REMAINING_DESCRIPTOR = msg({ message: 'Slowmode time remaining', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', }); -const REQUIRED_ACTION_FLOW_DESCRIPTOR = msg({ - message: 'Required action flow', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const MOCK_VARIANT_DESCRIPTOR = msg({ - message: 'Mock variant', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); const MOCK_INCOMING_CALL_DESCRIPTOR = msg({ message: 'Mock incoming call', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', }); -const DEFAULT_TAB_DESCRIPTOR = msg({ - message: 'Default tab', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const PHONE_STEP_DESCRIPTOR = msg({ - message: 'Phone step', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -const RESEND_OUTCOME_DESCRIPTOR = msg({ - message: 'Resend outcome', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); const CONTENT_SAFETY_GATES_DESCRIPTOR = msg({ message: 'Content safety gates', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', @@ -190,71 +164,6 @@ const SlowmodeSimulationMenu: React.FC = observer(() => { /> ); }); -const RequiredActionFlowMenu: React.FC<{onOpenOverlay: () => void}> = observer(({onOpenOverlay}) => { - const {i18n} = useLingui(); - const shouldShowDefaultTab = DeveloperOptions.mockRequiredActionsMode === 'email_or_phone'; - const shouldShowPhoneStep = - DeveloperOptions.mockRequiredActionsMode === 'phone' || - (DeveloperOptions.mockRequiredActionsMode === 'email_or_phone' && - DeveloperOptions.mockRequiredActionsSelectedTab === 'phone'); - return ( - ( - <> - - - Open overlay - - {shouldShowDefaultTab && ( - - )} - {shouldShowPhoneStep && ( - - )} - - Use reverification text - - - Resend button loading - - - - )} - data-flx="channel.channel-header-components.developer-tools-context-menu.required-action-flow-menu.menu-item-submenu" - /> - ); -}); const ContentSafetyGatesMenu: React.FC = () => { const {i18n} = useLingui(); return ( @@ -344,20 +253,8 @@ const GiftInventoryFlowMenu: React.FC = observer(() => { /> ); }); -export const MockingMenu: React.FC<{onClose: () => void}> = observer(({onClose}) => { +export const MockingMenu: React.FC = observer(() => { const {i18n} = useLingui(); - const openRequiredActionOverlay = () => { - ModalCommands.pushWithKeyAfterBottomSheetClose( - onClose, - ModalCommands.modal(() => ( - - )), - 'required-actions-mock', - ); - }; return ( void}> = observer(({onClose}) data-flx="channel.channel-header-components.developer-tools-context-menu.mocking-menu.menu-item-submenu.mock-incoming-call" /> - diff --git a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts index 75c3b6a78..407273cf4 100644 --- a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts +++ b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts @@ -10,7 +10,6 @@ import { NO_TIMER_DESCRIPTOR, } from '@app/features/channel/components/channel_header_components/developer_tools/FormatHelpers'; import type {DeveloperOptionsState} from '@app/features/devtools/state/DeveloperOptions'; -import {EMAIL_DESCRIPTOR} from '@app/features/i18n/utils/CommonMessageDescriptors'; import {UserPremiumTypes} from '@fluxer/constants/src/UserConstants'; import type {I18n} from '@lingui/core'; import {msg} from '@lingui/core/macro'; @@ -47,42 +46,14 @@ export const NOT_A_MEMBER_LONG_ENOUGH_DESCRIPTOR = msg({ message: 'Not a member long enough', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', }); -export const NO_PHONE_NUMBER_DESCRIPTOR = msg({ - message: 'No phone number', +export const ACCOUNT_LIMITED_DESCRIPTOR = msg({ + message: 'Account limited', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', }); export const SEND_MESSAGES_DISABLED_DESCRIPTOR = msg({ message: 'Send messages disabled', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', }); -export const PHONE_DESCRIPTOR = msg({ - message: 'Phone', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -export const EMAIL_OR_PHONE_DESCRIPTOR = msg({ - message: 'Email or phone', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -export const ENTER_PHONE_DESCRIPTOR = msg({ - message: 'Enter phone', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -export const ENTER_CODE_DESCRIPTOR = msg({ - message: 'Enter code', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -export const SUCCESS_DESCRIPTOR = msg({ - message: 'Success', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -export const RATE_LIMITED_DESCRIPTOR = msg({ - message: 'Rate limited', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); -export const SERVICE_ERROR_DESCRIPTOR = msg({ - message: 'Service error', - comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', -}); export const GEO_RESTRICTED_DESCRIPTOR = msg({ message: 'Geo restricted', comment: 'Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse.', @@ -137,7 +108,7 @@ export const getVerificationBarrierOptions = (): Array< {value: 'unverified_email', label: UNVERIFIED_EMAIL_DESCRIPTOR}, {value: 'account_too_new', label: ACCOUNT_TOO_NEW_DESCRIPTOR}, {value: 'not_member_long', label: NOT_A_MEMBER_LONG_ENOUGH_DESCRIPTOR}, - {value: 'no_phone', label: NO_PHONE_NUMBER_DESCRIPTOR}, + {value: 'account_limited', label: ACCOUNT_LIMITED_DESCRIPTOR}, {value: 'send_message_disabled', label: SEND_MESSAGES_DISABLED_DESCRIPTOR}, ]; export const getCountdownTimerOptions = ( @@ -151,32 +122,6 @@ export const getCountdownTimerOptions = ( {value: 300000, label: formatDurationMs(i18n, 300000)}, {value: 600000, label: formatDurationMs(i18n, 600000)}, ]; -export const getRequiredActionModeOptions = (): Array< - RadioMenuOption -> => [ - {value: 'email', label: EMAIL_DESCRIPTOR}, - {value: 'phone', label: PHONE_DESCRIPTOR}, - {value: 'email_or_phone', label: EMAIL_OR_PHONE_DESCRIPTOR}, -]; -export const getRequiredActionTabOptions = (): Array< - RadioMenuOption -> => [ - {value: 'email', label: EMAIL_DESCRIPTOR}, - {value: 'phone', label: PHONE_DESCRIPTOR}, -]; -export const getRequiredActionPhoneStepOptions = (): Array< - RadioMenuOption -> => [ - {value: 'phone', label: ENTER_PHONE_DESCRIPTOR}, - {value: 'code', label: ENTER_CODE_DESCRIPTOR}, -]; -export const getRequiredActionResendOutcomeOptions = (): Array< - RadioMenuOption -> => [ - {value: 'success', label: SUCCESS_DESCRIPTOR}, - {value: 'rate_limited', label: RATE_LIMITED_DESCRIPTOR}, - {value: 'server_error', label: SERVICE_ERROR_DESCRIPTOR}, -]; export const getMatureContentChannelGateOptions = (): Array< RadioMenuOption > => [ diff --git a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/ResetOptions.ts b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/ResetOptions.ts index 4a8fd03ee..d06d5491c 100644 --- a/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/ResetOptions.ts +++ b/fluxer_app/src/features/channel/components/channel_header_components/developer_tools/ResetOptions.ts @@ -50,13 +50,6 @@ export const DEFAULT_DEVELOPER_OPTIONS = { forceMatureMedia: false, mockInUK: false, mockGeoBlocked: false, - mockRequiredActionsOverlay: false, - mockRequiredActionsMode: 'email', - mockRequiredActionsSelectedTab: 'email', - mockRequiredActionsPhoneStep: 'phone', - mockRequiredActionsResending: false, - mockRequiredActionsResendOutcome: 'success', - mockRequiredActionsReverify: false, forceNoSendMessages: false, forceNoAttachFiles: false, mockSlowmodeActive: false, diff --git a/fluxer_app/src/features/channel/components/channel_view/DMChannelView.tsx b/fluxer_app/src/features/channel/components/channel_view/DMChannelView.tsx index 4ac928016..f84c549cd 100644 --- a/fluxer_app/src/features/channel/components/channel_view/DMChannelView.tsx +++ b/fluxer_app/src/features/channel/components/channel_view/DMChannelView.tsx @@ -1,6 +1,7 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import { + AccountLimitedBarrier, BlockedUserBarrier, SystemDmBarrier, UnclaimedDMBarrier, @@ -78,6 +79,7 @@ export const DMChannelView = observer(({channelId}: DMChannelViewProps) => { const recipient = recipientId ? Users.getUser(recipientId) : null; const isRecipientBlocked = recipientId ? Relationships.isBlocked(recipientId) : false; const isCurrentUserUnclaimed = !Users.currentUser?.isClaimed(); + const isCurrentUserLimited = Users.currentUser?.accountLimited === true; const isSystemDm = channel ? ChannelUtils.isSystemDmChannel(channel) : false; const isDM = channel?.type === ChannelTypes.DM; const isGroupDM = channel?.type === ChannelTypes.GROUP_DM; @@ -494,6 +496,8 @@ export const DMChannelView = observer(({channelId}: DMChannelViewProps) => { username={NicknameUtils.getNickname(recipient, null)} data-flx="channel.channel-view.dm-channel-view.blocked-user-barrier" /> + ) : isCurrentUserLimited && !isPersonalNotes ? ( + ) : isCurrentUserUnclaimed && isDM && !isPersonalNotes && !isGroupDM ? ( ) : ( diff --git a/fluxer_app/src/features/channel/components/channel_view/GuildChannelView.tsx b/fluxer_app/src/features/channel/components/channel_view/GuildChannelView.tsx index 787a611ae..ba09012bd 100644 --- a/fluxer_app/src/features/channel/components/channel_view/GuildChannelView.tsx +++ b/fluxer_app/src/features/channel/components/channel_view/GuildChannelView.tsx @@ -1,9 +1,9 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import { + AccountLimitedBarrier, AccountTooNewBarrier, AnnouncementFollowBarrier, - NoPhoneNumberBarrier, NotMemberLongEnoughBarrier, SendMessageDisabledBarrier, UnclaimedAccountBarrier, @@ -40,6 +40,7 @@ import {Button} from '@app/features/ui/button/Button'; import MobileLayout from '@app/features/ui/state/MobileLayout'; import {Tooltip} from '@app/features/ui/tooltip/Tooltip'; import {isPwaOnMobileOrTablet} from '@app/features/ui/utils/PwaUtils'; +import Users from '@app/features/user/state/Users'; import {CompactVoiceCallStreamHeaderInfo} from '@app/features/voice/components/CompactVoiceCallStreamHeaderInfo'; import {useVoiceCallFullscreenViewState} from '@app/features/voice/components/useVoiceCallAppFullscreen'; import {VoiceCallView} from '@app/features/voice/components/VoiceCallView'; @@ -389,9 +390,9 @@ export const GuildChannelView = observer(({channelId, guildId}: GuildChannelView data-flx="channel.channel-view.guild-channel-view.render-chat-area.not-member-long-enough-barrier" /> ); - case 'no_phone': + case 'account_limited': return ( - + ); case 'send_message_disabled': return ( @@ -408,6 +409,11 @@ export const GuildChannelView = observer(({channelId, guildId}: GuildChannelView ); } } + if (Users.currentUser?.accountLimited) { + return ( + + ); + } return passesVerification ? ( renderComposer(inputSuppressed) ) : ( diff --git a/fluxer_app/src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx b/fluxer_app/src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx index 5f505278b..c75003563 100644 --- a/fluxer_app/src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx +++ b/fluxer_app/src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx @@ -15,6 +15,7 @@ import {Logger} from '@app/features/platform/utils/AppLogger'; import {Button} from '@app/features/ui/button/Button'; import * as ToastCommands from '@app/features/ui/commands/ToastCommands'; import {Spinner} from '@app/features/ui/components/Spinner'; +import {handleAccountLimitedError} from '@app/features/user/utils/AccountLimitUtils'; import * as WebhookCommands from '@app/features/webhook/commands/WebhookCommands'; import {FollowedChannelListItem} from '@app/features/webhook/components/FollowedChannelListItem'; import {WebhookListItem} from '@app/features/webhook/components/WebhookListItem'; @@ -106,6 +107,7 @@ const ChannelWebhooksTab: React.FC<{channelId: string}> = observer(({channelId}) void WebhookCommands.fetchChannelWebhooks({guildId: guildId!, channelId}).catch(() => {}); } catch (error) { logger.error('Failed to create webhook', error); + if (handleAccountLimitedError(error)) return; showChannelErrorModal({ title: i18n._(FAILED_TO_CREATE_WEBHOOK_DESCRIPTOR), message: i18n._(TRY_AGAIN_IN_A_MOMENT_DESCRIPTOR), diff --git a/fluxer_app/src/features/devtools/state/DeveloperOptions.ts b/fluxer_app/src/features/devtools/state/DeveloperOptions.ts index df848c66a..518ab39a8 100644 --- a/fluxer_app/src/features/devtools/state/DeveloperOptions.ts +++ b/fluxer_app/src/features/devtools/state/DeveloperOptions.ts @@ -64,7 +64,7 @@ export type DeveloperOptionsState = Readonly<{ | 'unverified_email' | 'account_too_new' | 'not_member_long' - | 'no_phone' + | 'account_limited' | 'send_message_disabled'; mockBarrierTimeRemaining: number | null; mockMatureContentGateReason: 'none' | 'geo_restricted' | 'mature_content_check_required' | 'consent_required'; @@ -72,13 +72,6 @@ export type DeveloperOptionsState = Readonly<{ forceMatureMedia: boolean; mockInUK: boolean; mockGeoBlocked: boolean; - mockRequiredActionsOverlay: boolean; - mockRequiredActionsMode: 'email' | 'phone' | 'email_or_phone'; - mockRequiredActionsSelectedTab: 'email' | 'phone'; - mockRequiredActionsPhoneStep: 'phone' | 'code'; - mockRequiredActionsResending: boolean; - mockRequiredActionsResendOutcome: 'success' | 'rate_limited' | 'server_error'; - mockRequiredActionsReverify: boolean; forceNoSendMessages: boolean; forceNoAttachFiles: boolean; mockSlowmodeActive: boolean; @@ -146,7 +139,7 @@ class DeveloperOptions implements DeveloperOptionsState { | 'unverified_email' | 'account_too_new' | 'not_member_long' - | 'no_phone' + | 'account_limited' | 'send_message_disabled' = 'none'; mockBarrierTimeRemaining: number | null = null; mockMatureContentGateReason: 'none' | 'geo_restricted' | 'mature_content_check_required' | 'consent_required' = @@ -155,13 +148,6 @@ class DeveloperOptions implements DeveloperOptionsState { forceMatureMedia = false; mockInUK = false; mockGeoBlocked = false; - mockRequiredActionsOverlay = false; - mockRequiredActionsMode: 'email' | 'phone' | 'email_or_phone' = 'email'; - mockRequiredActionsSelectedTab: 'email' | 'phone' = 'email'; - mockRequiredActionsPhoneStep: 'phone' | 'code' = 'phone'; - mockRequiredActionsResending = false; - mockRequiredActionsResendOutcome: 'success' | 'rate_limited' | 'server_error' = 'success'; - mockRequiredActionsReverify = false; forceNoSendMessages = false; forceNoAttachFiles = false; mockSlowmodeActive = false; @@ -232,13 +218,6 @@ class DeveloperOptions implements DeveloperOptionsState { 'forceMatureMedia', 'mockInUK', 'mockGeoBlocked', - 'mockRequiredActionsOverlay', - 'mockRequiredActionsMode', - 'mockRequiredActionsSelectedTab', - 'mockRequiredActionsPhoneStep', - 'mockRequiredActionsResending', - 'mockRequiredActionsResendOutcome', - 'mockRequiredActionsReverify', 'forceNoSendMessages', 'forceNoAttachFiles', 'mockSlowmodeActive', diff --git a/fluxer_app/src/features/discovery/commands/DiscoveryJoinCommands.tsx b/fluxer_app/src/features/discovery/commands/DiscoveryJoinCommands.tsx index e0a0a306e..8d3a76f36 100644 --- a/fluxer_app/src/features/discovery/commands/DiscoveryJoinCommands.tsx +++ b/fluxer_app/src/features/discovery/commands/DiscoveryJoinCommands.tsx @@ -4,10 +4,10 @@ import i18n from '@app/app/I18n'; import {GenericErrorModal} from '@app/features/app/components/alerts/GenericErrorModal'; import * as DiscoveryCommands from '@app/features/discovery/commands/DiscoveryCommands'; import * as NavigationCommands from '@app/features/navigation/commands/NavigationCommands'; -import {failureCode} from '@app/features/platform/utils/ResponseInspection'; +import {failureCode, failureMessage} from '@app/features/platform/utils/ResponseInspection'; import * as ModalCommands from '@app/features/ui/commands/ModalCommands'; import {modal} from '@app/features/ui/commands/ModalCommands'; -import Users from '@app/features/user/state/Users'; +import {showAccountLimitedModal} from '@app/features/user/utils/AccountLimitUtils'; import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; import {msg} from '@lingui/core/macro'; @@ -102,7 +102,8 @@ function resolveJoinGuildErrorContent(code: string | undefined): {title: string; function showJoinGuildErrorModal(error: unknown): void { const code = failureCode(error); - if (code === APIErrorCodes.ACCOUNT_SUSPICIOUS_ACTIVITY && (Users.currentUser?.requiredActions?.length ?? 0) > 0) { + if (code === APIErrorCodes.ACCOUNT_LIMITED) { + showAccountLimitedModal(failureMessage(error)); return; } const {title, message} = resolveJoinGuildErrorContent(code); diff --git a/fluxer_app/src/features/gateway/events/GatewayReady.ts b/fluxer_app/src/features/gateway/events/GatewayReady.ts index b9a2cc004..9aebaef44 100644 --- a/fluxer_app/src/features/gateway/events/GatewayReady.ts +++ b/fluxer_app/src/features/gateway/events/GatewayReady.ts @@ -39,7 +39,6 @@ import Presence from '@app/features/presence/state/Presence'; import ReadStates, {type GatewayReadState} from '@app/features/read_state/state/ReadStates'; import type {RelationshipWire} from '@app/features/relationship/models/Relationship'; import Relationships from '@app/features/relationship/state/Relationships'; -import CountryCode from '@app/features/user/state/CountryCode'; import UserGuildSettings, {type GatewayGuildSettings} from '@app/features/user/state/UserGuildSettings'; import UserNote from '@app/features/user/state/UserNote'; import UserPinnedDM from '@app/features/user/state/UserPinnedDM'; @@ -111,9 +110,6 @@ function handleReadyInternal(data: ReadyPayload, context: GatewayHandlerContext) if (data.notes) { UserNote.loadNotes(data.notes); } - if (data.country_code) { - CountryCode.setCountryCode(data.country_code); - } context.setConnectionGeoip({ country_code: data.country_code, latitude: data.latitude, diff --git a/fluxer_app/src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx b/fluxer_app/src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx index 9bcf3bf2d..b2aad6f94 100644 --- a/fluxer_app/src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx +++ b/fluxer_app/src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx @@ -1,7 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later import {useFormSubmit} from '@app/features/app/hooks/useFormSubmit'; -import RuntimeConfig from '@app/features/app/state/RuntimeConfig'; import * as GuildCommands from '@app/features/guild/commands/GuildCommands'; import styles from '@app/features/guild/components/modals/guild_tabs/GuildModerationTab.module.css'; import Guilds from '@app/features/guild/state/Guilds'; @@ -82,15 +81,6 @@ const VERIFICATION_LEVEL_HIGH_DESCRIPTION_DESCRIPTOR = msg({ comment: 'Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option.', }); -const VERIFICATION_LEVEL_VERY_HIGH_NAME_DESCRIPTOR = msg({ - message: 'Very high', - comment: - 'Member verification level option in the community moderation settings tab. Short standalone severity label.', -}); -const VERIFICATION_LEVEL_VERY_HIGH_DESCRIPTION_DESCRIPTOR = msg({ - message: 'Requires a verified phone number.', - comment: 'Helper text for the "Very high" member verification level option in the community moderation settings tab.', -}); const MEMBER_VERIFICATION_LEVEL_ARIA_DESCRIPTOR = msg({ message: 'Member verification level', comment: 'Accessible label for the member verification level radio group in the community moderation settings tab.', @@ -177,7 +167,6 @@ const GuildModerationTab: React.FC<{guildId: string}> = observer(({guildId}) => const canManageGuild = Permission.can(Permissions.MANAGE_GUILD, {guildId}); const isGuildOwner = guild?.ownerId === currentUser?.id; const isDiscoverable = guild?.features.has(GuildFeatures.DISCOVERABLE) ?? false; - const phoneVerificationEnabled = RuntimeConfig.phoneVerificationEnabled; const remoteValues: FormInputs = { verification_level: guild?.verificationLevel ?? GuildVerificationLevel.NONE, mfa_level: guild?.mfaLevel ?? GuildMFALevel.NONE, @@ -260,7 +249,7 @@ const GuildModerationTab: React.FC<{guildId: string}> = observer(({guildId}) => } return; }; - const allVerificationLevelOptions: ReadonlyArray> = [ + const verificationLevelOptions: ReadonlyArray> = [ { value: GuildVerificationLevel.NONE, name: i18n._(VERIFICATION_LEVEL_NONE_NAME_DESCRIPTOR), @@ -282,15 +271,7 @@ const GuildModerationTab: React.FC<{guildId: string}> = observer(({guildId}) => name: colorizeLabel(i18n._(VERIFICATION_LEVEL_HIGH_NAME_DESCRIPTOR), '#f97316'), desc: i18n._(VERIFICATION_LEVEL_HIGH_DESCRIPTION_DESCRIPTOR), }, - { - value: GuildVerificationLevel.VERY_HIGH, - name: colorizeLabel(i18n._(VERIFICATION_LEVEL_VERY_HIGH_NAME_DESCRIPTOR), '#ef4444'), - desc: i18n._(VERIFICATION_LEVEL_VERY_HIGH_DESCRIPTION_DESCRIPTOR), - }, ]; - const verificationLevelOptions = phoneVerificationEnabled - ? allVerificationLevelOptions - : allVerificationLevelOptions.filter((option) => option.value !== GuildVerificationLevel.VERY_HIGH); const matureContentOptions: ReadonlyArray> = [ {value: 'on', label: i18n._(MATURE_CONTENT_ON_DESCRIPTOR)}, {value: 'off', label: i18n._(MATURE_CONTENT_OFF_DESCRIPTOR)}, @@ -329,11 +310,7 @@ const GuildModerationTab: React.FC<{guildId: string}> = observer(({guildId}) => control={form.control} render={({field}) => ( 0) { return {canAccess: true}; } - if (verificationLevel === GuildVerificationLevel.VERY_HIGH) { - if (!user.hasVerifiedPhone) { - return {canAccess: false, reason: VerificationFailureReason.NO_PHONE_NUMBER}; - } - return {canAccess: true}; - } if (!user.isClaimed()) { return {canAccess: false, reason: VerificationFailureReason.UNCLAIMED_ACCOUNT}; } diff --git a/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts b/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts index 7dc5f2ee5..0f81a1e1d 100644 --- a/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts +++ b/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts @@ -241,7 +241,7 @@ export const GUILD_STICKER_CLONING_STOPPED_ROW = msg({ export const GUILD_VERIFICATION_LEVEL_CHANGED_ROW = msg({ message: 'Changed the verification level from {oldLevel} to {newLevel}', comment: - 'Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high.', + 'Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High.', }); export const GUILD_EXPLICIT_CONTENT_FILTER_CHANGED_ROW = msg({ message: 'Changed the explicit content filter from {oldFilter} to {newFilter}', diff --git a/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildPresentation.ts b/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildPresentation.ts index 9676ad586..c22747114 100644 --- a/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildPresentation.ts +++ b/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildPresentation.ts @@ -84,7 +84,6 @@ import { VERIFICATION_LEVEL_LOW_LABEL, VERIFICATION_LEVEL_MEDIUM_LABEL, VERIFICATION_LEVEL_NONE_LABEL, - VERIFICATION_LEVEL_VERY_HIGH_LABEL, } from '@app/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages'; import { actorPlaceholder, @@ -162,12 +161,13 @@ const DEFAULT_NOTIFICATIONS_LABELS: ReadonlyMap = new [MessageNotifications.ALL_MESSAGES, DEFAULT_NOTIFICATIONS_ALL_MESSAGES_LABEL], [MessageNotifications.ONLY_MENTIONS, DEFAULT_NOTIFICATIONS_MENTIONS_ONLY_LABEL], ]); +const RETIRED_TOP_VERIFICATION_LEVEL = 4; const VERIFICATION_LEVEL_LABELS: ReadonlyMap = new Map([ [GuildVerificationLevel.NONE, VERIFICATION_LEVEL_NONE_LABEL], [GuildVerificationLevel.LOW, VERIFICATION_LEVEL_LOW_LABEL], [GuildVerificationLevel.MEDIUM, VERIFICATION_LEVEL_MEDIUM_LABEL], [GuildVerificationLevel.HIGH, VERIFICATION_LEVEL_HIGH_LABEL], - [GuildVerificationLevel.VERY_HIGH, VERIFICATION_LEVEL_VERY_HIGH_LABEL], + [RETIRED_TOP_VERIFICATION_LEVEL, VERIFICATION_LEVEL_HIGH_LABEL], ]); const EXPLICIT_CONTENT_FILTER_LABELS: ReadonlyMap = new Map([ [GuildExplicitContentFilterTypes.DISABLED, EXPLICIT_CONTENT_FILTER_OFF_LABEL], diff --git a/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts b/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts index 113272b22..c43df40b5 100644 --- a/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts +++ b/fluxer_app/src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts @@ -66,10 +66,6 @@ export const VERIFICATION_LEVEL_HIGH_LABEL = msg({ message: 'High', comment: 'Activity log value naming the high member verification level of a community.', }); -export const VERIFICATION_LEVEL_VERY_HIGH_LABEL = msg({ - message: 'Very high', - comment: 'Activity log value naming the highest member verification level of a community.', -}); export const EXPLICIT_CONTENT_FILTER_OFF_LABEL = msg({ message: 'Off', comment: 'Activity log value meaning the explicit content filter of a community is turned off.', diff --git a/fluxer_app/src/features/i18n/locales/ar/messages.po b/fluxer_app/src/features/i18n/locales/ar/messages.po index 475e9d6c7..fa5951730 100644 --- a/fluxer_app/src/features/i18n/locales/ar/messages.po +++ b/fluxer_app/src/features/i18n/locales/ar/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, zero {# تفاعل} one {تفاعل واحد} two {تف msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, zero {# متفاعل} one {متفاعل واحد} two {متفاعلان} few {# متفاعلين} many {# متفاعلًا} other {# متفاعل}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, zero {# ثانية} one {ثانية واحدة} two {ثانيتان} few {# ثوانٍ} many {# ثانية} other {# ثانية}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} في {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, zero {تنتهي صلاحية رابط الدعوة خلال # ثانية.} one {تنتهي صلاحية رابط الدعوة خلال ثانية واحدة.} two {تنتهي صلاحية رابط الدعوة خلال ثانيتين.} few {تنتهي صلاحية رابط الدعوة خلال # ثوانٍ.} many {تنتهي صلاحية رابط الدعوة خلال # ثانية.} other {تنتهي صلاحية رابط الدعوة خلال # ثانية.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "تم تحديد {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "دقيقة واحدة" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 ساعة" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 شهرًا (سنة واحدة)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "النسخ الاحتياطي للمصادقة الثنائية" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "اشتراط المصادقة الثنائية" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 أعضاء (يكتبون)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 أشهر" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 ساعات" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 أشهر" @@ -2575,11 +2575,6 @@ msgstr "دقيقة واحدة" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "يتوفر إصدار جديد لسطح المكتب. نزّل برنامج التثبيت، ثم شغّله لتحديث {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "تم إرسال رمز تحقق جديد." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "بيانات الحساب" msgid "Account exists to spam, scam, or abuse the platform." msgstr "الحساب موجود لإرسال الرسائل المزعجة أو الاحتيال أو إساءة استخدام المنصة." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "الحساب محدود" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "حالة الحساب" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "الحساب جديد جدًا" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "يلزم التحقق من الحساب" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "إضافة بوت إلى مجتمع بالأذونات المطلوبة" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "إضافة تعليق (اختياري)" @@ -3054,8 +3052,10 @@ msgstr "أضف موضوعًا إلى هذه القناة" msgid "Add a word…" msgstr "إضافة كلمة…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "أضف بريدًا إلكترونيًا صالحًا" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "أضف حسابًا للمتابعة." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "أضف بريدًا إلكترونيًا وكلمة مرور إلى حسابك أولًا." @@ -3424,11 +3424,6 @@ msgstr "تاريخ الإضافة: {createdDate} • آخر استخدام: {las msgid "Additional comments (optional)" msgstr "تعليقات إضافية (اختياري)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "مطلوب تحقق إضافي" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "كل اللغات" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "الإلغاء مجدول بالفعل" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "الإبلاغ عن هذه الرسالة إلى فريق السلامة في {productName} أيضًا" @@ -4713,11 +4708,6 @@ msgstr "طلب التأكيد قبل بدء المكالمات" msgid "Ask for a passkey after your password when you sign in" msgstr "يُطلب منك مفتاح مرور بعد كلمة المرور عند تسجيل الدخول" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "اطلب من مسؤولي هذا المثيل مراجعة حسابك. هذا المثيل يعمل بشكل مستقل، ومسؤولوه فقط هم من يمكنهم تغيير حسابك." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "إزالة معلمات التتبع تلقائيًا (مثل utm_source msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "إزالة معلمات التتبع تلقائيًا من الروابط في الرسائل التي ترسلها" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "فحص الرسائل تلقائيًا بحثًا عن المحتوى الصريح في القنوات غير المصنفة للبالغين." @@ -5359,8 +5349,6 @@ msgstr "غير متواجد حاليًا" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "رجوع" @@ -6506,11 +6494,6 @@ msgstr "يتم تحديد الكاميرات وأجهزة الالتقاط ال msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "الكاميرات متوقفة عندما يتجاوز عدد المشاركين {voiceChannelCameraUserLimit}" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "لا يمكنك الوصول إلى هذا البريد الإلكتروني؟" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "لا يمكن تحميل الملفات هنا" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "لا يمكن تحميل الملفات هنا" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "تغيير البريد الإلكتروني" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "تغيير الرمز التعبيري" @@ -7201,7 +7184,7 @@ msgstr "تم تغيير الحد الأقصى للمستخدمين من {oldCoun msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "تم تغيير عنوان URL المخصص من {oldCode} إلى {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "تم تغيير مستوى التحقق من {oldLevel} إلى {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "القناة أو الفئة" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "تجاوزات أذونات القناة" @@ -7509,8 +7492,6 @@ msgstr "تحقق من اتصالك وحاول مرة أخرى." msgid "Check your connection, then try again." msgstr "تحقق من اتصالك، ثم حاول مرة أخرى." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "اختر شاشة من منتقي النظام" msgid "Choose a GIF" msgstr "اختر صورة GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "اختر طريقة" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "اختر كلمة مرور جديدة." @@ -7680,8 +7656,8 @@ msgstr "اختر إجراءً." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "اختر رمزًا تعبيريًا" @@ -7749,11 +7725,6 @@ msgstr "اختر طريقة عمل مثيلك" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "اختر إحدى الطرق أدناه لإثبات ملكية النطاق. تحتاج إلى إكمال طريقة واحدة فقط." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "اختر طريقة تحقق واحدة. أي طريقة منهما تكفي لإتمام هذا التحقق." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "اختر ما يمكن أن يفعله {clientLabel} في مجتمعك. msgid "Choose what friends see in their active now panel" msgstr "اختر ما يراه أصدقاؤك في لوحة \"نشط الآن\"" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "اختر ما يجب أن يستوفيه الأعضاء قبل أن يتمكنوا من النشر أو مراسلة أعضاء المجتمع مباشرة." @@ -8030,8 +8001,8 @@ msgstr "ينقي صوت الميكروفون لضمان وضوح الكلام." msgid "Clear" msgstr "مسح" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "مسح الحالة بعد" @@ -8053,7 +8024,7 @@ msgstr "مسح جميع نماذج المرفقات" msgid "Clear all token overrides" msgstr "مسح جميع تجاوزات رموز السمات" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "مسح نماذج المرفقات" @@ -8066,14 +8037,14 @@ msgstr "مسح الأمر" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "مسح الحالة المخصصة" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "هل تريد مسح جميع التفاعلات على هذه الرسالة؟" @@ -8124,7 +8095,7 @@ msgstr "مسح حقل البحث" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "سمة الفحم" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "الأوامر" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "التعليقات معطّلة لأن الوضع البطيء مفعّل في قناة واحدة أو أكثر من القنوات المحددة. سيحظر الوضع البطيء التعليق مباشرةً بعد إعادة التوجيه." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "التعليقات معطّلة لأن الوضع البطيء مفعّل في {forwardChannelDisplayName}. سيحظر الوضع البطيء التعليق مباشرةً بعد إعادة التوجيه." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "التعليقات غير متاحة عندما يكون الوضع البطيء مفعّلًا." @@ -8670,11 +8639,11 @@ msgstr "المجتمعات" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "يتم إخفاء المجتمعات والقنوات التي لا يمكنك فيها إدارة خطافات الويب." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "المجتمعات المدرجة في الاكتشاف ملزمة بفحص رسائل جميع الأعضاء. لا يمكن تغيير هذا الإعداد أثناء تفعيل الاكتشاف." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "تتطلب المجتمعات المدرجة في الاكتشاف التحقق من البريد الإلكتروني على الأقل. لا يمكن اختيار \"بلا\" أثناء تفعيل الاكتشاف." @@ -8827,7 +8796,7 @@ msgstr "اسم المجتمع" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "الاسم المستعار في المجتمع" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "الملف الشخصي في المجتمع" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "تم تحديث الملف الشخصي في المجتمع" @@ -8907,7 +8876,7 @@ msgstr "مستوى شارة الرسائل غير المقروءة في المج #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "تم تحديث المجتمع" @@ -8952,11 +8921,6 @@ msgstr "مقارنة" msgid "Complete mature content check" msgstr "إكمال التحقق من المحتوى للبالغين" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "أكمل أحد مسارات التحقق أدناه لمتابعة استخدام {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "إتمام الدفع" msgid "Complete the mature content check to unlock mature media." msgstr "أكمل التحقق من المحتوى للبالغين لفتح الوسائط المخصصة للبالغين." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "أكمل خطوات التحقق المطلوبة من البريد الإلكتروني والهاتف أدناه لمتابعة استخدام {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "أكمل عملية التحقق المطلوبة لمتابعة استخدام {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "إعداد شارة ملفك الشخصي" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "تمت إعادة ترتيب الاتصالات" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "الموافقة مطلوبة" @@ -9349,16 +9304,6 @@ msgstr "أنشئ رابط تفويض مع النطاقات والأذونات." msgid "Contact" msgstr "جهة اتصال" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "التواصل مع الدعم" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "اتصل بمسؤولي هذا المثيل للمساعدة." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "صانع محتوى" msgid "Content filter" msgstr "فلتر المحتوى" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "فلترة المحتوى" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "نوع المحتوى" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "بوابات سلامة المحتوى" @@ -9416,12 +9361,10 @@ msgstr "يمكن فتح قوائم السياق بالنقر بزر الفأرة #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "التحكم في سلوك مؤشر الرسائل غير المقروء msgid "Control which chat updates are announced by assistive technology." msgstr "التحكم في تحديثات الدردشة التي تعلن عنها التقنيات المساعدة." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "المحادثة غير موجودة" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "تعذر إضافة العلامة" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "تعذر إضافة هذا الصديق إلى المجموعة. الرجاء المحاولة مرة أخرى." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "تعذّر الإضافة إلى المجموعة" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "تعذر إنشاء رابط للمظهر" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "تعذّر إنشاء رابط الدعوة" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "تعذر إنهاء فترة السماح الخاصة بك" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "تعذر إنشاء رابط دعوة. يرجى المحاولة مرة أخرى." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "تعذر معالجة الصورة" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "تعذر نشر هذه الرسالة" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "تعذر الانضمام إلى مجتمع Visionary مرة أخرى" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "تعذّرت إزالة صوت الدخول" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "تعذر حفظ إعدادات القناة" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "تعذّر حفظ صوت الدخول" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "تعذر سحب الطلب" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "مؤقت العد التنازلي" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "البلد" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "إنشاء حساب المسؤول" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "إنشاء محادثة جماعية مع {addableCount, plural, zero {# مستلم متبقٍ} one {مستلم واحد متبقٍ} two {مستلمَين متبقيَين} few {# مستلمين متبقين} many {# مستلمًا متبقيًا} other {# مستلم متبقٍ}} وتخطي الآخرين؟" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "إنشاء ويب هوك" @@ -10948,7 +10884,7 @@ msgstr "رمز تعبيري مخصص {emojiName} من مجتمع" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "أصوات الدخول المخصصة غير مفعّلة في هذا المثيل." @@ -11108,7 +11044,7 @@ msgstr "معالجة صوتية مخصصة" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "نص تحذير مخصص" @@ -11530,11 +11466,6 @@ msgstr "محرك البحث الافتراضي" msgid "Default shortcuts" msgstr "الاختصارات الافتراضية" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "علامة التبويب الافتراضية" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "ديلاوير" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "حذف هذه الرسالة" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "هل تريد حذف هذه الرسالة؟ لا يمكن التراجع عن هذا الإجراء." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "حذف هذه الرسالة؟ لا يمكن التراجع عن هذا الإجراء. ستتم إزالة هذه الرسالة أيضًا من كل مجتمع يتابع هذه القناة." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "وضع المطور" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "خيار المطور" @@ -12299,7 +12230,7 @@ msgstr "إدخال مباشر" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "وضع العرض" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "اسم العرض" @@ -12858,7 +12789,7 @@ msgstr "هل تريد الانضمام إلى {communityName}؟" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "يا دكتور، أنا من المستقبل. جئت إلى هنا بآلة زمن اخترعتها أنت. والآن، أحتاج مساعدتك للعودة إلى عام 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "تعديل التوقيت المحلي للملف الشخصي" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "تعديل الرسالة المنشورة؟" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "تعديل رسائلك أعلاه أو أدناه" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "عدّل مظهر ملفك الشخصي وشاهد معاينة مباشرة" @@ -13590,10 +13521,8 @@ msgstr "مؤهل لاسترداد المبلغ حتى {windowEndsOn}. سيؤدي msgid "Email" msgstr "البريد الإلكتروني" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "عنوان البريد الإلكتروني مطلوب." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "تم تغيير البريد الإلكتروني" @@ -13616,49 +13547,17 @@ msgstr "تم تغيير البريد الإلكتروني" msgid "Email delivery" msgstr "إرسال البريد الإلكتروني" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "البريد الإلكتروني أو الهاتف" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "يلزم إعادة التحقق من البريد الإلكتروني أو الهاتف" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "يلزم إعادة التحقق من البريد الإلكتروني" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "البريد الإلكتروني غير متاح" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "تحديث البريد الإلكتروني غير متاح حاليًا. حاول مرة أخرى لاحقًا أو اتصل بالدعم." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "يلزم تحديث البريد الإلكتروني" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "راسلنا عبر البريد الإلكتروني وسيقوم شخص بمراجعة حسابك. أخبرنا أنك لا تستطيع التحقق عبر الرسائل القصيرة وسنتولى الأمر. الردود تأتي عبر البريد الإلكتروني، لذا فهذه العملية ليست فورية." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "شريط تذكير التحقق من البريد الإلكتروني" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "يلزم التحقق من البريد الإلكتروني" @@ -13675,6 +13574,10 @@ msgstr "تجاوز التحقق من البريد الإلكتروني" msgid "Email verified successfully" msgstr "تم التحقق من البريد الإلكتروني بنجاح" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "لا يتم تسليم رسائل البريد الإلكتروني إلى عنوانك الحالي. أدخل بريدًا إلكترونيًا جديدًا وسنرسل رمزًا إليه." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "التضمينات" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "تم إخفاء التضمينات" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "تم إظهار التضمينات" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "تفعيل تشغيل رسائل /tts صوتيًا" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "فعّل المصادقة الثنائية (2FA) على حسابك لتغيير هذا الإعداد" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "أدخل عنوان URL أو رمز قالب {theOtherPlatform} صالحًا." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "أدخل عنوان بريد إلكتروني صالحًا." @@ -14298,33 +14199,11 @@ msgstr "أدخل عنوان بريد إلكتروني صالحًا." msgid "Enter a valid message link." msgstr "أدخل رابط رسالة صالحًا." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "أدخل رقم هاتف جوال صالحًا." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "أدخل رقم هاتف صالحًا" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "أدخل اسم مستخدم صالحًا ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "أدخل بريدًا إلكترونيًا يمكنك الوصول إليه. سنرسل رمزًا إليه." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "أدخل الرمز" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "دخول وضع ملء الشاشة" msgid "Enter gift code…" msgstr "أدخل رمز الهدية…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "أدخل بريدًا إلكترونيًا جديدًا" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "أدخل أحد رموزك الاحتياطية إذا لم تتمكن msgid "Enter one of your backup codes." msgstr "أدخل أحد رموزك الاحتياطية." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "أدخل رقم الهاتف" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "أدخل الرمز المكون من {digitCount} أرقام من تط msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "أدخل الرمز المكون من {digitCount} أرقام من تطبيق المصادقة الخاص بك." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "أدخل الرمز المكون من {digitCount} أرقام الذي تم إرساله إلى {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "أدخل الرمز المكون من {MFA_CODE_DIGIT_COUNT} أرقام الذي تم إرساله إلى {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "أدخل الرمز" @@ -14408,11 +14267,6 @@ msgstr "أدخل الرمز قبل المتابعة." msgid "Enter the code from your authenticator app." msgstr "أدخل الرمز من تطبيق المصادقة الخاص بك." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "أدخل الرمز الذي تم إرساله إلى {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "أدخل الرمز المُرسل إلى بريدك الإلكتروني الحالي." @@ -14426,6 +14280,7 @@ msgstr "أدخل الرمز الذي أُرسل إلى بريدك الإلكتر msgid "Enter the code shown in the app to continue." msgstr "أدخل الرمز المعروض في التطبيق للمتابعة." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "أدخل الرمز الذي أرسلناه إلى عنوان بريدك الإلكتروني الجديد." @@ -14434,11 +14289,6 @@ msgstr "أدخل الرمز الذي أرسلناه إلى عنوان بريدك msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "أدخل الرمز الذي أرسلناه إلى بريدك الإلكتروني للتحقق منه. سيتم تعيين كلمة مرورك بمجرد تأكيد الرمز." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "أدخل رمز البريد الإلكتروني" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "أدخل رابط الدعوة للانضمام إلى مجتمع." @@ -14452,11 +14302,6 @@ msgstr "أدخل البريد الإلكتروني الجديد الذي تري msgid "Enter the PIN for your security key to continue." msgstr "أدخل رمز PIN لمفتاح الأمان للمتابعة." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "أدخل رمز الرسالة النصية القصيرة" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "أدخل هذا الرمز في متصفحك لإكمال تسجيل الدخول." @@ -14492,11 +14337,6 @@ msgstr "أدخل اسمك" msgid "Enter your password." msgstr "أدخل كلمة المرور الخاصة بك." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "أدخل رقم هاتفك" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "صوت الدخول" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "يجب أن تكون ملفات صوت الدخول بحجم {limit} أو أقل." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "مكتبة صوت الدخول ممتلئة" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "تمت إزالة صوت الدخول" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "تم حفظ صوت الدخول" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "أصوات الدخول" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "أصوات الدخول غير متاحة" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "تنتهي الصلاحية:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "إعداد فلتر المحتوى الصريح" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "تعذّر النسخ إلى الحافظة" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "تعذّر إنشاء الويب هوك" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "تعذّر تحميل عنوان URL المخصص. حاول مرة أخرى." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "تعذّر تحميل الويب هوك" @@ -15190,11 +15030,6 @@ msgstr "تعذّر إزالة عنوان URL المخصص. حاول مرة أخ msgid "Failed to resend code. Try again." msgstr "تعذّر إعادة إرسال الرمز. حاول مرة أخرى." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "تعذّر إعادة إرسال رمز التحقق. يُرجى المحاولة مرة أخرى لاحقًا." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "تعذّر إرسال الرسالة. اضغط مطولًا لعرض ا msgid "Failed to send report. Try again." msgstr "تعذّر إرسال البلاغ. حاول مرة أخرى." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "تعذّر إرسال رسالة التحقق الإلكترونية. يُرجى المحاولة مرة أخرى لاحقًا." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "تعذّر بدء التشغيل" @@ -15551,15 +15381,15 @@ msgstr "تصفية حسب المستخدم" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "تصفية رسائل الجميع" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "تصفية رسائل الأعضاء بدون أدوار" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "متابعة هذه القناة" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "تابع لكي تتلقى هذه الإعلانات في قناة من اختيارك." @@ -15773,7 +15603,7 @@ msgstr "القناة المتبعة {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "القنوات المتبعة" @@ -15857,11 +15687,6 @@ msgstr "للعيون البريطانية فقط..." msgid "For me" msgstr "لنفسي" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "لهذا التحقق، سترسل لنا رسالة نصية بدلاً من أن تستقبلها منا." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "حفاظًا على أمانك، أكّد هويتك للمتابعة." @@ -15905,7 +15730,7 @@ msgstr "فرض هيكل التحميل" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "فرض الوسائط المخصصة للبالغين" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "فرض النقل إلى قناة AFK" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "فرض عدم وجود إذن {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "فرض إظهار إخلاء مسؤولية عنوان URL المخصص" msgid "Force show voice connection" msgstr "فرض إظهار حالة الاتصال الصوتي" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "فرض تفعيل الوضع البطيء" @@ -16020,7 +15845,7 @@ msgstr "إعادة توجيه الوسائط" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "إعادة توجيه الرسالة" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "تراكب الحظر الجغرافي" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "مقيد جغرافيًا" @@ -16490,12 +16315,6 @@ msgstr "احصل على صورة رمزية متحركة وشعار، وشارة msgid "Get monthly" msgstr "احصل على شهري" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "الحصول على رمز جديد" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "رموز الهدايا" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "مدة الهدية" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "مخزون الهدايا" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "مسار مخزون الهدايا" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "لم يتم العثور على الهدية" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "تم استرداد الهدية" @@ -17030,7 +16849,7 @@ msgstr "محادثة جماعية" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "مرحباً {displayName}، طالب بحسابك لتجنب فقدان الوصول إليه." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "مرحباً {displayName}، يُرجى التحقق من عنوان بريدك الإلكتروني." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "مرحباً {displayName}، لا يمكننا إرسال البريد الإلكتروني إلى عنوانك. أضف بريدًا إلكترونيًا صالحًا للتحقق من حسابك." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "إخفاء مشاركة شاشتك؟" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "مرتفع" @@ -17755,11 +17579,6 @@ msgstr "أنا تلميح" msgid "I changed my mind" msgstr "غيرت رأيي" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "أحتاج إلى طريقة أخرى" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "إذا كان هذا البلاغ يتعلق برسالة معينة، msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "إذا كان هذا البلاغ يتعلق برسائل محددة، فبلّغ عن الرسالة الأكثر صلة بدلاً من ذلك. بلاغات الرسائل تمنح فريق السلامة لدينا أوضح سياق، وإضافة التفاصيل في التعليقات يمكن أن تساعدنا في مراجعتها بشكل أسرع. لا تتابع الإبلاغ عن المستخدم ككل إلا إذا كان الإبلاغ عن رسالة لا يكفي لتوضيح المشكلة الأوسع." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "إذا لم تتمكن من التحقق عبر الرسائل القصيرة" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "إذا لم تتمكن من استخدام أي طريقة تحقق، فاتصل بالدعم للحصول على المساعدة." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "حجم الواجهة" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "ملف صوتي غير صالح" @@ -18674,8 +18483,10 @@ msgstr "JSON غير صالح. الصق الاستجابة الكاملة من ع #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "الانضمام إلى مكالمة صوتية" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "الانضمام إلى القناة الصوتية" @@ -19613,16 +19424,6 @@ msgstr "اعرف المزيد عن Visionary" msgid "Leave" msgstr "مغادرة" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "هل تريد مغادرة {count, plural, zero {# مجتمع} one {مجتمع واحد} two {مجتمعين} few {# مجتمعات} many {# مجتمعًا} other {# مجتمع}} وتأجيل هذا التحقق؟" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "المغادرة والتأجيل" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "السماح لقارئات الشاشة بالإعلان عن الرسائل الجديدة فور وصولها إلى القناة المفتوحة. لا تتأثر أصوات الإشعارات." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "ترك الإشراف للمجتمع نفسه" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "المكتبة" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "المكتبة ممتلئة (الحد الأقصى {max} من الأصوات). احذف صوتًا قبل إضافة آخر." @@ -19812,7 +19613,7 @@ msgstr "المكتبة: {count} من {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "مدى الحياة" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "جارٍ التحميل..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "جارٍ التحميل…" @@ -20261,7 +20062,7 @@ msgstr "لويزيانا" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "منخفض" @@ -20416,7 +20217,7 @@ msgstr "إدارة ميزات المجتمع" msgid "Manage emoji & stickers" msgstr "إدارة الرموز التعبيرية والملصقات" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "إدارة الويب هوك الواردة التي يمكنها نشر الرسائل في هذه القناة." @@ -20514,7 +20315,7 @@ msgstr "وضع علامة على كل قنوات صندوق الوارد غير msgid "Mark as read" msgstr "وضع علامة كمقروءة" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "وضع علامة كمستردة" @@ -20676,14 +20477,14 @@ msgstr "مجتمع للبالغين" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "محتوى للبالغين" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "المحتوى للبالغين وتحذيرات المحتوى" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "الحد الأقصى لعمر المرفق (بالأيام)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "أقصى حماية للمساحات الملائمة للعائلة" @@ -20924,7 +20725,7 @@ msgstr "إيقاف الوسائط" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "تم إلغاء حظر العضو" msgid "Member updated" msgstr "تم تحديث العضو" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "التحقق من الأعضاء" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "مستوى التحقق من الأعضاء" @@ -21048,7 +20849,7 @@ msgstr "تتم إزالة الأعضاء عند عدم الاتصال بالإن msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "يمكن للأعضاء الذين لديهم إذن \"{pinMessagesPermissionLabel}\" تثبيت الرسائل للجميع." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "يمكن للأعضاء ذوي الأدوار تجاوز هذه الفحوصات. للمساحات العامة، نوصي بتمكين التحقق." @@ -21153,7 +20954,7 @@ msgstr "تظهر الإشارات إليك هنا لمدة {retentionDays} أي #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "الإشارات فقط" @@ -21292,7 +21093,7 @@ msgstr "إعدادات عرض الرسائل متاحة على سطح المكت msgid "Message editing" msgstr "تعديل الرسالة" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "تمت إعادة توجيه الرسالة" @@ -21341,7 +21142,7 @@ msgstr "أزرار إدخال الرسائل" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "الرسالة طويلة جدًا" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "معاينات الرسائل في قائمة الرسائل المباشرة" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "تم نشر الرسالة" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "ستظهر الرسائل المنشورة في #{sourceName} الآن في #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "يتم نسخ الرسائل المنشورة في قنوات الإعلانات هذه هنا." @@ -21504,7 +21305,7 @@ msgstr "يتم نسخ الرسائل المنشورة في قنوات الإعل msgid "Messages you can bookmark" msgstr "الرسائل التي يمكنك تمييزها" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "تم إيقاف المراسلة مؤقتًا في هذا المجتمع." @@ -21733,30 +21534,30 @@ msgstr "محاكاة انتهاء الصلاحية خلال يوم واحد" msgid "Mock expires in 7 days" msgstr "محاكاة انتهاء الصلاحية خلال 7 أيام" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "محاكاة طبقة الحظر الجغرافي" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "محاكاة مخزون الهدايا" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "محاكاة مكالمة واردة" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "محاكاة سبب حجب قناة المحتوى للبالغين" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "محاكاة سبب حجب وسائط المحتوى للبالغين" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "محاكاة الموقع الجغرافي للمملكة المتحدة" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "صور رمزية وهمية للمستخدمين بأحجام مختلفة وبكل تركيبات الحالة." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "نوع المحاكاة" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "محاكاة مسارات المنتج" @@ -22698,14 +22494,16 @@ msgstr "كتم المجتمعات الجديدة" msgid "New direct message" msgstr "رسالة مباشرة جديدة" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "بريد إلكتروني جديد" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "نموذج البريد الإلكتروني الجديد" @@ -22816,9 +22614,7 @@ msgstr "الأحدث أولاً" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "التالي" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "لا" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "لا يوجد إذن {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "لا يوجد إذن {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "لا توجد تغييرات لحفظها" msgid "No channels available" msgstr "لا توجد قنوات متاحة" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "لم يتم العثور على قنوات" @@ -23233,11 +23029,6 @@ msgstr "لم يتم العثور على أذونات" msgid "No personal words yet." msgstr "لا توجد كلمات في قاموسك الشخصي بعد." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "لا يوجد رقم هاتف" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "لا توجد نتائج" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "لم يتم العثور على نتائج" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "لم يتم العثور على مستخدمين" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "لا يلزم التحقق." @@ -23452,7 +23243,7 @@ msgstr "لا يلزم التحقق." msgid "No verification methods available" msgstr "لا توجد طرق تحقق متاحة" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "لا يوجد أي ويب هوك" @@ -23504,7 +23295,7 @@ msgstr "عدم التحويل" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "لا شيء" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "لا شيء (سلوك عادي)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "النرويجية" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "لم يمضِ وقت كافٍ على عضويتك" @@ -23798,9 +23589,9 @@ msgstr "أشياء" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "إيقاف" @@ -23848,7 +23639,7 @@ msgstr "الأقدم أولاً" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "تشغيل" @@ -23884,11 +23675,6 @@ msgstr "تعذّر قراءة أو تحميل مرفق واحد أو أكثر. msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "يتجاوز ملف واحد أو أكثر تحاول تحميله الحد الأقصى للحجم وهو {maxSizeFormatted} لكل ملف." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "خطوة تحقق سريعة" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "مكبرات الصوت فقط" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "يمكن لمالك المجتمع فقط تغيير هذا الإعداد" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "فتح الرمز التعبيري في المتصفح" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "فتح منتقي الرموز التعبيرية" @@ -24382,12 +24168,8 @@ msgstr "أيقونة فتح القائمة" msgid "Open message history threshold" msgstr "فتح حد سجل الرسائل" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "فتح التراكب" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "فتح القائمة المنسدلة" @@ -24485,11 +24267,6 @@ msgstr "افتح التطبيق الجديد. أنت مسجل الدخول با msgid "Open the shortcuts list for quick actions." msgstr "افتح قائمة الاختصارات للإجراءات السريعة." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "افتح رسالة التحقق في بريدك الإلكتروني واستخدم الرابط الموجود فيها. ستتحدّث هذه النافذة بعد فتح الرابط." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "فتح إعدادات الصوت والفيديو" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "افتح متصفحك، سجّل الدخول، ثم أدخل الرمز أدناه لربط حسابك." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "افتح رسائلك" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "افتح تطبيق {PRODUCT_NAME} القديم واختر \"ربط جهاز جديد\"، ثم أدخل الرمز أدناه." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "افتح تطبيق الرسائل على هاتفك وأنشئ رسالة نصية جديدة." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "افتح تطبيق الرسائل على هاتفك وابدأ رسالة نصية جديدة." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "تفاعل آخر…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "خدمة التحقق من أرقام الهواتف لدينا متوقفة حاليًا. المشكلة من جانبنا وليست في رقمك. انتظر بضع دقائق ثم جرّب الرقم نفسه مرة أخرى." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "التصيّد الاحتيالي أو الاحتيال أو الروابط الضارة أو الادعاءات الكاذبة التي يُحتمل أن تسبب ضررًا في العالم الحقيقي." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "الهاتف" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "رقم الهاتف" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "رقم الهاتف مطلوب" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "تم التحقق من رقم الهاتف" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "إعادة التحقق من الهاتف مطلوبة" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "خطوة الهاتف" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "التحقق من الهاتف غير متاح لهذا الحساب. استخدم طريقة أخرى أو اتصل بالدعم." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "التحقق من الهاتف مطلوب" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "اختر الرقم المكون من 4 أرقام بعد اسم الم msgid "Pick the appearance this administrator account should start with." msgstr "اختر المظهر الذي يجب أن يبدأ به حساب المسؤول هذا." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "اختر الطريقة التي يمكنك إكمالها الآن." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "صورة داخل صورة" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "تثبيت" @@ -25471,7 +25176,7 @@ msgstr "تثبيت المحادثة الجماعية" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "تثبيت أو إلغاء تثبيت أي رسالة." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "ثبّت هذه الرسالة في القناة ليراها الجميع." @@ -26227,18 +25932,18 @@ msgstr "لون الملف الشخصي" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "تخصيص الملف الشخصي" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "تخصيص الملف الشخصي لـ {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "نموذج تخصيص الملف الشخصي" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "نوع الملف الشخصي" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "تم تحديث الملف الشخصي" @@ -26340,7 +26045,7 @@ msgstr "السؤال عند توصيل أجهزة صوت جديدة" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "تنسيق الهجمات الجماعية" msgid "Rate" msgstr "السرعة" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "تجاوز الحد الأقصى للمعدل" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "JSON الخام للتضمين" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "هل تريد إزالة {userName} من أصدقائك؟" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "إزالة الكل" @@ -27290,7 +26990,7 @@ msgstr "هل تريد إزالة كل تفاعلات {emojiNameWithColons} من #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "إزالة جميع التفاعلات" @@ -27899,20 +27599,10 @@ msgstr "علامة المستخدم المُبلّغ عنه (اختياري)" msgid "Reposts: <0>{countLabel}" msgstr "إعادات النشر: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "اطلب رمزًا جديدًا أولاً." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "اطلب رابط إعادة تعيين جديد" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "اطلب رمز التحقق أولاً." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "الطلبات" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "اشتراط المصادقة الثنائية لإجراءات الإشراف" @@ -27958,7 +27648,7 @@ msgstr "اشتراط منح رمز التفويض في OAuth2" msgid "Require passkey" msgstr "طلب مفتاح المرور" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "يشترط على المشرفين تفعيل المصادقة الثنائية قبل أن يتمكنوا من الحظر أو الطرد أو فرض المهلة أو حذف الرسائل." @@ -27972,46 +27662,6 @@ msgstr "مطلوب" msgid "Required 2FA for moderation actions" msgstr "تم طلب المصادقة الثنائية لإجراءات الإشراف" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "علامة التبويب الافتراضية للإجراء المطلوب" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "سير عمل الإجراء المطلوب" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "خطوة الهاتف في الإجراء المطلوب" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "إعادة إرسال الإجراء المطلوب قيد التحميل" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "نتيجة إعادة إرسال الإجراء المطلوب" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "نص إعادة التحقق من الإجراء المطلوب" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "متغير الإجراء المطلوب" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "تراكب الإجراءات المطلوبة" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "يتطلب عنوان URI لإعادة التوجيه ورمز تفويض عند دعوة هذا البوت." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "يتطلب عنوان بريد إلكتروني مُوثّق، وحسابًا يبلغ عمره 5 دقائق على الأقل." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "يتطلب عنوان بريد إلكتروني مُوثّق." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "يتطلب رقم هاتف تم التحقق منه." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "يتطلب كل ما في المستوى المتوسط، بالإضافة إلى كونك عضوًا في المجتمع لمدة 10 دقائق على الأقل." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "إعادة الإرسال ({resendSecondsRemaining}ث)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "إعادة الإرسال ({secondsRemaining}ث)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "زر إعادة الإرسال قيد التحميل" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "إعادة إرسال الرمز" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "إعادة إرسال البريد الإلكتروني" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "نتيجة إعادة الإرسال" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "أُعيد الإرسال" @@ -28518,21 +28152,6 @@ msgstr "إظهار" msgid "Reveal spoiler" msgstr "إظهار المحتوى المخفي" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "أعد التحقق من بريدك الإلكتروني أو تحقق من هاتفك لمتابعة استخدام {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "أعد التحقق من بريدك الإلكتروني لمتابعة استخدام {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "أعد التحقق من رقم هاتفك لمتابعة استخدام {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "التشبع" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "معاينة التمرير في الفيديو" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "البحث في القنوات" msgid "Search communities" msgstr "البحث عن مجتمعات" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "البحث عن البلدان..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "البحث عن البلدان…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "اختر بلد إقامتك." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "اختر…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "إرسال" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "إرسال ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "إرسال بلاغ آخر" msgid "Send button" msgstr "زر الإرسال" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "إرسال الرمز" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "إرسال الرسائل" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "إرسال الرسائل معطّل" @@ -30151,32 +29759,11 @@ msgstr "إرسال الوسائط المحفوظة {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "إرسال رسائل تحويل النص إلى كلام باستخدام /tts. تُقرأ بصوت مسموع للأعضاء الذين فعّلوا تحويل النص إلى كلام." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "أرسل الرمز <0>{0} إلى <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "أرسل الرمز إلى رقم الهاتف أدناه." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "أرسل هذا الرمز" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "هل تريد إعادة هذه الرسالة المثبتة إلى الماضي؟" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "إرسال إلى" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "إرسال رسالة صوتية" msgid "Send:" msgstr "الإرسال:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "إرسال رسالة نصية قصيرة إلى رقم الهاتف هذا مكلف للغاية بالنسبة إلى {PRODUCT_NAME}، لذلك نحتاج منك أن ترسل لنا رسالة نصية قصيرة بدلًا من ذلك. نعلم أن هذا ليس مثاليًا. يمكنك أيضًا أن تطلب من مسؤولي هذا المثيل رفع هذا الشرط عن حسابك." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "إرسال رسالة نصية قصيرة إلى رقم الهاتف هذا مكلف للغاية بالنسبة إلى {PRODUCT_NAME}، لذلك نحتاج منك أن ترسل لنا رسالة نصية قصيرة بدلًا من ذلك. نعلم أن هذا ليس مثاليًا. يمكنك أيضًا التواصل مع <0>{SUPPORT_EMAIL} لنرفع هذا الشرط عن حسابك." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "إرسال تسلسلي" msgid "Serve the token file" msgstr "استضِف ملف الرمز المميّز" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "خطأ في الخدمة" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "تعيين اختصار مخصص لـ \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "تعيين الحالة المخصصة" @@ -30486,18 +30060,6 @@ msgstr "تم تعيين منطقة الصوت إلى {region}" msgid "Set the voice region to automatic" msgstr "تم تعيين منطقة الصوت إلى تلقائي" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "تأجيل هذا التحقق" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "هل تريد تأجيل هذا التحقق؟" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "تعيين الضمائر الخاصة بك" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "تعيين حالتك" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "تتوقف اختصارات لوحة المفاتيح مؤقتًا أثناء التسجيل." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "قصّر الرسالة وحاول مرة أخرى." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "إظهار أيقونة {productName} في علبة النظام أو شريط القائمة" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "إظهار تحذير محتوى" @@ -31672,7 +31234,7 @@ msgstr "الوضع البطيء · انتظر {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "الوضع البطيء نشط" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "الوضع البطيء مضبوط على {durationLabel}. انتظر قبل إرسال رسالة أخرى." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "المتبقي من الوضع البطيء" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "محاكاة الوضع البطيء" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "الوقت المتبقي للوضع البطيء" @@ -31807,11 +31369,6 @@ msgstr "التمرير السلس" msgid "Smoother video" msgstr "فيديو أكثر سلاسة" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "التحقق عبر الرسائل النصية غير متاح حاليًا. حاول مرة أخرى لاحقًا أو تواصل مع فريق الدعم." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "حدث خطأ أثناء إعداد هذا الملصق. جرّب ملفًا آخر أو أعد المحاولة بعد قليل." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "حدث خطأ أثناء النشر. حاول مرة أخرى بعد لحظة." @@ -32009,11 +31566,9 @@ msgstr "حدث خطأ ما. أعد تحميل الصفحة أو سجّل الد msgid "Something went wrong. Try again later." msgstr "حدث خطأ ما. يُرجى المحاولة مرة أخرى لاحقًا." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "حدث خطأ ما. يُرجى المحاولة مرة أخرى." @@ -32352,11 +31907,6 @@ msgstr "انتهت مهلة تسجيل الدخول الموحّد (SSO). حاو msgid "Staff controls" msgstr "عناصر تحكم الموظفين" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "قد تُطبَّق رسوم الرسائل النصية المعتادة لدى شركة الاتصالات." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "رسوم متحركة للنجمة" msgid "Starred channels" msgstr "القنوات المميزة بنجمة" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "نقل المشترك:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "الاشتراك" @@ -33051,14 +32599,12 @@ msgstr "سيناريوهات الاشتراك" msgid "Subtext" msgstr "نص فرعي" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "تم بنجاح" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "مقترح لمعظم المجتمعات" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "النظام والترحيب" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "إعلانات النظام من فريق {productName}. لا يمكنك الرد هنا." @@ -33765,11 +33311,6 @@ msgstr "تحديد النص" msgid "Text size" msgstr "حجم النص" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "أرسل لنا رسالة نصية من هاتفك" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "التايلاندية" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "شكرًا لمساعدتك في الحفاظ على أمان {productName}. سنراجع بلاغك في أقرب وقت ممكن." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "هذا الرمز غير صحيح. تحقق منه وحاول مرة أخرى." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "انتهت صلاحية هذا الرمز. اطلب رمزًا جديدًا." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "لم تكتمل العملية. ربما غادرت بعض المجتمعات بالفعل، ولا يزال حسابك مقفلًا. اضغط على \"تأجيل هذا التحقق\" مرة أخرى لإكمالها." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "لم تكتمل العملية. لم يتغير شيء. حاول مرة أخرى." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "لا يبدو هذا لونًا صالحًا. جرّب hex أو rgb() أ msgid "That doesn't look like a valid URL." msgstr "لا يبدو هذا رابطًا صالحًا." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "هذا البريد الإلكتروني مستخدم بالفعل." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "رفض التجاوز {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "الصفحة التي تبحث عنها غير موجودة أو تم نقلها." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "تم تأجيل التحقق من الهاتف. تبقّت خطوة واحدة للبريد الإلكتروني." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "لا توجد قنوات متاحة لإنشاء دعوة لها." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "لا توجد أدوار لتعيينها في هذا المجتمع حاليًا، ولكن يمكنك إنشاء دور جديد في <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "لم يتم إعداد أي ويب هوك لهذه القناة. أنشئ ويب هوك للسماح للتطبيقات الخارجية بنشر الرسائل." @@ -34273,7 +33784,7 @@ msgstr "حدث خطأ أثناء تحميل الدعوات. حاول مرة أخ msgid "There was an error loading the stickers. Try again." msgstr "حدث خطأ أثناء تحميل الملصقات. حاول مرة أخرى." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "حدث خطأ أثناء تحميل الويب هوك لهذه القناة. حاول مرة أخرى." @@ -34417,7 +33928,7 @@ msgstr "يمكن لهذه القناة نشر 10 رسائل متتالية، ث msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "يمكن لهذه القناة نشر 10 رسائل متتالية، ثم رسالة واحدة إضافية كل 6 دقائق. حاول مرة أخرى بعد بضع دقائق." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "هذه القناة لا تدعم الويب هوك." @@ -34550,12 +34061,12 @@ msgstr "لم يتم التحقق من هذا الاتصال." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "يحتوي هذا على محتوى حساس." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "هذه المحادثة لم تعد متاحة." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "عدد الأشخاص في هذه المجموعة كبير جدًا" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "هذه المجموعة ممتلئة. أزل شخصًا قبل إضافة المزيد من الأشخاص." @@ -34715,11 +34226,6 @@ msgstr "هذا ملصق مخصص من مجتمع." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "هذه قناة مقيدة بالعمر. لا يمكن إرسال التحديثات إلا إلى القنوات المقيدة بالعمر." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "هذا فحص لمكافحة الرسائل غير المرغوب فيها. رقم هاتفك غير مرتبط بحسابك." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "هذا معطّل" msgid "This is how messages appear" msgstr "هكذا تظهر الرسائل" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "هذا غير متاح في حسابك حاليًا. اطلب من مسؤولي هذا المثيل مراجعته." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "هذا غير متاح في حسابك حاليًا. راسل {supportEmail} وسيراجعه شخص من فريقنا." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "هذه ليست القناة التي تبحث عنها." @@ -34792,11 +34288,6 @@ msgstr "هذا هو آخر مفتاح مرور لديك، ومفاتيح الم msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "هذا هو آخر مفتاح مرور لديك. بمجرد حذفه، لن تتمكن من استخدام مفتاح مرور كعامل ثانٍ." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "هذا ليس رقم هاتف محمول، لذا لا يمكنه استقبال رسائلنا النصية. جرب رقم هاتف محمول، أو اتصل بالدعم إذا كنت تعتقد أن هذا خطأ." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "تم حذف هذه الرسالة بالفعل." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "تم نشر هذه الرسالة بالفعل" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "لم تعد هذه الرسالة موجودة." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "سيظهر هذا الاسم المستعار في هذا المجتمع فقط" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "يجب التحقق من هذا الرقم بإرسال رسالة نصية إلينا بدلًا من ذلك. ارجع وابدأ التحقق من الهاتف مرة أخرى للحصول على الرمز والرقم الذي سترسل إليه الرسالة." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "يتطلب هذا الرقم التحقق بإرسال رسالة نصية منك إلينا بدلًا من أن نرسل إليك رسالة SMS." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "السمع معطّل لدى هذا المشارك" msgid "This participant was deafened by moderators" msgstr "عطّل المشرفون السمع لدى هذا المشارك" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "لا يمكن استخدام رقم الهاتف هذا. جرّب رقم هاتف محمول آخر أو اتصل بالدعم." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "لقد تم استخدام رقم الهاتف هذا بالفعل. جرّب رقمًا آخر أو اتصل بالدعم." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "ليس لدى هذا المستخدم أي أدوار في هذا الم msgid "This user is already banned from the community." msgstr "هذا المستخدم محظور بالفعل من المجتمع." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "لم يعد هذا المستخدم متاحًا." @@ -35065,11 +34536,6 @@ msgstr "أضاف أحد مسؤولي المنصة هذا المستخدم إلى msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "انتهت صلاحية جلسة التحقق هذه. ارجع إلى {productName} وابدأ عملية الدفع مرة أخرى." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "انتهت صلاحية جلسة التحقق هذه. ابدأ من جديد." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "سيؤدي هذا إلى تسجيل خروجك، ومسح الملفات msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "سيؤدي هذا إلى الوثوق بجميع الروابط الخارجية وتجاوز التحذير لكل نطاق. سيتم استبدال نطاقاتك الموثوقة الحالية. هذا أقل أمانًا." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "سيتم تحديث هذه النافذة تلقائيًا بعد استلام رسالتك." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "شريط العنوان" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "منصة شريط العنوان" @@ -35470,18 +34931,11 @@ msgstr "درجات اللون" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "تحويل درجات ألوان صور HDR إلى النطاق القياسي لتقليل ذروة السطوع." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "محاولات كثيرة جدًا. انتظر قليلًا، ثم حاول مرة أخرى." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "عدد كبير جدًا من المجتمعات" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "عدد كبير جدًا من الطلبات. حاول مرة أخرى لاحقًا." @@ -36151,8 +35605,10 @@ msgstr "تعذّر تجهيز أي رموز تعبيرية للتحميل. حد #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "غير متاح" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "غير مصنف" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "حساب غير مُطالَب به" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "غير مرتبة" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "إلغاء التثبيت" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "إلغاء تثبيت الرسالة" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "هل تريد إلغاء تثبيت هذه الرسالة؟" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "تغييرات غير محفوظة" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "ملف صوتي غير مدعوم." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "حتى أُلغي الكتم" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "بريد إلكتروني غير مُتحقَّق منه" @@ -36958,12 +36414,7 @@ msgstr "حدّث {productName} لعرض هذه الرسالة." msgid "Update app" msgstr "تحديث التطبيق" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "تحديث البريد الإلكتروني" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "تحديث حالتي" @@ -37306,18 +36757,13 @@ msgstr "استخدم {url} حيث يجب إدراج رابط الصورة." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "استخدم نافذة مخصصة لتحديد تاريخ فاصل لسجل الرسائل للأعضاء الذين ليس لديهم إذن {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "استخدم عنوان بريد إلكتروني مختلفًا وتحقق منه باستخدام رمز." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "استخدام الحالة الفعلية" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "استخدام نوع Premium الفعلي" @@ -37335,16 +36781,6 @@ msgstr "استخدام طريقة بديلة" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "استخدم تطبيق مصادقة لإنشاء رموز للمصادقة الثنائية" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "استخدم بريدًا إلكترونيًا يمكنك الوصول إليه. سنرسل إليه رمزًا." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "استخدم بريدًا إلكترونيًا مختلفًا عن بريدك الحالي." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "استخدام السمة الداكنة في التطبيق بأكمل msgid "Use default" msgstr "استخدام القيمة الافتراضية" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "استخدام بريد إلكتروني مختلف" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "استخدام البريد الإلكتروني" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "هل تريد استخدام مفاتيح المرور للمصادقة msgid "Use passkeys to sign in without a password" msgstr "استخدم مفاتيح المرور لتسجيل الدخول بدون كلمة مرور" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "استخدام الهاتف" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "استخدام نص إعادة التحقق" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "نقل مستخدم إلى قناة أخرى" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "المستخدم غير موجود" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "التحقق" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "حواجز التحقق والعضوية" @@ -37970,15 +37387,8 @@ msgstr "رمز التحقق" msgid "Verification code sent" msgstr "تم إرسال رمز التحقق" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "تم إرسال رمز التحقق. تحقق من بريدك الإلكتروني الجديد." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "تم إرسال رسالة تحقق إلى بريدك الإلكتروني. تحقق من صندوق الوارد." @@ -38038,23 +37448,6 @@ msgstr "نموذج التحقق من الهوية" msgid "Verify it's you" msgstr "تأكيد هويتك" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "التحقق من الهاتف" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "التحقق من رقم الهاتف" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "نموذج التحقق من رقم الهاتف" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "تحقق من بريدك الإلكتروني قبل إضافة تطبيق مصادقة." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "تحقق من بريدك الإلكتروني قبل تغيير اسمك المستعار في المجتمع أو صورتك الرمزية أو لافتتك أو نبذتك الشخصية أو الضمائر أو لون التمييز." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "تحقق من بريدك الإلكتروني قبل تغيير اسم المستخدم أو اسم العرض أو الصورة الرمزية أو اللافتة أو النبذة الشخصية أو الضمائر أو المنطقة الزمنية أو خصوصية شارة {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "تحقق من بريدك الإلكتروني قبل تعديل ملفك الشخصي في هذا المجتمع. لا يزال بإمكانك معاينته هنا." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "تحقق من بريدك الإلكتروني قبل تعديل ملفك الشخصي. لا يزال بإمكانك معاينته هنا." @@ -38113,11 +37506,6 @@ msgstr "تحقق من بريدك الإلكتروني قبل إرسال طلبا msgid "Verify your email first" msgstr "تحقق من بريدك الإلكتروني أولاً" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "تحقق من بريدك الإلكتروني أو هاتفك لمتابعة استخدام {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "تحقق من بريدك الإلكتروني لشراء الهدايا. msgid "Verify your email to change your username" msgstr "تحقق من بريدك الإلكتروني لتغيير اسم المستخدم الخاص بك" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "تحقق من بريدك الإلكتروني لمتابعة استخدام {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "تحقق من بريدك الإلكتروني لتعديل ملفك الشخصي في هذا المجتمع" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "تحقق من بريدك الإلكتروني لتعديل ملفك الشخصي" @@ -38181,13 +37564,6 @@ msgstr "فيرمونت" msgid "Version" msgstr "الإصدار" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "مرتفع جدًا" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "رفع الصوت" msgid "Wait a moment before deleting more messages." msgstr "انتظر لحظة قبل حذف المزيد من الرسائل." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "انتظر لحظة. ستُغلَق هذه النافذة تلقائيًا بمجرد استلام رسالتك." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "الانتظار بين الرسائل. يمكن للأعضاء الذين لديهم إذن \"{bypassSlowmodePermissionLabel}\" تجاوز ذلك." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "انتظر هنا" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "جارٍ انتظار مفتاح المرور…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "في انتظار انتهاء الوضع البطيء في {forwardChannelDisplayName}." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "في انتظار انتهاء الوضع البطيء في قناة واحدة أو أكثر من القنوات المحددة." @@ -39115,16 +38482,6 @@ msgstr "تعذّر علينا قراءة هذه السمة. قد تكون تال msgid "We couldn't remove that account. Try again." msgstr "تعذّر علينا إزالة هذا الحساب. يُرجى المحاولة مرة أخرى." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "لم نتمكن من التحقق من هذا الرقم تلقائيًا. تواصل مع الدعم وسيراجع أحد أفراد الفريق حسابك." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "لا نرسل رسائل التحقق النصية إلى هذا البلد. جرب رقم هاتف محمول من بلد آخر، أو اتصل بالدعم." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "وجدنا اشتراكًا حاليًا في {premiumProductFullName} msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "لقد خفضنا سعر {premiumProductName} في البرازيل. أصبح الآن بسعر {monthlyPrice} شهريًا أو {yearlyPrice} سنويًا." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "نحتاج إلى خطوة تحقق واحدة قبل المتابعة. يساعد هذا في حماية الحسابات وإبعاد الرسائل غير المرغوب فيها عن {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "نحتاج إلى خطوتين للتحقق قبل أن تتمكن من المتابعة. سنعرض خطوة واحدة في كل مرة." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "نوصي بحفظ هذه الرموز الآن حتى لا تفقد الوصول إلى حسابك." @@ -39167,11 +38514,6 @@ msgstr "أرسلنا رمزًا إلى {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "سنقوم بملء {prefillEmail} مسبقًا بمجرد فتح تسجيل الدخول في المتصفح." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "سنرسل رمزًا عبر رسالة نصية قصيرة عند توفره." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "نود أن نمنحك أكثر من {PREMIUM_PRODUCT_NAME} مدى الحياة، لكن ذلك يكسر الزمكان. هل تريد إرسال الهدية إلى صديق بدلًا من ذلك؟" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "سنعالج هذا في أقرب وقت ممكن. ستتلقى رسالة بريد إلكتروني عندما يكون أرشيفك جاهزًا." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "سنستعيد بريدك الإلكتروني السابق، ونسجل خروج الجلسات القديمة، ونزيل أرقام الهواتف، ونعطل المصادقة متعددة العوامل (MFA)، ونؤمن حسابك بكلمة مرور جديدة." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "سنستعيد بريدك الإلكتروني السابق، وسجّل الخروج من الجلسات القديمة، ونعطّل المصادقة متعددة العوامل، ونؤمّن حسابك بكلمة مرور جديدة." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "سنرسل رمز تحقق إلى بريدك الإلكتروني قبل msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "سنرسل رمز تحقق إلى بريدك الإلكتروني قبل أن تتمكن من عرض رموزك الاحتياطية." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "سنرسل رمز SMS عند توفره. رقمك غير مرتبط بحسابك. نحتفظ فقط بعلامة مشفرة، بدون معرف مستخدم، لفترة محدودة." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "سنتحقق من بريدك الإلكتروني الحالي ثم من بريدك الإلكتروني الجديد باستخدام رموز لمرة واحدة." @@ -39307,7 +38645,7 @@ msgstr "ويب هوك {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "تم إنشاء الويب هوك" @@ -39331,7 +38669,7 @@ msgstr "تم تحديث الويب هوك" msgid "Webhook URL" msgstr "رابط الويب هوك" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "الويب هوك" @@ -39486,8 +38824,8 @@ msgstr "ما تشاركه لا يتم تحديثه" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "ماذا يحدث؟" @@ -39967,21 +39305,11 @@ msgstr "يمكنك إزالة إذن <0>{readMessageHistoryPermissionLabel} msgid "You can sign back in at any time." msgstr "يمكنك تسجيل الدخول مرة أخرى في أي وقت." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "لا يزال بإمكانك طلب مراجعة بشرية من مسؤولي هذا المثيل في أي وقت." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "لا يزال بإمكانك إنشاء حساب أو تسجيل الدخول. إذا أُعيد تمكين الدعوات لاحقًا، فيمكنك استخدام هذا الرابط نفسه للانضمام." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "لا يزال بإمكانك مراسلة {supportEmail} للمراجعة البشرية في أي وقت." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "يمكنك استخدام الروابط والرموز التعبيرية وتنسيق ماركداون." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "لا يمكنك إضافة تعبيرات هناك" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "لا يمكنك إضافة ردود فعل جديدة أثناء المهلة." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "لا يمكنك إضافة نفسك كصديق" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "لا يمكنك تغيير اسمك المستعار هنا" @@ -40094,7 +39422,7 @@ msgstr "لا يمكنك إرسال طلب صداقة لنفسك." msgid "You can't send messages in this channel." msgstr "لا يمكنك إرسال رسائل في هذه القناة." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "لا يمكنك إرسال رسائل في هذا المجتمع." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "ليس لديك إذن لتنفيذ هذا الإجراء على هذا العضو." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "ليس لديك إذن للانضمام إلى هذه القناة الصوتية" @@ -40243,7 +39571,7 @@ msgstr "ليس لديك إذن لإعادة تسمية هذا الرمز الت msgid "You have been banned from this community." msgstr "لقد تم حظرك من هذا المجتمع." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "لقد حظرت {username}. ألغِ حظره لإرسال الرسائل." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "لديك تغييرات غير محفوظة." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "لديك تغييرات غير محفوظة. احفظها أو أعد تعيينها قبل المغادرة." @@ -40270,7 +39598,7 @@ msgstr "لديك تغييرات غير محفوظة. احفظها أو أعد ت msgid "You haven't authorized any applications to access your account." msgstr "لم تسمح لأي تطبيقات بالوصول إلى حسابك." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "لم تكن عضوًا في هذا المجتمع لفترة كافية لإرسال الرسائل." @@ -40326,11 +39654,6 @@ msgstr "يجب الموافقة على شروط الخدمة لإنشاء حسا msgid "You must verify your email before sending a report." msgstr "يجب عليك التحقق من بريدك الإلكتروني قبل إرسال بلاغ." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "تحتاج إلى الوصول إلى بريدك الإلكتروني الحالي لتغييره من هنا. استخدم التحقق عبر الهاتف إذا كان متاحًا أو اتصل بالدعم." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "أنت بحاجة إلى إذن \"{manageRolesPermissionLabel}\" لتع msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "أنت بحاجة إلى إذن \"{manageRolesPermissionLabel}\" لتعديل هذه الأذونات." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "أنت بحاجة إلى إذن \"{manageWebhooksPermissionLabel}\" لعرض الويب هوك وتعديله في هذه القناة." @@ -40384,18 +39707,14 @@ msgstr "يجب عليك المطالبة بحسابك قبل أن تتمكن م msgid "You need to claim your account before you can start a direct message." msgstr "يجب المطالبة بحسابك قبل أن تتمكن من بدء رسالة مباشرة." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "يجب المطالبة بحسابك لإرسال رسائل مباشرة." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "يجب المطالبة بحسابك لإرسال الرسائل في هذا المجتمع." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "يجب عليك التحقق من رقم الهاتف لإرسال الرسائل في هذا المجتمع." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "يجب عليك التحقق من عنوان بريدك الإلكترو msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "يجب عليك التحقق من بريدك الإلكتروني قبل أن تتمكن من شراء {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "يجب عليك التحقق من بريدك الإلكتروني لإرسال الرسائل في هذا المجتمع." @@ -40424,11 +39743,6 @@ msgstr "يجب عليك التحقق من بريدك الإلكتروني لإر msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "لقد وصلت أنت أو أحد الأشخاص الذين تضيفهم إلى الحد الأقصى لعدد المحادثات الجماعية المفتوحة. غادر إحداها وحاول مرة أخرى." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "ستبقى في {ownedNames}. لا يمكن للمالك مغادرة مجتمعه." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "عطّل المشرفون سمعك" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "سيتم توجيهك إلى {redirectHostname} بعد التفويض." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "ستغادر {count, plural, zero {# مجتمع ينطبق عليه هذا الفحص} one {المجتمع الذي ينطبق عليه هذا الفحص} two {المجتمعين اللذين ينطبق عليهما هذا الفحص} few {# مجتمعات ينطبق عليها هذا الفحص} many {# مجتمعًا ينطبق عليه هذا الفحص} other {# مجتمع ينطبق عليه هذا الفحص}}، وسيعود حسابك إلى العمل بشكل طبيعي." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "ستغادر {guildNames}. لن يُحذف أي شيء نشرته، ويمكنك الانضمام مرة أخرى لاحقًا." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "لا يزال يتعين عليك إكمال خطوة البريد الإلكتروني." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "أنت تفعل ذلك بسرعة كبيرة" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "أنت تفعل ذلك بسرعة كبيرة. انتظر لحظة وحاول مرة أخرى." @@ -40636,7 +39935,7 @@ msgstr "أنت ترسل الرسائل بسرعة كبيرة" msgid "You're streaming!" msgstr "أنت تبث الآن!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "أنت في المهلة. المراسلة والتفاعلات والصوت متوقفة مؤقتًا حتى تنتهي المهلة." @@ -40764,25 +40063,25 @@ msgstr "فشل دفع تجديد اشتراكك عبر {storeName}، لكن <0/> msgid "Your account" msgstr "حسابك" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "يعود حسابك إلى طبيعته فورًا ولن تحتاج إلى رقم هاتف الآن. هذا ليس إعفاءً دائمًا، وقد نطلب هذا التحقق مرة أخرى لاحقًا." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "تم ربط حسابك بنجاح. يمكنك الآن إغلاق علامة التبويب هذه والعودة إلى التطبيق." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "عاد حسابك إلى طبيعته." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "حسابك محدود" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "حسابك محدود. تحقق من بريدك الإلكتروني لمعرفة كيفية رفعه." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "لم تتم المطالبة بحسابك بعد. بدون بريد إلكتروني وكلمة مرور، لن تتمكن من تسجيل الدخول من أجهزة أخرى وقد تفقد الوصول إلى حسابك. طالب بحسابك الآن لتأمينه." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "حسابك جديد جدًا ولا يمكنه إرسال رسائل في هذا المجتمع." @@ -40800,11 +40099,6 @@ msgstr "يتطلب حسابك مصادقة متعددة العوامل، ولك msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "لن يكون حسابك محميًا بالمصادقة الثنائية بعد الآن عند تسجيل الدخول بكلمة المرور. كما ستفقد الأذونات المرتفعة في المجتمعات التي تتطلب المصادقة الثنائية." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "يعود حسابك للعمل بشكل طبيعي فورًا ولن تتم إزالة أي شيء. يمكننا طلب إجراء هذا الفحص مرة أخرى لاحقًا." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "جارٍ التحقق من بطاقتك لمعرفة الأسعار ال msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "بطاقتك مؤهلة. سيتم توجيهك إلى صفحة الدفع الآن." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "تفيد شركة الاتصالات لديك بأن هذا الرقم خارج الخدمة. تحقق منه وحاول مرة أخرى، أو اتصل بالدعم إذا كان صحيحًا." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "تصل تغييراتك إلى كل مجتمع يتابع هذه القناة، وقد يستغرق ذلك دقيقة. تسمح كل رسالة منشورة بإجراء 3 تعديلات سريعة، ثم تعديل واحد كل 20 دقيقة." @@ -40869,21 +40158,6 @@ msgstr "سيطلب منك جهازك حفظ مفتاح مرور محدّث لـ msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "سيطلب منك جهازك حفظ مفتاح مرور محدّث لـ {name}. استخدم نفس الهاتف أو مفتاح الأمان الذي استخدمته للتو." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "تم تحديث عنوان بريدك الإلكتروني." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "تعذّر على بريدك الإلكتروني استلام الرسائل. أضف بريدًا إلكترونيًا صالحًا حتى نتمكن من التواصل معك بشأن حسابك." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "تعذّر استلام رسائل على بريدك الإلكتروني. حدّثه لمتابعة استخدام {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "تم التحقق من بريدك الإلكتروني. يمكنك الآن تسجيل الدخول إلى حسابك." @@ -41000,21 +40274,11 @@ msgstr "لم يتم تحديث رسالتك" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "لم يعد آخر شراء لك ضمن فترة استرداد الأموال. اتصل بالدعم بخصوص مشكلات الفوترة." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "بريدك الإلكتروني الجديد" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "اسمك المستعار الجديد، أو اتركه فارغًا لإعادة تعيينه." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "رقمك غير مرتبط بحسابك. نحتفظ بعلامة مشفرة فقط، بدون معرف مستخدم، لفترة محدودة." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "تم إلغاء عملية الدفع. يمكنك الآن إغلاق علامة التبويب هذه والعودة إلى التطبيق." @@ -41054,11 +40318,6 @@ msgstr "هداياك التي اشتريتها" msgid "your region" msgstr "منطقتك" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "يتطلب تسجيلك فحصًا إضافيًا لمكافحة الرسائل المزعجة قبل أن تتمكن من المتابعة." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json b/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json index c6bc425d3..89774ac66 100644 --- a/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json +++ b/fluxer_app/src/features/i18n/locales/auto-i18n-reviewed-unchanged.json @@ -1413,6 +1413,9 @@ { "msgid": "Accepted" }, + { + "msgid": "Account limited" + }, { "msgid": "Add a Klipy API key to enable GIF search at runtime." }, @@ -1536,9 +1539,6 @@ { "msgid": "Ask for a passkey after your password when you sign in" }, - { - "msgid": "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." - }, { "msgid": "Attachment {pendingFilename}" }, @@ -1848,9 +1848,6 @@ { "msgid": "Connection volume controls" }, - { - "msgid": "Contact the administrators of this instance for help." - }, { "msgid": "Convert" }, @@ -2029,7 +2026,7 @@ "msgid": "Editing limit reached" }, { - "msgid": "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." + "msgid": "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." }, { "msgid": "Emoji and sticker cloning shortcuts" @@ -2211,6 +2208,9 @@ { "msgid": "Help translate {PRODUCT_NAME} into your language on <0>{I18N_WEBLATE_DOMAIN}." }, + { + "msgid": "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." + }, { "msgid": "Hid join messages in the system channel." }, @@ -2220,9 +2220,6 @@ { "msgid": "How much of the member's recent message history to delete." }, - { - "msgid": "If you can't verify by SMS" - }, { "msgid": "Ignore this channel's slowmode cooldown." }, @@ -2283,12 +2280,6 @@ { "msgid": "Largest file you can upload" }, - { - "msgid": "Leave and set aside" - }, - { - "msgid": "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" - }, { "msgid": "Let others clone your emojis" }, @@ -2532,9 +2523,6 @@ { "msgid": "Originally banned on {date}." }, - { - "msgid": "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." - }, { "msgid": "Passkey updated" }, @@ -2976,9 +2964,6 @@ { "msgid": "Send messages in this channel." }, - { - "msgid": "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." - }, { "msgid": "Sending {resolution} at {frameRate} FPS with {codec}" }, @@ -3090,12 +3075,6 @@ { "msgid": "Set the voice region to {region}." }, - { - "msgid": "Set this check aside" - }, - { - "msgid": "Set this check aside?" - }, { "msgid": "Set to send {resolution} at {frameRate} FPS with {codec}" }, @@ -3333,9 +3312,6 @@ { "msgid": "Text is rendered with grayscale antialiasing instead of ClearType while transparency is enabled, so it will look softer." }, - { - "msgid": "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." - }, { "msgid": "That image could not be used. Try a different file." }, @@ -3480,12 +3456,6 @@ { "msgid": "This is an age-restricted channel. Updates can only go to age-restricted channels." }, - { - "msgid": "This is not available on your account right now. Ask the administrators of this instance to review it." - }, - { - "msgid": "This is not available on your account right now. Email {supportEmail} and a person will review it." - }, { "msgid": "This is off until you turn it on. While it is on, members of other communities can use the in-app one-click \"Clone\" shortcut on your custom emojis. Turning it off does not prevent anyone from saving the image and uploading it themselves." }, @@ -3507,9 +3477,6 @@ { "msgid": "This message has already been published" }, - { - "msgid": "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." - }, { "msgid": "This option is required. Please provide a value." }, @@ -3681,15 +3648,12 @@ { "msgid": "We couldn't reach the attachment upload service. {PRODUCT_NAME} can fall back to the standard upload path for messages up to {fallbackSizeFormatted} total, but these attachments exceed that combined limit and can't be sent until connectivity is restored. Try again later or contact the administrators of this instance if this keeps happening." }, - { - "msgid": "We couldn't verify this number automatically. Contact support and a person will review your account." - }, - { - "msgid": "We don't send verification texts to this country. Try a mobile number from another country, or contact support." - }, { "msgid": "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." }, + { + "msgid": "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." + }, { "msgid": "We'll send a verification code to your email before you can view your backup codes." }, @@ -3729,18 +3693,9 @@ { "msgid": "You can only pick a tag that nobody else with the same username already has. Usernames aren't case sensitive, so Mina#4821 and mina#4821 count as the same. The #0000 tag is reserved for {productName} Visionary members. {visionaryLink}." }, - { - "msgid": "You can still ask the administrators of this instance for a human review at any time." - }, - { - "msgid": "You can still email {supportEmail} for a human review at any time." - }, { "msgid": "You can't manage webhooks in any community. Ask an admin to follow this channel." }, - { - "msgid": "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." - }, { "msgid": "You're a Visionary. Your perks never expire, and gifts for friends are always available." }, @@ -3751,20 +3706,17 @@ "msgid": "YouTube enrichment" }, { - "msgid": "Your account is back to normal." + "msgid": "Your account is limited" + }, + { + "msgid": "Your account is limited. Check your email for how to lift it." }, { "msgid": "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." }, - { - "msgid": "Your account works normally again straight away and nothing is removed. We can ask for this check again later." - }, { "msgid": "Your capture device is sending {deliveredResolution} instead of {resolution}." }, - { - "msgid": "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." - }, { "msgid": "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." }, diff --git a/fluxer_app/src/features/i18n/locales/bg/messages.po b/fluxer_app/src/features/i18n/locales/bg/messages.po index 084e0709c..b77a8010e 100644 --- a/fluxer_app/src/features/i18n/locales/bg/messages.po +++ b/fluxer_app/src/features/i18n/locales/bg/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# реакция} other {# реакции}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# потребител} other {# потребители}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# секунда} other {# секунди}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} в {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Линкът ти за покана изтича след # секунда.} other {Линкът ти за покана изтича след # секунди.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Избрани: {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 минута" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 часа" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 месеца (1 година)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Резервни кодове за 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Изискване за двуфакторно удостоверяване" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 членове (пишат)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 месеца" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 часа" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 месеца" @@ -2575,11 +2575,6 @@ msgstr "една минута" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Налична е нова версия на настолното приложение. Изтегли инсталатора и го стартирай, за да актуализираш {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Изпратихме нов код за потвърждение." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Данни за акаунта" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Акаунтът съществува за спам, измами или злоупотреба с платформата." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Акаунтът е ограничен" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Състояние на акаунта" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Акаунтът е твърде нов" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Изисква се потвърждение на акаунта" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Добавяне на бот към общност с поисканите разрешения" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Добавяне на коментар (по избор)" @@ -3054,8 +3052,10 @@ msgstr "Добавяне на тема към този канал" msgid "Add a word…" msgstr "Добавяне на дума…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Добави работещ имейл адрес" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Добави акаунт, за да продължиш." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Първо добави имейл и парола към акаунта си." @@ -3424,11 +3424,6 @@ msgstr "Добавен: {createdDate} • последно използван: { msgid "Additional comments (optional)" msgstr "Допълнителни коментари (по избор)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Изисква се допълнително потвърждение" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Всички езици" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Анулирането вече е насрочено" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Докладвай това съобщение и на екипа за безопасност на {productName}" @@ -4713,11 +4708,6 @@ msgstr "Пита преди започване на разговор" msgid "Ask for a passkey after your password when you sign in" msgstr "Изисквай ключ за достъп след паролата ти при влизане" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Помоли администраторите на тази инстанция да прегледат акаунта ти. Тази инстанция се управлява самостоятелно и само нейните администратори могат да променят акаунта ти." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Автоматично премахване на параметри за msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Автоматично премахване на параметри за проследяване от URL адресите в съобщенията, които изпращаш" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Автоматично проверяване на съобщенията за изрично съдържание в канали, които не са маркирани за съдържание за възрастни." @@ -5359,8 +5349,6 @@ msgstr "В момента ме няма" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Назад" @@ -6506,11 +6494,6 @@ msgstr "Камерите и виртуалните устройства за з msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Камерите са изключени при над {voiceChannelCameraUserLimit} участници" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Нямаш достъп до този имейл?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Тук не можеш да качваш файлове" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Тук не можеш да качваш файлове" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Промяна на имейл" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Смяна на емоджи" @@ -7201,7 +7184,7 @@ msgstr "Промени лимита за потребители от {oldCount} msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Промени персонализирания URL адрес от {oldCode} на {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Променено е нивото на потвърждение от {oldLevel} на {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Канал или категория" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Презаписвания на разрешения на канала" @@ -7509,8 +7492,6 @@ msgstr "Провери връзката си и опитай отново." msgid "Check your connection, then try again." msgstr "Провери връзката си и след това опитай отново." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Избери дисплей в системния инструмент msgid "Choose a GIF" msgstr "Избери GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Избери метод" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Избери нова парола." @@ -7680,8 +7656,8 @@ msgstr "Избери действие." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Избери емоджи" @@ -7749,11 +7725,6 @@ msgstr "Избери как да работи инстанцията ти" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Избери един от методите по-долу, за да докажеш собствеността върху домейна. Трябва да изпълниш само един." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Избери един метод за потвърждение. Всеки от двата метода изпълнява тази проверка." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Избери какво може да прави {clientLabel} в общ msgid "Choose what friends see in their active now panel" msgstr "Избери какво виждат приятелите ти в панела „Активни сега“" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Избери какво трябва да имат членовете, преди да могат да публикуват или да изпращат DM на членове на общността." @@ -8030,8 +8001,8 @@ msgstr "Изчиства звука от микрофона ти за ясна msgid "Clear" msgstr "Изчистване" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Изчистване след" @@ -8053,7 +8024,7 @@ msgstr "Изчистване на всички макети на прикаче msgid "Clear all token overrides" msgstr "Изчистване на всички презаписвания на токени" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Изчистване на макетите на прикачени файлове" @@ -8066,14 +8037,14 @@ msgstr "Изчистване на командата" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Изчистване на персонализиран статус" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Да се изчистят ли всички реакции от това съобщение?" @@ -8124,7 +8095,7 @@ msgstr "Изчистване на полето за търсене" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Въгленова тема" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Команди" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Коментарите са изключени, защото в един или повече от избраните канали е включен бавен режим. Коментарът ще бъде блокиран от бавния режим веднага след препращането." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Коментарите са изключени, защото в {forwardChannelDisplayName} е включен бавен режим. Коментарът ще бъде блокиран от бавния режим веднага след препращането." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Коментарите не са достъпни, докато е включен бавен режим." @@ -8670,11 +8639,11 @@ msgstr "Общности" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Общности и канали, където не можете да управлявате уебкуки, са скрити." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Общностите, включени в Откриване, трябва да сканират съобщенията от всички членове. Тази настройка не може да се променя, докато Откриване е включено." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Общностите, включени в Откриване, изискват поне потвърждение на имейл. Докато Откриване е включено, не може да се избере „Няма“." @@ -8827,7 +8796,7 @@ msgstr "Име на общността" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Прякор в общността" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Профил на общността" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Профилът на общността е актуализиран" @@ -8907,7 +8876,7 @@ msgstr "Ниво на значката за непрочетени в общно #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Общността е актуализирана" @@ -8952,11 +8921,6 @@ msgstr "Сравнение" msgid "Complete mature content check" msgstr "Завършване на проверката за съдържание за възрастни" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Завърши един от начините за потвърждение по-долу, за да продължиш да използваш {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Завършване на плащането" msgid "Complete the mature content check to unlock mature media." msgstr "Завърши проверката за съдържание за възрастни, за да отключиш медията за възрастни." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Изпълни задължителните стъпки за потвърждение на имейл и телефон по-долу, за да продължиш да използваш {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Завърши необходимото потвърждение, за да продължиш да използваш {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Конфигуриране на значката на профила" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Връзките са пренаредени" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Изисква се съгласие" @@ -9349,16 +9304,6 @@ msgstr "Създай URL за оторизация с обхвати и разр msgid "Contact" msgstr "Контакт" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Свържи се с поддръжката" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Свържи се с администраторите на тази инстанция за помощ." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Създател на съдържание" msgid "Content filter" msgstr "Филтър за съдържание" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Филтриране на съдържание" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Подсказка за съдържанието" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Предпазни мерки за съдържанието" @@ -9416,12 +9361,10 @@ msgstr "Контекстните менюта могат да се отваря #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Управлявай как се държи индикаторът за msgid "Control which chat updates are announced by assistive technology." msgstr "Управлявай кои промени в чата се обявяват от помощните технологии." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Разговорът не е намерен" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Етикетът не можа да бъде добавен" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Този приятел не можа да бъде добавен към групата. Опитай отново." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Неуспешно добавяне към групата" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Неуспешно създаване на линк към темата" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Неуспешно създаване на линк за покана" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Неуспешно прекратяване на гратисния период" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Не успяхме да генерираме линк за покана. Опитай отново." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Неуспешна обработка на изображението" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Не успях да публикувам това съобщение" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Неуспешно повторно присъединяване към общността Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Неуспешно премахване на звука при влизане" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Не успях да запазя настройките на канала" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Неуспешно запазване на звука при влизане" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Неуспешно оттегляне на заявлението" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Таймер за обратно броене" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Държава" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Създай администраторския акаунт" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Да се създаде ли групово DM с {addableCount, plural, one {# оставащ получател} other {# оставащи получатели}}, а другите да се пропуснат?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Създаване на уебхук" @@ -10948,7 +10884,7 @@ msgstr "Персонализирано емоджи {emojiName} от общно #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Персонализираните звуци при влизане не са активирани в тази инстанция." @@ -11108,7 +11044,7 @@ msgstr "Персонализирана обработка на глас" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Персонализиран текст за предупреждение" @@ -11530,11 +11466,6 @@ msgstr "Търсачка по подразбиране" msgid "Default shortcuts" msgstr "Стандартни клавишни комбинации" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Раздел по подразбиране" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Делауер" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Изтриване на това съобщение" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Изтриване на това съобщение? Това действие не може да бъде отменено." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Искате ли да изтриете това съобщение? Не може да бъде отменено. То ще бъде премахнато и от всяка общност, която следва този канал." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Режим за разработчици" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Опция за разработчици" @@ -12299,7 +12230,7 @@ msgstr "Директен вход" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Режим на показване" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Показвано име" @@ -12858,7 +12789,7 @@ msgstr "Искаш ли да се присъединиш към {communityName}? #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Док, аз съм от бъдещето. Дойдох тук с машина на времето, която ти изобрети. Сега ми трябва помощта ти, за да се върна в 1985 г." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Редактиране на местно време в профила" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Редактиране на публикувано съобщение?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Редактиране на съобщенията ви отгоре или отдолу" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Редактирай изгледа на профила си и виж предварителен преглед на живо" @@ -13590,10 +13521,8 @@ msgstr "Отговаряш на условията за възстановява msgid "Email" msgstr "Имейл" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Изисква се имейл адрес." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Имейлът е променен" @@ -13616,49 +13547,17 @@ msgstr "Имейлът е променен" msgid "Email delivery" msgstr "Доставка на имейли" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Имейл или телефон" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Изисква се повторно потвърждение на имейл или телефон" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Изисква се повторно потвърждение на имейл" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Имейлът не е наличен" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Актуализирането на имейла е недостъпно в момента. Опитай отново по-късно или се свържи с поддръжката." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Изисква се актуализация на имейл" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Изпрати ни имейл и човек ще прегледа акаунта ти. Кажи ни, че не можеш да потвърдиш чрез SMS, и ние ще се погрижим за останалото. Отговорите идват по имейл, така че не е мигновено." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Лента за подкана за потвърждение на имейл" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Изисква се потвърждение на имейл" @@ -13675,6 +13574,10 @@ msgstr "Презаписване на потвърден имейл" msgid "Email verified successfully" msgstr "Имейлът е потвърден успешно" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Имейлите до текущия ви адрес не се доставят. Въведете нов имейл и ще изпратим код там." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Вградени елементи" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Вградените елементи са скрити" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Вградените елементи са видими" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Включване на възпроизвеждането на говор с /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Включи двуфакторното удостоверяване в акаунта си, за да промениш тази настройка" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Въведи валиден URL адрес или код на шаблон за {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Въведи валиден имейл адрес." @@ -14298,33 +14199,11 @@ msgstr "Въведи валиден имейл адрес." msgid "Enter a valid message link." msgstr "Въведи валиден линк към съобщение." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Въведи валиден мобилен телефонен номер." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Въведи валиден телефонен номер" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Въведи валидно потребителско име ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Въведи имейл, до който имаш достъп. Ще изпратим код там." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Въвеждане на код" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "На цял екран" msgid "Enter gift code…" msgstr "Въведи код за подарък…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Въведи нов имейл адрес" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Въведи един от резервните си кодове, ак msgid "Enter one of your backup codes." msgstr "Въведи един от резервните си кодове." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Въвеждане на телефон" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Въведи {digitCount}-цифрения код от приложен msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Въведи {digitCount}-цифрения код от приложението за удостоверяване." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Въведи {digitCount}-цифрения код, изпратен на {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Въведи {MFA_CODE_DIGIT_COUNT}-цифрения код, изпратен на {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Въведи кода" @@ -14408,11 +14267,6 @@ msgstr "Въведи кода, преди да продължиш." msgid "Enter the code from your authenticator app." msgstr "Въведи кода от приложението за удостоверяване." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Въведи кода, изпратен на {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Въведи кода, изпратен на текущия ти имейл." @@ -14426,6 +14280,7 @@ msgstr "Въведи кода, изпратен на имейл адреса т msgid "Enter the code shown in the app to continue." msgstr "Въведи кода, показан в приложението, за да продължиш." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Въведи кода, който изпратихме на новия ти имейл адрес." @@ -14434,11 +14289,6 @@ msgstr "Въведи кода, който изпратихме на новия msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Въведи кода, който изпратихме на имейла ти, за да го потвърдиш. Паролата ти ще бъде зададена, след като кодът бъде потвърден." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Въведи кода от имейла" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Въведи линка за покана, за да се присъединиш към общност." @@ -14452,11 +14302,6 @@ msgstr "Въведи новия имейл, който искаш да изпо msgid "Enter the PIN for your security key to continue." msgstr "Въведи ПИН кода на защитния си ключ, за да продължиш." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Въведи SMS кода" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Въведи този код в браузъра си, за да завършиш влизането." @@ -14492,11 +14337,6 @@ msgstr "Въведи името си" msgid "Enter your password." msgstr "Въведи паролата си." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Въведи телефонния си номер" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Звук при влизане" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Файловете за звук при влизане трябва да са {limit} или по-малки." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Библиотеката със звуци при влизане е пълна" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Звукът при влизане е премахнат" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Звукът при влизане е запазен" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Звуци при влизане" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Звуците при влизане не са налични" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Изтича:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Настройка на филтъра за изрично съдържание" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Неуспешно копиране в клипборда" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Неуспешно създаване на уебхук" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Неуспешно зареждане на персонализирания URL адрес. Опитай отново." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Неуспешно зареждане на уебхукове" @@ -15190,11 +15030,6 @@ msgstr "Неуспешно премахване на персонализира msgid "Failed to resend code. Try again." msgstr "Неуспешно повторно изпращане на кода. Опитай отново." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Неуспешно повторно изпращане на кода за потвърждение. Опитай отново по-късно." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Неуспешно изпращане на съобщението. За msgid "Failed to send report. Try again." msgstr "Неуспешно изпращане на сигнала. Опитай отново." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Неуспешно изпращане на имейл за потвърждение. Опитай отново по-късно." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Неуспешно стартиране" @@ -15551,15 +15381,15 @@ msgstr "Филтриране по потребител" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Филтриране на всички" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Филтриране на членове без роли" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Следвай този канал" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Следвайте, за да получавате тези съобщения в избран от вас канал." @@ -15773,7 +15603,7 @@ msgstr "Следван канал {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Следвани канали" @@ -15857,11 +15687,6 @@ msgstr "Само за британски очи..." msgid "For me" msgstr "За мен" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "За тази проверка ти ни изпращаш текстово съобщение, вместо да получаваш такова от нас." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "За твоята сигурност потвърди самоличността си, за да продължиш." @@ -15905,7 +15730,7 @@ msgstr "Принудително показване на скелета за з #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Принудително показване на медия за възрастни" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Принудително преместване в AFK канал" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Принудително без разрешение за {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Принудително показване на отказа от от msgid "Force show voice connection" msgstr "Принудително показване на гласова връзка" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Принудително активиране на бавен режим" @@ -16020,7 +15845,7 @@ msgstr "Препращане на медия" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Препращане на съобщение" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Наслагване на географско блокиране" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Географски ограничено" @@ -16490,12 +16315,6 @@ msgstr "Получете анимиран аватар и банер, значк msgid "Get monthly" msgstr "Вземи месечно" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Получаване на нов код" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Кодове за подаръци" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Продължителност на подаръка" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Инвентар с подаръци" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Процес за инвентара с подаръци" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Подаръкът не е намерен" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Подаръкът е осребрен" @@ -17030,7 +16849,7 @@ msgstr "Групово директно съобщение" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Здравей, {displayName}, заяви акаунта си, за да не загубиш достъп." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Здравей, {displayName}, потвърди имейл адреса си." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Здравей, {displayName}, не можем да доставим имейл до твоя адрес. Добави работещ имейл, за да потвърдиш акаунта си." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Да скриеш ли собствения си споделен екр #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Високо" @@ -17755,11 +17579,6 @@ msgstr "Аз съм подсказка" msgid "I changed my mind" msgstr "Размислих" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Имам нужда от друг начин" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Ако този сигнал е за конкретно съобщени msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Ако този сигнал е за конкретни съобщения, докладвай най-подходящото съобщение. Сигналите за съобщения дават на екипа ни за безопасност най-ясен контекст, а добавянето на подробности в коментарите може да ни помогне да го прегледаме по-бързо. Продължи с докладването на потребителя като цяло само ако докладването на съобщение не би обхванало по-широкия проблем." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Ако не можеш да потвърдиш чрез SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Ако не можеш да използваш нито един метод за потвърждение, свържи се с поддръжката за помощ." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Размер на интерфейса" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Невалиден аудиофайл" @@ -18674,8 +18483,10 @@ msgstr "Невалиден JSON. Постави пълния отговор от #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Присъединяване към гласов разговор" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Присъединяване към гласов канал" @@ -19613,16 +19424,6 @@ msgstr "Научете повече за Visionary" msgid "Leave" msgstr "Напускане" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Да напуснеш ли {count, plural, one {# общност} other {# общности}} и да оставиш тази проверка настрана?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Напусни и остави настрана" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Позволява на екранните четци да обявяват нови съобщения, когато пристигат в отворения канал. Звуците за известия не се променят." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Нека общността се самомодерира" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Библиотека" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Библиотеката е пълна (макс. {max} звука). Изтрий един, преди да добавиш друг." @@ -19812,7 +19613,7 @@ msgstr "Библиотека: {count} от {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Доживотен" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Зареждане..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Зареждане…" @@ -20261,7 +20062,7 @@ msgstr "Луизиана" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Ниско" @@ -20416,7 +20217,7 @@ msgstr "Управление на функциите на общността" msgid "Manage emoji & stickers" msgstr "Управление на емоджита и стикери" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Управлявай входящите уебхукове, които могат да публикуват съобщения в този канал." @@ -20514,7 +20315,7 @@ msgstr "Маркира веднага всички непрочетени кан msgid "Mark as read" msgstr "Маркирай като прочетено" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Маркирай като осребрено" @@ -20676,14 +20477,14 @@ msgstr "Общност за възрастни" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Съдържание за възрастни" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Съдържание за възрастни и предупреждения за съдържание" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Максимален срок на живот (дни)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Максимална защита за пространства, подходящи за семейството" @@ -20924,7 +20725,7 @@ msgstr "Спиране на възпроизвеждането" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Забраната на члена е премахната" msgid "Member updated" msgstr "Членът е актуализиран" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Потвърждение на членството" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Ниво на потвърждение на членство" @@ -21048,7 +20849,7 @@ msgstr "Членовете се премахват, когато излязат msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Членовете с „{pinMessagesPermissionLabel}“ могат да закачат съобщения за всички." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Членовете с роли могат да заобиколят тези проверки. За публични пространства препоръчваме да включиш потвърждението." @@ -21153,7 +20954,7 @@ msgstr "Споменаванията за теб се показват тук {r #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Само споменавания" @@ -21292,7 +21093,7 @@ msgstr "Настройките за показване на съобщения msgid "Message editing" msgstr "Редактиране на съобщения" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Съобщението е препратено" @@ -21341,7 +21142,7 @@ msgstr "Бутони за въвеждане на съобщения" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Съобщението е твърде дълго" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Визуализация на съобщенията в списъка с DM" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Съобщението е публикувано" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Съобщения, публикувани в #{sourceName}, вече ще се показват в #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Съобщенията, публикувани в тези канали за излъчване, се копират тук." @@ -21504,7 +21305,7 @@ msgstr "Съобщенията, публикувани в тези канали msgid "Messages you can bookmark" msgstr "Съобщения, които можете да запазите" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Изпращането на съобщения е временно спряно в тази общност." @@ -21733,30 +21534,30 @@ msgstr "Тестово изтичане след 1 ден" msgid "Mock expires in 7 days" msgstr "Тестово изтичане след 7 дни" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Тестово наслагване на географско блокиране" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Тестов инвентар с подаръци" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Тестово входящо повикване" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Тестова причина за ограничаване на канала заради съдържание за възрастни" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Тестова причина за ограничаване на медия заради съдържание за възрастни" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Тестово географско местоположение (Обединено кралство)" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Тестови потребителски аватари в различни размери и всички комбинации на състоянието." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Тестови вариант" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Тестови продуктови потоци" @@ -22698,14 +22494,16 @@ msgstr "Заглушени канали в нови общности" msgid "New direct message" msgstr "Ново директно съобщение" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Нов имейл" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Формуляр за нов имейл" @@ -22816,9 +22614,7 @@ msgstr "Първо най-новите" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Напред" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Не" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Няма разрешение {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Няма разрешение {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Няма промени за запазване" msgid "No channels available" msgstr "Няма налични канали" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Няма намерени канали" @@ -23233,11 +23029,6 @@ msgstr "Няма намерени разрешения" msgid "No personal words yet." msgstr "Все още няма лични думи." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Няма телефонен номер" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Няма резултати" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Няма намерени резултати" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Няма намерени потребители" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Не се изисква потвърждение." @@ -23452,7 +23243,7 @@ msgstr "Не се изисква потвърждение." msgid "No verification methods available" msgstr "Няма налични методи за потвърждение" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Няма уебхукове" @@ -23504,7 +23295,7 @@ msgstr "Без преобразуване" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Без потискане" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Няма (нормално поведение)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Норвежки" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Не е член от достатъчно дълго време" @@ -23798,9 +23589,9 @@ msgstr "Обекти" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Изкл" @@ -23848,7 +23639,7 @@ msgstr "Първо най-старите" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Вкл" @@ -23884,11 +23675,6 @@ msgstr "Един или повече прикачени файла не можа msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Един или повече файлове, които се опитваш да качиш, надвишават максималния размер от {maxSizeFormatted} на файл." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Една бърза проверка" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Само високоговорители" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Само собственикът на общността може да променя тази настройка" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Отваряне на емоджи в браузър" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Отваряне на палитрата с емоджита" @@ -24382,12 +24168,8 @@ msgstr "Икона за отваряне на меню" msgid "Open message history threshold" msgstr "Отваряне на настройките за праг на историята на съобщенията" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Отваряне на наслагване" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Отваряне на изскачащия прозорец" @@ -24485,11 +24267,6 @@ msgstr "Отвори новото приложение. Не е нужно да msgid "Open the shortcuts list for quick actions." msgstr "Отвори списъка с клавишни комбинации за бързи действия." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Отвори имейла за потвърждение и използвай линка в него. Този прозорец ще се актуализира, след като отвориш линка." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Отваряне на настройките за глас и видео msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Отвори браузъра си, влез в акаунта си, след което въведи кода по-долу, за да свържеш акаунта си." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Отвори съобщенията си" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Отвори старото си приложение {PRODUCT_NAME} и избери „Свържи ново устройство“, след което въведи кода по-долу." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Отвори приложението за съобщения на телефона си и създай ново текстово съобщение." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Отвори приложението за съобщения на телефона си и започни ново текстово съобщение." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Друга реакция…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Проверката ни на телефонни номера в момента не работи. Вината е наша, а не на твоя номер. Изчакай няколко минути и опитай отново със същия номер." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Фишинг, измами, злонамерени линкове или неверни твърдения, които е вероятно да причинят реална вреда." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Телефон" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Телефонен номер" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Изисква се телефонен номер" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Телефонният номер е потвърден" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Изисква се повторно потвърждение на телефона" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Стъпка „Телефон“" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Потвърждаването по телефон не е налично за този акаунт. Използвай друг метод или се свържи с поддръжката." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Изисква се потвърждение на телефона" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Избери 4-цифреното число след потребите msgid "Pick the appearance this administrator account should start with." msgstr "Избери външния вид, с който да започне този администраторски акаунт." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Избери метода, който можеш да завършиш сега." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Картина в картината" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Закачи" @@ -25471,7 +25176,7 @@ msgstr "Закачи груповото DM" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Закачане или откачане на всяко съобщение." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Закачи това съобщение в канала, за да го виждат всички." @@ -26227,18 +25932,18 @@ msgstr "Цвят на профила" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Персонализиране на профила" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Персонализиране на профила за {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Формуляр за персонализиране на профил" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Тип на профила" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Профилът е актуализиран" @@ -26340,7 +26045,7 @@ msgstr "Показване на подкана при нови аудиоуст #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Координиране на атаки" msgid "Rate" msgstr "Скорост" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Ограничен брой заявки" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Суров JSON на вградения елемент" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Да се премахне ли {userName} от приятелите ти?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Премахване на всички" @@ -27290,7 +26990,7 @@ msgstr "Да се премахнат ли всички реакции {emojiName #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Премахване на всички реакции" @@ -27899,20 +27599,10 @@ msgstr "Таг на докладвания потребител (по избор msgid "Reposts: <0>{countLabel}" msgstr "Повторни публикации: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Първо заяви нов код." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Заявяване на нов линк за нулиране" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Първо заяви код за потвърждение." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Заявки" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Изискване на двуфакторно удостоверяване за модераторски действия" @@ -27958,7 +27648,7 @@ msgstr "Изискване на предоставяне на OAuth2 код" msgid "Require passkey" msgstr "Изискване на ключ за достъп" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Изискване на двуфакторно удостоверяване за модераторите, преди да могат да забраняват, да изгонват, да налагат време за изчакване или да изтриват съобщения." @@ -27972,46 +27662,6 @@ msgstr "Задължително" msgid "Required 2FA for moderation actions" msgstr "Започна да изисква 2FA за модераторски действия" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Раздел по подразбиране за задължително действие" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Поток за задължително действие" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Стъпка за телефон при задължително действие" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Задължително действие, повторно изпращане, зареждане" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Резултат от повторно изпращане на задължително действие" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Текст за повторно потвърждение при задължително действие" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Задължително действие (вариант)" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Наслагване на задължителни действия" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Изисква URI за пренасочване и код за оторизация при покана на този бот." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Изисква потвърден имейл адрес и акаунт, създаден преди поне 5 минути." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Изисква потвърден имейл адрес." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Изисква потвърден телефонен номер." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Изисква всичко от средно ниво, плюс членство в общността от поне 10 минути." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Изпрати отново ({resendSecondsRemaining}с)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Изпрати отново ({secondsRemaining}с)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Бутонът за повторно изпращане се зарежда" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Изпрати кода отново" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Изпрати имейла отново" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Резултат от повторното изпращане" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Изпратено отново" @@ -28518,21 +28152,6 @@ msgstr "Покажи" msgid "Reveal spoiler" msgstr "Покажи спойлера" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "За да продължиш да използваш {productName}, потвърди отново имейла си или потвърди телефонния си номер." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Потвърди отново имейла си, за да продължиш да използваш {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Потвърди отново телефонния си номер, за да продължиш да използваш {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Наситеност" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Преглед при превъртане" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Търсене на канали" msgid "Search communities" msgstr "Търсене на общности" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Търсене на държави..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Търсене на държави…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Избери държавата си на пребиваване." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Избери…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Изпращане" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Изпращане ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Изпращане на друг сигнал" msgid "Send button" msgstr "Бутон за изпращане" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Изпращане на код" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Изпращане на съобщения" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Изпращането на съобщения е деактивирано" @@ -30151,32 +29759,11 @@ msgstr "Изпращане на запазена медия {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Изпращай съобщения с текст към говор чрез /tts. Членовете, които са включили текст към говор, ги чуват прочетени на глас." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Изпрати кода <0>{0} на <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Изпрати кода на телефонния номер по-долу." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Изпрати този код" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Да върнем ли това закачено съобщение назад във времето?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Изпращане до" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Изпращане на гласово съобщение" msgid "Send:" msgstr "Изпращане:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Изпращането на SMS до този телефонен номер е твърде скъпо за {PRODUCT_NAME}, затова вместо това ти трябва да ни изпратиш SMS. Знаем, че това не е идеално. Можеш също да помолиш администраторите на тази инстанция да премахнат това изискване от акаунта ти." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Изпращането на SMS до този телефонен номер е твърде скъпо за {PRODUCT_NAME}, затова вместо това ти трябва да ни изпратиш SMS. Знаем, че това не е идеално. Можеш също да се свържеш с <0>{SUPPORT_EMAIL}, за да премахнем това изискване от акаунта ти." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Изпращане едно по едно" msgid "Serve the token file" msgstr "Предоставяне на файла с токена" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Грешка в услугата" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Задаване на персонализирана клавишна комбинация за „{label}“" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Задаване на персонализиран статус" @@ -30486,18 +30060,6 @@ msgstr "Зададе гласовия регион на {region}" msgid "Set the voice region to automatic" msgstr "Зададе гласовия регион на автоматичен" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Остави тази проверка настрана" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Да оставиш ли тази проверка настрана?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Задаване на местоименията ти" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Задаване на статус" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Клавишните комбинации са на пауза по време на записване." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Съкрати съобщението и опитай отново." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Показване на икона на {productName} в системния трей или лентата с менюта" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Показване на предупреждение за съдържание" @@ -31672,7 +31234,7 @@ msgstr "Бавен режим · изчакай {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Бавният режим е активен" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Бавният режим е зададен на {durationLabel}. Изчакай, преди да изпратиш друго съобщение." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Остатък от бавния режим" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Симулация на бавен режим" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Оставащо време за бавен режим" @@ -31807,11 +31369,6 @@ msgstr "Плавно превъртане" msgid "Smoother video" msgstr "По-плавно видео" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Потвърждението по SMS не е достъпно в момента. Опитай отново по-късно или се свържи с поддръжката." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Нещо се обърка при подготовката на този стикер. Опитай друг файл или опитай отново след малко." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Възникна грешка при публикуването. Опитайте отново след малко." @@ -32009,11 +31566,9 @@ msgstr "Нещо се обърка. Презареди страницата ил msgid "Something went wrong. Try again later." msgstr "Нещо се обърка. Опитай отново по-късно." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Нещо се обърка. Опитай отново." @@ -32352,11 +31907,6 @@ msgstr "Времето за влизане чрез SSO изтече. Опита msgid "Staff controls" msgstr "Контроли за персонала" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Възможно е да се прилагат стандартни такси за съобщения от твоя оператор." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Анимация на звезда" msgid "Starred channels" msgstr "Отбелязани канали" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Транспорт на абоната:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Абонамент" @@ -33051,14 +32599,12 @@ msgstr "Сценарии за абонамент" msgid "Subtext" msgstr "Дребен текст" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Успешно" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Препоръчително за повечето общности" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Системни и приветствени съобщения" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Системни съобщения от екипа на {productName}. Тук не можеш да отговаряш." @@ -33765,11 +33311,6 @@ msgstr "Избор на текст" msgid "Text size" msgstr "Размер на текста" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Изпрати ни съобщение от телефона си" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Тайландски" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Благодарим ти, че помагаш за безопасността на {productName}. Ще прегледаме сигнала ти възможно най-скоро." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Този код не проработи. Провери го и опитай отново." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Този код е изтекъл. Заяви нов код." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Действието не завърши. Възможно е някои общности вече да са напуснати, а акаунтът ти все още е заключен. Натисни отново „Остави тази проверка настрана“, за да завършиш." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Не се получи. Нищо не се промени. Опитай отново." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Това не прилича на валиден цвят. Опитай msgid "That doesn't look like a valid URL." msgstr "Това не изглежда като валиден URL адрес." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Този имейл вече се използва." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Презаписването забраняваше {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Страницата, която търсиш, не съществува или е преместена." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Телефонната проверка е оставена настрана. Остава една стъпка с имейл." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Няма налични канали, за които да създад msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "В момента няма роли за задаване в тази общност, но можеш да създадеш нова роля в <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Няма конфигурирани уебхукове за този канал. Създай уебхук, за да позволиш на външни приложения да публикуват съобщения." @@ -34273,7 +33784,7 @@ msgstr "Възникна грешка при зареждането на пок msgid "There was an error loading the stickers. Try again." msgstr "Възникна грешка при зареждането на стикерите. Опитай отново." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Възникна грешка при зареждането на уебхуковете за този канал. Опитай отново." @@ -34417,7 +33928,7 @@ msgstr "Този канал може да публикува 10 съобщени msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Този канал може да публикува 10 съобщения едно след друго, а след това по едно на всеки 6 минути. Опитайте отново след няколко минути." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Този канал не поддържа уебхукове." @@ -34550,12 +34061,12 @@ msgstr "Тази връзка не е потвърдена." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Тук има чувствително съдържание." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Този разговор вече не е наличен." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Тази група има твърде много хора" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Тази група е пълна. Премахни някого, преди да добавиш още хора." @@ -34715,11 +34226,6 @@ msgstr "Това е персонализиран стикер от общнос msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Това е канал с ограничено съдържание за възраст. Актуализации могат да се изпращат само до канали с ограничено съдържание за възраст." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Това е проверка против спам. Телефонният ти номер не е свързан с акаунта ти." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Деактивирано е" msgid "This is how messages appear" msgstr "Така изглеждат съобщенията" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Това не е налично за акаунта ти в момента. Помоли администраторите на тази инстанция да го прегледат." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Това не е налично в момента за акаунта ти. Изпрати имейл на {supportEmail} и някой ще го прегледа." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Това не е каналът, който търсиш." @@ -34792,11 +34288,6 @@ msgstr "Това е последният ти ключ за достъп, а к msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Това е последният ти ключ за достъп. След като го изтриеш, няма да можеш да използваш ключ за достъп като втори фактор." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Това не е мобилен номер и не може да получава нашите SMS съобщения. Опитай с мобилен номер или се свържи с поддръжката, ако смяташ, че това е грешка." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Това съобщение вече е изтрито." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Това съобщение вече е публикувано" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Това съобщение вече не съществува." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Този прякор ще се вижда само в тази общност" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Този номер се потвърждава, като ни изпратиш SMS. Върни се и започни потвърждението на телефона отново, за да получиш кода и номера, на който да пишеш." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Този номер изисква потвърждение чрез SMS от теб, а не SMS от нас." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Звукът на този участник е изключен" msgid "This participant was deafened by moderators" msgstr "Звукът на този участник е изключен от модератори" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Този телефонен номер не може да бъде използван. Опитай друг мобилен номер или се свържи с поддръжката." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Този телефонен номер вече е използван. Опитай друг номер или се свържи с поддръжката." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Този потребител няма роли в тази общнос msgid "This user is already banned from the community." msgstr "Този потребител вече е с наложена забрана в общността." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Този потребител вече не е наличен." @@ -35065,11 +34536,6 @@ msgstr "Този потребител беше принудително доба msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Сесията за потвърждение изтече. Върни се в {productName} и започни плащането отново." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Тази сесия за потвърждение изтече. Започни отначало." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Това ще те отпише от акаунта, ще изтрие msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Това ще направи всички външни линкове доверени и ще пропуска предупреждението за всеки домейн. Съществуващите ти доверени домейни ще бъдат заменени. Това е по-малко сигурно." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Този прозорец се актуализира автоматично, след като получим съобщението ти." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Заглавна лента" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Платформа на заглавната лента" @@ -35470,18 +34931,11 @@ msgstr "Тон" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Преобразуване на HDR изображения в стандартен диапазон, намалявайки пиковата яркост." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Твърде много опити. Изчакай малко и опитай отново." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Твърде много общности" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Твърде много заявки. Опитай отново по-късно." @@ -36151,8 +35605,10 @@ msgstr "Нито едно емоджи не можа да бъде подгот #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Недостъпно" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Без категория" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Незаявен акаунт" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Неномериран" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Откачи" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Откачи съобщението" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Да откачиш ли това съобщение?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Незапазени промени" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Неподдържан аудио файл." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Докато не го включа отново" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Непотвърден имейл" @@ -36958,12 +36414,7 @@ msgstr "Актуализирай {productName}, за да видиш това с msgid "Update app" msgstr "Актуализиране на приложението" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Актуализиране на имейл" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Актуализиране на статуса ми" @@ -37306,18 +36757,13 @@ msgstr "Използвай {url} там, където трябва да се в msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Използвай отделен прозорец, за да зададеш гранична дата за историята на съобщенията за членове, които нямат разрешението „{readMessageHistoryPermissionLabel}“." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Използвай друг имейл адрес и го потвърди с код." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Използване на действителното състояние" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Използване на действителния премиум тип" @@ -37335,16 +36781,6 @@ msgstr "Използвай друг метод" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Използвай приложение за удостоверяване, за да генерираш кодове за двуфакторно удостоверяване" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Използвай имейл, до който имаш достъп. Ще изпратим код на него." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Използвай имейл, различен от текущия." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Използване на тъмна тема в цялото прило msgid "Use default" msgstr "Използване на стойността по подразбиране" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Използвай друг имейл" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Използвай имейл" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Да използваш ли ключове за достъп за дв msgid "Use passkeys to sign in without a password" msgstr "Използвай ключове за достъп, за да влизаш без парола" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Използвай телефон" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Използване на текста за повторно потвърждение" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Потребител е преместен в друг канал" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Потребителят не е намерен" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Потвърждение" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Бариери за потвърждение и членство" @@ -37970,15 +37387,8 @@ msgstr "Код за потвърждение" msgid "Verification code sent" msgstr "Кодът за потвърждение е изпратен" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Кодът за потвърждение е изпратен. Провери входящата поща на новия си имейл." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Изпратен е имейл за потвърждение. Провери входящата си поща." @@ -38038,23 +37448,6 @@ msgstr "Формуляр за потвърждаване на самолично msgid "Verify it's you" msgstr "Потвърди самоличността си" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Потвърди телефона" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Потвърди телефонния номер" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Формуляр за потвърждаване на телефонен номер" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Потвърди имейла си, преди да добавиш приложение за удостоверяване." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Потвърди имейла си, преди да промениш прякора си в общността, аватара, банера, биографията, местоименията или цвета на акцента." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Потвърди имейла си, преди да промениш потребителското си име, показваното име, аватара, банера, биографията, местоименията, часовата зона или поверителността на значката {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Потвърди имейла си, преди да редактираш този профил на общността. Все още можеш да го прегледаш тук." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Потвърди имейла си, преди да редактираш профила си. Все още можеш да го прегледаш тук." @@ -38113,11 +37506,6 @@ msgstr "Потвърди имейла си, преди да изпращаш п msgid "Verify your email first" msgstr "Първо потвърди имейла си" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Потвърди имейла или телефона си, за да продължиш да използваш {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Потвърдете имейла си, за да купувате по msgid "Verify your email to change your username" msgstr "Потвърди имейла си, за да промениш потребителското си име" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Потвърди имейла си, за да продължиш да използваш {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Потвърди имейла си, за да редактираш този профил на общността" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Потвърди имейла си, за да редактираш профила си" @@ -38181,13 +37564,6 @@ msgstr "Върмонт" msgid "Version" msgstr "Версия" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Много високо" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Увеличаване на звука" msgid "Wait a moment before deleting more messages." msgstr "Изчакай малко, преди да изтриеш още съобщения." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Изчакай малко. Този прозорец ще се затвори автоматично, щом получим съобщението ти." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Изчакване между съобщенията. Членовете с „{bypassSlowmodePermissionLabel}“ могат да го заобиколят." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Изчакай тук" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Изчакване на ключ за достъп…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Изчаква се бавният режим в {forwardChannelDisplayName} да изтече." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Изчаква се да изтече бавният режим в един или повече избрани канала." @@ -39115,16 +38482,6 @@ msgstr "Не успяхме да прочетем тази тема. Може д msgid "We couldn't remove that account. Try again." msgstr "Не успяхме да премахнем този акаунт. Опитай отново." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Не успяхме да потвърдим този номер автоматично. Свържи се с поддръжката и човек ще прегледа акаунта ти." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Не изпращаме текстови съобщения за потвърждение до тази държава. Опитай с мобилен номер от друга държава или се свържи с поддръжката." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Открихме съществуващ абонамент за {premium msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Намалихме цената на {premiumProductName} в Бразилия. Сега е {monthlyPrice} на месец или {yearlyPrice} на година." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Необходима е една стъпка за потвърждение, преди да продължиш. Това помага за защитата на акаунтите и предпазва {productName} от спам." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Необходими са две стъпки за потвърждение, преди да продължиш. Ще показваме по една стъпка." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Препоръчваме ти да запазиш тези кодове сега, за да не загубиш достъп до акаунта си." @@ -39167,11 +38514,6 @@ msgstr "Изпратихме код на {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Ще попълним предварително {prefillEmail}, след като се отвори влизането в браузъра." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Ще изпратим SMS код, когато е наличен." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Бихме искали да ти дадем повече от доживотен {PREMIUM_PRODUCT_NAME}, но това нарушава пространствено-времевия континуум. Вместо това да изпратим подаръка на приятел?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Ще обработим заявката възможно най-скоро. Ще получиш имейл, когато архивът ти е готов." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Ще възстановим предишния ти имейл, ще прекратим старите сесии, ще премахнем телефонните номера, ще деактивираме MFA и ще защитим акаунта ти с нова парола." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Ще възстановим предишния ви имейл, ще излезем от стари сесии, ще деактивираме MFA и ще защитим акаунта ви с нова парола." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Ще изпратим код за потвърждение на имей msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Ще изпратим код за потвърждение на имейла ти, преди да можеш да видиш кодовете си за възстановяване." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Ще изпратим SMS код, когато е наличен. Вашият номер не е свързан с акаунта ви. Съхраняваме само криптиран маркер, без потребителско ID, за ограничено време." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Ще потвърдим текущия и новия ти имейл с еднократни кодове." @@ -39307,7 +38645,7 @@ msgstr "Уебхук {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Уебхукът е създаден" @@ -39331,7 +38669,7 @@ msgstr "Уебхукът е актуализиран" msgid "Webhook URL" msgstr "URL адрес на уебхука" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Уебхукове" @@ -39486,8 +38824,8 @@ msgstr "Това, което споделяте, не се актуализир #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Какво става?" @@ -39967,21 +39305,11 @@ msgstr "Можеш да премахнеш разрешението <0>{readMess msgid "You can sign back in at any time." msgstr "Можеш да влезеш отново по всяко време." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Винаги можеш да помолиш администраторите на тази инстанция за преглед от човек." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Все още можеш да създадеш акаунт или да влезеш. Ако поканите бъдат включени отново по-късно, ще можеш да използваш същия линк, за да се присъединиш." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Винаги можеш да пишеш на {supportEmail} за преглед от човек." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Можеш да използваш линкове, емоджита и Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Не можеш да добавяш изрази там" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Не можеш да добавяш нови реакции, докато си с наложено време за изчакване." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Не можеш да си приятел със себе си" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Не можеш да промениш прякора си тук" @@ -40094,7 +39422,7 @@ msgstr "Не можеш да си изпратиш покана за прият msgid "You can't send messages in this channel." msgstr "Не можеш да изпращаш съобщения в този канал." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Не можеш да изпращаш съобщения в тази общност." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Нямаш разрешение да извършиш това действие с този член." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Нямаш разрешение да се присъединиш към този гласов канал" @@ -40243,7 +39571,7 @@ msgstr "Нямаш разрешение да преименуваш това е msgid "You have been banned from this community." msgstr "Наложена ти е забрана в тази общност." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Ти блокира {username}. Отблокирай го, за да му изпращаш съобщения." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Имаш незапазени промени." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Имаш незапазени промени. Запази или нулирай, преди да излезеш." @@ -40270,7 +39598,7 @@ msgstr "Имаш незапазени промени. Запази или нул msgid "You haven't authorized any applications to access your account." msgstr "Нямаш оторизирани приложения с достъп до акаунта ти." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Не си член на тази общност достатъчно дълго, за да изпращаш съобщения." @@ -40326,11 +39654,6 @@ msgstr "Трябва да приемеш общите условия, за да msgid "You must verify your email before sending a report." msgstr "Трябва да потвърдиш имейла си, преди да изпратиш сигнал." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "За да смениш имейла си оттук, трябва да имаш достъп до текущия. Използвай потвърждение по телефона, ако е налично, или се свържи с поддръжката." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Нужно е разрешението „{manageRolesPermissionLabel} msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Нужно е разрешението „{manageRolesPermissionLabel}“, за да редактираш тези разрешения." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Нужно е разрешението „{manageWebhooksPermissionLabel}“, за да преглеждаш и редактираш уебхуковете за този канал." @@ -40384,18 +39707,14 @@ msgstr "Трябва да заявиш акаунта си, преди да мо msgid "You need to claim your account before you can start a direct message." msgstr "Трябва да заявиш акаунта си, преди да можеш да започнеш директно съобщение." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Трябва да заявиш акаунта си, за да изпращаш директни съобщения." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Трябва да заявиш акаунта си, за да изпращаш съобщения в тази общност." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Трябва да потвърдиш телефонен номер, за да изпращаш съобщения в тази общност." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Трябва да потвърдиш имейл адреса си, пр msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Трябва да потвърдиш имейла си, преди да можеш да закупиш {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Трябва да потвърдиш имейла си, за да изпращаш съобщения в тази общност." @@ -40424,11 +39743,6 @@ msgstr "Трябва да потвърдиш имейла си, за да изп msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Ти или някой, когото добавяш, вече има максималния брой отворени групови DM. Напусни едно и опитай отново." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Оставаш в {ownedNames}. Собствениците не могат да напуснат собствената си общност." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Звукът ти е изключен от модератори" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "След оторизацията ще те пренасочим към {redirectHostname}." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Ще напуснеш {count, plural, one {# общност, за която се отнася тази проверка} other {# общности, за които се отнася тази проверка}}, и акаунтът ти отново ще работи нормално." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Ще напуснеш {guildNames}. Нищо от публикуваното от теб не се изтрива и можеш да се присъединиш отново по-късно." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Ще трябва да завършиш и стъпката с имейла." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Действаш твърде бързо" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Действаш твърде бързо. Изчакай малко и опитай отново." @@ -40636,7 +39935,7 @@ msgstr "Изпращаш съобщения твърде бързо" msgid "You're streaming!" msgstr "Излъчваш на живо!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Наложено ти е време за изчакване. Съобщенията, реакциите и гласовият чат са на пауза, докато то изтече." @@ -40764,25 +40063,25 @@ msgstr "Плащането за подновяване чрез {storeName} не msgid "Your account" msgstr "Твоят акаунт" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Профилът ви ще се върне към нормалното веднага и няма да ви е необходим телефонен номер сега. Това не е постоянно освобождаване и може да поискаме тази проверка отново по-късно." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Акаунтът ти е свързан успешно. Вече можеш да затвориш този раздел и да се върнеш в приложението." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Акаунтът ти отново работи нормално." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Вашият акаунт е с ограничени възможности" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Вашият акаунт е ограничен. Проверете имейла си за информация как да го премахнете." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Акаунтът ти още не е заявен. Без имейл и парола няма да можеш да влизаш от други устройства и може да загубиш достъп до акаунта си. Заяви акаунта си сега, за да го защитиш." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Акаунтът ти е твърде нов, за да изпращаш съобщения в тази общност." @@ -40800,11 +40099,6 @@ msgstr "Акаунтът ти изисква многофакторно удос msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Акаунтът ти вече няма да бъде защитен с двуфакторно удостоверяване, когато влизаш с паролата си. Също така ще загубиш повишените си разрешения в общности, които изискват двуфакторно удостоверяване." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Акаунтът ти веднага заработва нормално и нищо не се премахва. Може да поискаме тази проверка отново по-късно." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Проверяваме картата ти за локализирани msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Картата ти отговаря на условията. Пренасочваме те към страницата за плащане." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Мобилният ти оператор съобщава, че този номер не е активен. Провери го и опитай отново или се свържи с поддръжката, ако е правилен." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Промените ви ще достигнат до всяка общност, която следва този канал, което може да отнеме минута. Всяко публикувано съобщение позволява 3 бързи редакции, след което по 1 на всеки 20 минути." @@ -40869,21 +40158,6 @@ msgstr "Устройството ти ще поиска да запазиш ак msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Устройството ти ще поиска да запазиш актуализиран ключ за достъп за {name}. Използвай същия телефон или защитен ключ, който току-що използва." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Имейл адресът ти е актуализиран." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Имейлът ти не може да получава съобщения. Добави работещ имейл, за да остане акаунтът ти достъпен." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Имейл адресът ти не може да получава съобщения. Актуализирай го, за да продължиш да използваш {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Имейл адресът ти е потвърден. Вече можеш да влезеш в акаунта си." @@ -41000,21 +40274,11 @@ msgstr "Съобщението ти не беше актуализирано" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Последната ти покупка вече не е в срока за възстановяване на сума. Свържи се с поддръжката при проблеми с таксуването." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "новият ти имейл" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Новият ти прякор или остави празно, за да го нулираш." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Номерът ви не е свързан с акаунта ви. Съхраняваме само криптиран маркер без потребителски ID за ограничено време." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Плащането ти беше отменено. Вече можеш да затвориш този раздел и да се върнеш в приложението." @@ -41054,11 +40318,6 @@ msgstr "Твоите закупени подаръци" msgid "your region" msgstr "твоя регион" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Регистрацията ти изисква допълнителна проверка срещу спам, преди да продължиш." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/cs/messages.po b/fluxer_app/src/features/i18n/locales/cs/messages.po index 6df110374..f997ba4be 100644 --- a/fluxer_app/src/features/i18n/locales/cs/messages.po +++ b/fluxer_app/src/features/i18n/locales/cs/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reakce} few {# reakce} many {# reakce} other {# r msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# reagující uživatel} few {# reagující uživatelé} many {# reagujícího uživatele} other {# reagujících uživatelů}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# sekunda} few {# sekundy} many {# sekundy} other {# sekund}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} v {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Váš odkaz na pozvánku vyprší za # sekundu.} few {Váš odkaz na pozvánku vyprší za # sekundy.} many {Váš odkaz na pozvánku vyprší za # sekundy.} other {Váš odkaz na pozvánku vyprší za # sekund.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Vybráno: {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 minuta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 hodin" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 měsíců (1 rok)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Záložní kódy 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Požadavek na 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 členové (píšou)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 měsíce" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 hodin" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 měsíců" @@ -2575,11 +2575,6 @@ msgstr "minutu" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Je k dispozici nová verze desktopové aplikace. Stáhněte instalační program a spusťte jej, abyste aktualizovali {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Byl odeslán nový ověřovací kód." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Údaje o účtu" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Účet slouží k rozesílání spamu, podvodům nebo zneužívání platformy." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Účet omezen" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Stav účtu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Účet je příliš nový" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Je potřeba ověřit účet" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Přidat bota do komunity s požadovanými oprávněními" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Přidat komentář (volitelné)" @@ -3054,8 +3052,10 @@ msgstr "Přidat téma k tomuto kanálu" msgid "Add a word…" msgstr "Přidat slovo…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Přidat funkční e-mailovou adresu" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Pokračujte přidáním účtu." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Nejprve si k účtu přidejte e-mail a heslo." @@ -3424,11 +3424,6 @@ msgstr "Přidáno: {createdDate} • naposledy použito: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Další komentáře (volitelné)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Vyžaduje se dodatečné ověření" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Všechny jazyky" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Zrušení je již naplánováno" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Nahlásit tuto zprávu také týmu bezpečnosti {productName}" @@ -4713,11 +4708,6 @@ msgstr "Zeptat se před zahájením hovorů" msgid "Ask for a passkey after your password when you sign in" msgstr "Požádat o přístupový klíč po zadání hesla při přihlašování" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Požádejte správce této instance, aby zkontrolovali váš účet. Tato instance je spravována nezávisle a pouze její správci mohou změnit váš účet." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Automaticky odstranit parametry sledování (jako utm_source, fbclid, gc msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Automaticky odstraňovat sledovací parametry z URL v odesílaných zprávách" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Automaticky kontrolovat zprávy na explicitní obsah v kanálech, které nejsou označeny jako určené pro dospělé." @@ -5359,8 +5349,6 @@ msgstr "Momentálně pryč" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Zpět" @@ -6506,11 +6494,6 @@ msgstr "Kamery a virtuální záznamová zařízení se vybírají zde ve {produ msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Kamery jsou vypnuté, pokud je účastníků více než {voiceChannelCameraUserLimit}" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Nemáte přístup k e-mailu?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Sem nelze nahrávat soubory" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Sem nelze nahrávat soubory" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Změnit e-mail" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Změnit emoji" @@ -7201,7 +7184,7 @@ msgstr "Změněn limit uživatelů z {oldCount} na {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Změněna vlastní adresa URL z {oldCode} na {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Změněna úroveň ověření z {oldLevel} na {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kanál nebo kategorie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Vlastní oprávnění kanálu" @@ -7509,8 +7492,6 @@ msgstr "Zkontrolujte připojení a zkuste to znovu." msgid "Check your connection, then try again." msgstr "Zkontrolujte připojení a zkuste to znovu." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Vyberte obrazovku v systémovém výběru" msgid "Choose a GIF" msgstr "Vyberte GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Vyberte metodu" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Zvolte si nové heslo." @@ -7680,8 +7656,8 @@ msgstr "Vyberte akci." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Vyberte emoji" @@ -7749,11 +7725,6 @@ msgstr "Zvolte, jak bude vaše instance fungovat" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Zvolte jednu z níže uvedených metod k prokázání vlastnictví domény. Stačí dokončit jen jednu." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Zvolte jednu metodu ověření. K dokončení této kontroly lze použít kteroukoli z nich." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Vyberte, co může {clientLabel} dělat ve vaší komunitě. Zrušte za msgid "Choose what friends see in their active now panel" msgstr "Vyberte, co přátelé uvidí na panelu „Právě aktivní“" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Zvolte, co musí mít členové, než budou moct přispívat nebo posílat přímé zprávy členům komunity." @@ -8030,8 +8001,8 @@ msgstr "Vyčistí zvuk mikrofonu, aby vám bylo dobře rozumět." msgid "Clear" msgstr "Vymazat" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Vymazat po" @@ -8053,7 +8024,7 @@ msgstr "Vymazat všechny simulované přílohy" msgid "Clear all token overrides" msgstr "Vymazat všechna přepsání tokenů" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Vymazat simulované přílohy" @@ -8066,14 +8037,14 @@ msgstr "Vymazat příkaz" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Vymazat vlastní stav" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Smazat všechny reakce z této zprávy?" @@ -8124,7 +8095,7 @@ msgstr "Vymazat vyhledávací pole" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Uhelný motiv" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Příkazy" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Komentáře jsou zakázány, protože jeden nebo více vybraných kanálů má zapnutý pomalý režim. Komentář by byl pomalým režimem zablokován hned po přeposlání." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Komentáře jsou zakázány, protože v kanálu {forwardChannelDisplayName} je zapnutý pomalý režim. Komentář by byl pomalým režimem zablokován hned po přeposlání." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Komentáře nejsou dostupné, když je zapnutý pomalý režim." @@ -8670,11 +8639,11 @@ msgstr "Komunity" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Komunity a kanály, kde nemůžete spravovat webhooky, jsou skryté." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Komunity uvedené v Objevování musí kontrolovat zprávy všech členů. Toto nastavení nelze změnit, dokud je Objevování zapnuté." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Komunity uvedené v Objevování vyžadují alespoň ověření e-mailu. Pokud je Objevování zapnuté, nelze vybrat možnost „Žádné“." @@ -8827,7 +8796,7 @@ msgstr "Název komunity" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Přezdívka v komunitě" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Profil v komunitě" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Profil v komunitě aktualizován" @@ -8907,7 +8876,7 @@ msgstr "Úroveň odznaků nepřečtených zpráv komunity" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Komunita aktualizována" @@ -8952,11 +8921,6 @@ msgstr "Porovnání" msgid "Complete mature content check" msgstr "Dokončit ověření věku pro obsah pro dospělé" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Pro další používání aplikace {productName} dokončete jeden z níže uvedených způsobů ověření." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Dokončit platbu" msgid "Complete the mature content check to unlock mature media." msgstr "Pro zpřístupnění médií pro dospělé dokončete ověření věku." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Pro další používání aplikace {productName} dokončete níže uvedené kroky ověření e-mailu a telefonu." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Dokončete požadované ověření, abyste mohli nadále používat {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Nastavit odznak profilu" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Pořadí propojení změněno" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Vyžaduje se souhlas" @@ -9349,16 +9304,6 @@ msgstr "Vytvořte autorizační URL s rozsahy a oprávněními." msgid "Contact" msgstr "Kontakt" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Kontaktovat podporu" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Pro pomoc kontaktujte správce této instance." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Tvůrce obsahu" msgid "Content filter" msgstr "Filtr obsahu" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Filtrování obsahu" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Typ obsahu pro kódování" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Omezení přístupu k obsahu" @@ -9416,12 +9361,10 @@ msgstr "Kontextové nabídky lze otevřít levým kliknutím (na tlačítka) neb #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Nastavte chování indikátoru nepřečtených zpráv pro ztlumené kan msgid "Control which chat updates are announced by assistive technology." msgstr "Určete, které aktualizace chatu oznamuje asistenční technologie." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Konverzace nenalezena" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Nepodařilo se přidat štítek" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Nepodařilo se přidat tohoto přítele do skupiny. Zkuste to prosím znovu." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Nepodařilo se přidat do skupiny" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Nepodařilo se vytvořit odkaz na motiv" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Nepodařilo se vytvořit odkaz na pozvánku" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Nepodařilo se ukončit dodatečnou lhůtu" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Nepodařilo se vygenerovat odkaz na pozvánku. Zkuste to prosím znovu." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Nepodařilo se zpracovat obrázek" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Nepodařilo se publikovat tuto zprávu" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Nepodařilo se znovu připojit ke komunitě Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Nepodařilo se odebrat zvuk při vstupu" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Nastavení kanálu se nepodařilo uložit" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Nepodařilo se uložit zvuk při vstupu" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Žádost se nepodařilo stáhnout" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Odpočítávání" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Země" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Vytvořte účet správce" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Vytvořit skupinovou konverzaci {addableCount, plural, one {se zbývajícím # příjemcem} few {se zbývajícími # příjemci} many {s # zbývajícího příjemce} other {se zbývajícími # příjemci}} a ostatní přeskočit?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Vytvořit webhook" @@ -10948,7 +10884,7 @@ msgstr "Vlastní emoji {emojiName} z komunity" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Vlastní zvuky při vstupu nejsou na této instanci zapnuté." @@ -11108,7 +11044,7 @@ msgstr "Vlastní zpracování zvuku" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Vlastní text upozornění" @@ -11530,11 +11466,6 @@ msgstr "Výchozí vyhledávač" msgid "Default shortcuts" msgstr "Výchozí zkratky" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Výchozí karta" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Smazat tuto zprávu" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Smazat tuto zprávu? Nelze vrátit zpět." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Smazat tuto zprávu? Nelze vrátit zpět. Tato zpráva bude také odebrána z každé komunity, která tento kanál sleduje." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Režim pro vývojáře" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Možnost pro vývojáře" @@ -12299,7 +12230,7 @@ msgstr "Přímý vstup" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Režim zobrazení" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Zobrazované jméno" @@ -12858,7 +12789,7 @@ msgstr "Chceš se připojit do komunity {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doktore, jsem z budoucnosti. Přicestoval jsem sem ve stroji času, který jste vynalezl. Teď potřebuji vaši pomoc, abych se dostal zpět do roku 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Upravit místní čas profilu" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Upravit publikovanou zprávu?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Upravit své zprávy výše nebo níže" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Upravte si vzhled profilu a podívejte se na živý náhled" @@ -13590,10 +13521,8 @@ msgstr "Nárok na vrácení peněz do {windowEndsOn}. Tím se také okamžitě z msgid "Email" msgstr "E-mail" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Je vyžadována e-mailová adresa." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-mail změněn" @@ -13616,49 +13547,17 @@ msgstr "E-mail změněn" msgid "Email delivery" msgstr "Doručování e-mailů" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-mail nebo telefon" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Je potřeba znovu ověřit e-mail nebo telefon" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Je třeba znovu ověřit e-mail" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-mail není k dispozici" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Aktualizace e-mailu momentálně není k dispozici. Zkuste to prosím později nebo kontaktujte podporu." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Je třeba aktualizovat e-mail" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Napište nám e-mail a váš účet osobně posoudíme. Uveďte, že nemůžete provést ověření pomocí SMS, a my se o zbytek postaráme. Odpovíme e-mailem, takže vyřízení nebude okamžité." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Lišta s výzvou k ověření e-mailu" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Je potřeba ověřit e-mail" @@ -13675,6 +13574,10 @@ msgstr "Přepsání stavu ověření e-mailu" msgid "Email verified successfully" msgstr "E-mail byl úspěšně ověřen" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "E-maily na vaši současnou adresu se nedoručují. Zadejte novou e-mailovou adresu a tam pošleme kód." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Vložený obsah" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Vložený obsah skryt" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Vložený obsah znovu zobrazen" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Povolit přehrávání řeči /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Pro změnu tohoto nastavení zapněte na svém účtu dvoufaktorové ověřování" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Zadejte platnou URL nebo kód šablony platformy {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Zadejte platnou e-mailovou adresu." @@ -14298,33 +14199,11 @@ msgstr "Zadejte platnou e-mailovou adresu." msgid "Enter a valid message link." msgstr "Zadejte platný odkaz na zprávu." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Zadejte platné číslo mobilního telefonu." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Zadejte platné telefonní číslo" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Zadejte platné uživatelské jméno ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Zadejte e-mailovou adresu, ke které máte přístup. Pošleme vám na ni kód." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Zadejte kód" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Přejít na celou obrazovku" msgid "Enter gift code…" msgstr "Zadejte dárkový kód…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Zadejte nový e-mail" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Zadejte jeden ze svých záložních kódů, pokud nemůžete použít s msgid "Enter one of your backup codes." msgstr "Zadejte jeden ze svých záložních kódů." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Zadejte telefonní číslo" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Zadejte {digitCount}místný kód ze své ověřovací aplikace nebo jed msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Zadejte {digitCount}místný kód ze své ověřovací aplikace." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Zadejte {digitCount}místný kód odeslaný na číslo {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Zadejte {MFA_CODE_DIGIT_COUNT}místný kód odeslaný na {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Zadejte kód" @@ -14408,11 +14267,6 @@ msgstr "Před pokračováním zadejte kód." msgid "Enter the code from your authenticator app." msgstr "Zadejte kód ze své ověřovací aplikace." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Zadejte kód odeslaný na adresu {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Zadejte kód odeslaný na váš aktuální e-mail." @@ -14426,6 +14280,7 @@ msgstr "Zadejte kód odeslaný na vaši e-mailovou adresu." msgid "Enter the code shown in the app to continue." msgstr "Zadejte kód zobrazený v aplikaci a pokračujte." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Zadejte kód, který jsme vám poslali e-mailem na vaši novou adresu." @@ -14434,11 +14289,6 @@ msgstr "Zadejte kód, který jsme vám poslali e-mailem na vaši novou adresu." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Zadejte kód, který jsme vám poslali na e-mail, abyste ho ověřili. Heslo se nastaví po potvrzení kódu." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Zadejte kód z e-mailu" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Zadejte odkaz na pozvánku pro připojení ke komunitě." @@ -14452,11 +14302,6 @@ msgstr "Zadejte nový e-mail, který chcete použít. Pošleme na něj kód." msgid "Enter the PIN for your security key to continue." msgstr "Zadejte PIN pro váš bezpečnostní klíč a pokračujte." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Zadejte kód SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Zadejte tento kód do prohlížeče a dokončete přihlášení." @@ -14492,11 +14337,6 @@ msgstr "Zadejte své jméno" msgid "Enter your password." msgstr "Zadejte heslo." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Zadejte své telefonní číslo" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Zvuk při vstupu" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Soubory zvuků při vstupu mohou mít nejvýše {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Knihovna zvuků při vstupu je plná" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Zvuk při vstupu odebrán" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Zvuk při vstupu uložen" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Zvuky při vstupu" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Zvuky při vstupu nejsou dostupné" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Vyprší:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Nastavení filtru explicitního obsahu" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Zkopírování do schránky se nezdařilo" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Nepodařilo se vytvořit webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Nepodařilo se načíst vlastní odkaz na pozvánku. Zkuste to znovu." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Nepodařilo se načíst webhooky" @@ -15190,11 +15030,6 @@ msgstr "Nepodařilo se odebrat vlastní odkaz na pozvánku. Zkuste to znovu." msgid "Failed to resend code. Try again." msgstr "Kód se nepodařilo odeslat znovu. Zkuste to prosím znovu." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Nepodařilo se znovu odeslat ověřovací kód. Zkuste to prosím později." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Zprávu se nepodařilo odeslat. Podržením zobrazíte možnosti." msgid "Failed to send report. Try again." msgstr "Nepodařilo se odeslat nahlášení. Zkuste to znovu." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Odeslání ověřovacího e-mailu se nezdařilo. Zkuste to prosím později." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Spuštění se nezdařilo" @@ -15551,15 +15381,15 @@ msgstr "Filtrovat podle uživatele" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtrovat zprávy všech členů" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtrovat zprávy členů bez rolí" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Sledovat tento kanál" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Sledujte nás a získejte tato oznámení v kanálu, který si vyberete." @@ -15773,7 +15603,7 @@ msgstr "Sledovaný kanál {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Sledované kanály" @@ -15857,11 +15687,6 @@ msgstr "Pouze pro britské oči..." msgid "For me" msgstr "Pro mě" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Při tomto ověření posíláte SMS vy nám, místo abyste ji od nás dostali." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Pro vaši bezpečnost prosím potvrďte, že jste to vy, abyste mohli pokračovat." @@ -15905,7 +15730,7 @@ msgstr "Vynutit zástupný náhled načítání" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Vynutit označení médií jako určených pro dospělé" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Vynutit přesun do AFK kanálu" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Vynutit chybějící oprávnění „{permissionName}“" @@ -15948,7 +15773,7 @@ msgstr "Vynutit zobrazení upozornění k vlastnímu odkazu na pozvánku" msgid "Force show voice connection" msgstr "Vždy zobrazit stav hlasového připojení" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Vynutit zapnutý pomalý režim" @@ -16020,7 +15845,7 @@ msgstr "Přeposlat médium" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Přeposlat zprávu" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Překryv s územním omezením" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Geograficky omezeno" @@ -16490,12 +16315,6 @@ msgstr "Získejte animovaný avatar a banner, odznak odběratele, čtyřmístný msgid "Get monthly" msgstr "Získat měsíčně" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Získat nový kód" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Dárkové kódy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Délka trvání dárku" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventář dárků" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Průchod inventářem dárků" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Dárek nenalezen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Dárek uplatněn" @@ -17030,7 +16849,7 @@ msgstr "Skupinová konverzace" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Zdravíme, {displayName}! Dokončete registraci svého účtu, abyste k němu neztratili přístup." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Zdravíme, {displayName}! Ověřte prosím svou e-mailovou adresu." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Ahoj {displayName}, nemůžeme doručit e-mail na vaši adresu. Přidejte platnou e-mailovou adresu pro ověření účtu." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Skrýt vlastní sdílení obrazovky?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Vysoká" @@ -17755,11 +17579,6 @@ msgstr "Jsem popisek" msgid "I changed my mind" msgstr "Rozmyslel(a) jsem si to" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Potřebuji jiný způsob" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Pokud se toto nahlášení týká konkrétní zprávy, nahlaste místo t msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Pokud se toto nahlášení týká konkrétních zpráv, nahlaste místo toho tu nejrelevantnější. Nahlášení zpráv poskytuje našemu bezpečnostnímu týmu nejjasnější kontext a přidání podrobností do komentářů nám může pomoci s rychlejším posouzením. Pokračujte v nahlášení uživatele jako celku pouze v případě, že nahlášení zprávy by nevystihovalo širší problém." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Pokud nemůžete provést ověření pomocí SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Pokud nemůžete použít žádnou metodu ověření, obraťte se s žádostí o pomoc na podporu." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Velikost rozhraní" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Neplatný zvukový soubor" @@ -18674,8 +18483,10 @@ msgstr "Neplatný JSON. Vložte celou odpověď z výše uvedené adresy URL." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Připojit se k hlasovému hovoru" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Připojit se k hlasovému kanálu" @@ -19613,16 +19424,6 @@ msgstr "Další informace o Visionary" msgid "Leave" msgstr "Opustit" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Opustit {count, plural, one {# komunitu} few {# komunity} many {# komunity} other {# komunit}} a odložit toto ověření?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Opustit komunity a odložit ověření" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Povolit čtečkám obrazovky oznamovat nové zprávy, jakmile dorazí do otevřeného kanálu. Zvuky oznámení zůstanou beze změny." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Nechte komunitu, ať se moderuje sama" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Knihovna" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Knihovna je plná (max. {max} zvuků). Než přidáte další, jeden smažte." @@ -19812,7 +19613,7 @@ msgstr "Knihovna: {count} z {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Doživotní" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Načítání..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Načítání…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Nízká" @@ -20416,7 +20217,7 @@ msgstr "Spravovat funkce komunity" msgid "Manage emoji & stickers" msgstr "Spravovat emoji a samolepky" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Spravovat příchozí webhooky, které mohou posílat zprávy do tohoto kanálu." @@ -20514,7 +20315,7 @@ msgstr "Označit všechny nepřečtené kanály v doručených zprávách jako p msgid "Mark as read" msgstr "Označit jako přečtené" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Označit jako uplatněné" @@ -20676,14 +20477,14 @@ msgstr "Komunita pro dospělé" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Obsah pro dospělé" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Obsah pro dospělé a upozornění na obsah" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maximální doba platnosti (dny)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Maximální ochrana pro prostory vhodné pro rodiny" @@ -20924,7 +20725,7 @@ msgstr "Zastavit přehrávání" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Ban člena zrušen" msgid "Member updated" msgstr "Člen upraven" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Ověření členů" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Úroveň ověření členů" @@ -21048,7 +20849,7 @@ msgstr "Členové jsou odebráni, když jsou offline, pokud jim není přidělen msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Členové s oprávněním „{pinMessagesPermissionLabel}“ mohou připínat zprávy pro všechny." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Členové s rolemi mohou tyto kontroly obejít. Pro veřejné prostory doporučujeme povolit ověření." @@ -21153,7 +20954,7 @@ msgstr "Zmínky o vás se zde zobrazují po dobu {retentionDays} dní." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Pouze zmínky" @@ -21292,7 +21093,7 @@ msgstr "Nastavení zobrazení zpráv je k dispozici pouze na počítači." msgid "Message editing" msgstr "Úprava zpráv" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Zpráva přeposlána" @@ -21341,7 +21142,7 @@ msgstr "Tlačítka pro zadávání zpráv" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Zpráva je příliš dlouhá" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Náhledy zpráv v seznamu přímých zpráv" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Zpráva publikována" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Zprávy publikované v kanálu #{sourceName} se nyní zobrazí v kanálu #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Zprávy publikované v těchto kanálech oznámení se zkopírují sem." @@ -21504,7 +21305,7 @@ msgstr "Zprávy publikované v těchto kanálech pro oznámení se kopírují do msgid "Messages you can bookmark" msgstr "Zprávy, které si můžete uložit do záložek" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Zasílání zpráv je v této komunitě dočasně pozastaveno." @@ -21733,30 +21534,30 @@ msgstr "Simulovat vypršení platnosti za 1 den" msgid "Mock expires in 7 days" msgstr "Simulovat vypršení platnosti za 7 dní" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Simulovat překryv s územním omezením" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Simulovaný inventář dárků" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simulovat příchozí hovor" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Simulovaný důvod omezení přístupu ke kanálu pro dospělé" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Simulovaný důvod omezení přístupu k médiím pro dospělé" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Simulovat polohu ve Spojeném království" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Ukázkové avatary uživatelů v různých velikostech a se všemi kombinacemi stavů." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Simulovaná varianta" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Simulované průchody aplikací" @@ -22698,14 +22494,16 @@ msgstr "Nová komunita ztlumena" msgid "New direct message" msgstr "Nová soukromá konverzace" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Nový e-mail" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formulář pro nový e-mail" @@ -22816,9 +22614,7 @@ msgstr "Nejnovější nahoře" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Další" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Ne" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Chybí oprávnění {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Chybí oprávnění {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Žádné změny k uložení" msgid "No channels available" msgstr "Žádné kanály nejsou k dispozici" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Nebyly nalezeny žádné kanály" @@ -23233,11 +23029,6 @@ msgstr "Nenalezena žádná oprávnění" msgid "No personal words yet." msgstr "Zatím žádná vlastní slova." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Bez telefonního čísla" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Žádné výsledky" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Nebyly nalezeny žádné výsledky" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Žádní uživatelé nenalezeni" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Ověření není vyžadováno." @@ -23452,7 +23243,7 @@ msgstr "Ověření není vyžadováno." msgid "No verification methods available" msgstr "Nejsou k dispozici žádné metody ověření" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Žádné webhooky" @@ -23504,7 +23295,7 @@ msgstr "Bez převodu" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Žádné" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Žádné (normální chování)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norština" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Nejste členem dostatečně dlouho" @@ -23798,9 +23589,9 @@ msgstr "Předměty" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Vypnuto" @@ -23848,7 +23639,7 @@ msgstr "Nejstarší napřed" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Zapnuto" @@ -23884,11 +23675,6 @@ msgstr "Jednu nebo více příloh se nepodařilo přečíst nebo nahrát. Soubor msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Jeden nebo více souborů, které se snažíte nahrát, překračuje maximální limit velikosti {maxSizeFormatted} na soubor." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Jedna rychlá kontrola" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Pouze reproduktory" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Toto nastavení může změnit pouze vlastník komunity" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Otevřít emoji v prohlížeči" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Otevřít výběr emoji" @@ -24382,12 +24168,8 @@ msgstr "Ikona pro otevření nabídky" msgid "Open message history threshold" msgstr "Otevřít nastavení časové hranice historie zpráv" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Otevřít překrytí" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Otevřít vyskakovací okno" @@ -24485,11 +24267,6 @@ msgstr "Otevřete novou aplikaci. Jste již přihlášeni." msgid "Open the shortcuts list for quick actions." msgstr "Otevřete si seznam zkratek pro rychlé akce." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Otevřete ověřovací e-mail a použijte odkaz uvnitř. Toto okno se aktualizuje po otevření odkazu." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Otevřít nastavení zvuku a videa" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Otevřete prohlížeč, přihlaste se a poté zadejte níže uvedený kód pro propojení účtu." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Otevřete si zprávy" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Otevřete svou starou aplikaci {PRODUCT_NAME} a vyberte „Propojit nové zařízení“, poté zadejte níže uvedený kód." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Otevřete v telefonu aplikaci pro zprávy a vytvořte novou SMS." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Otevřete v telefonu aplikaci pro zprávy a začněte psát novou SMS." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Další reakce…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Naše služba ověřování telefonních čísel má teď výpadek. Problém je u nás, nikoli ve vašem čísle. Počkejte pár minut a zkuste stejné číslo znovu." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, podvody, škodlivé odkazy nebo falešná tvrzení, která pravděpodobně způsobí skutečnou škodu." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefon" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Telefonní číslo" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Je vyžadováno telefonní číslo" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Telefonní číslo ověřeno" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Je potřeba znovu ověřit telefon" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Krok ověření telefonu" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Ověření telefonního čísla není pro tento účet k dispozici. Použijte jinou metodu nebo kontaktujte podporu." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Je vyžadováno ověření telefonu" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Vyberte 4místné číslo za svým uživatelským jménem" msgid "Pick the appearance this administrator account should start with." msgstr "Vyberte vzhled, se kterým by měl tento účet správce začít." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Vyberte metodu, kterou můžete dokončit hned." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Obraz v obraze" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Připnout" @@ -25471,7 +25176,7 @@ msgstr "Připnout skupinovou konverzaci" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Připínat nebo odepínat libovolné zprávy." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Připnout tuto zprávu do kanálu, aby ji všichni viděli." @@ -26227,18 +25932,18 @@ msgstr "Barva profilu" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Přizpůsobení profilu" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Přizpůsobení profilu pro {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formulář pro úpravu profilu" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Typ profilu" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profil aktualizován" @@ -26340,7 +26045,7 @@ msgstr "Nabídnout přepnutí při připojení nového zvukového zařízení" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Koordinace nájezdu" msgid "Rate" msgstr "Rychlost" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Překročen limit požadavků" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Nezpracovaný JSON vloženého obsahu" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Odebrat uživatele {userName} z přátel?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Odebrat vše" @@ -27290,7 +26990,7 @@ msgstr "Odstranit všechny reakce {emojiNameWithColons} z této zprávy?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Odebrat všechny reakce" @@ -27899,20 +27599,10 @@ msgstr "Uživatelská značka nahlášeného uživatele (volitelné)" msgid "Reposts: <0>{countLabel}" msgstr "Znovuzveřejnění: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Nejprve si vyžádejte nový kód." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Vyžádat nový odkaz pro resetování" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Nejprve si vyžádejte ověřovací kód." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Žádosti" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Vyžadovat dvoufaktorové ověřování pro moderátorské zásahy" @@ -27958,7 +27648,7 @@ msgstr "Vyžadovat autorizační tok OAuth2 s kódem" msgid "Require passkey" msgstr "Vyžadovat přístupový klíč" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Vyžadovat dvoufaktorové ověřování, než budou moderátoři moci banovat, vyhazovat nebo dočasně omezovat členy či mazat zprávy." @@ -27972,46 +27662,6 @@ msgstr "Povinné" msgid "Required 2FA for moderation actions" msgstr "Vyžadováno 2FA pro moderátorské akce" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Výchozí karta požadované akce" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Průběh požadované akce" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Krok ověření telefonu v požadované akci" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Probíhající opětovné odesílání v požadované akci" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Výsledek opětovného odeslání v požadované akci" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Text opětovného ověření v požadované akci" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Varianta požadované akce" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Překrytí s požadovanými akcemi" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Při pozvání tohoto bota vyžaduje URI přesměrování a autorizační kód." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Vyžaduje ověřenou e-mailovou adresu a účet starý alespoň 5 minut." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Vyžaduje ověřenou e-mailovou adresu." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Vyžaduje ověřené telefonní číslo." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Vyžaduje vše ze střední úrovně a navíc členství v komunitě po dobu alespoň 10 minut." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Znovu odeslat ({resendSecondsRemaining} s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Znovu odeslat ({secondsRemaining} s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Probíhající odesílání na tlačítku Znovu odeslat" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Znovu odeslat kód" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Znovu odeslat e-mail" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Výsledek opětovného odeslání" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Znovu odesláno" @@ -28518,21 +28152,6 @@ msgstr "Zobrazit" msgid "Reveal spoiler" msgstr "Zobrazit spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Pro pokračování v používání {productName} znovu ověřte svůj e-mail nebo ověřte své telefonní číslo." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Znovu ověřte svůj e-mail, abyste mohli nadále používat aplikaci {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Znovu ověřte své telefonní číslo, abyste mohli nadále používat aplikaci {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Sytost" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Náhled při posouvání v záznamu" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Hledat kanály" msgid "Search communities" msgstr "Hledat komunity" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Hledat země..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Hledat země…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Vyberte zemi svého pobytu." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Vybrat…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Odeslat" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Odeslat ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Odeslat další nahlášení" msgid "Send button" msgstr "Tlačítko Odeslat" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Odeslat kód" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Odesílat zprávy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Odesílání zpráv zakázáno" @@ -30151,32 +29759,11 @@ msgstr "Odeslat uložené médium {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Odesílat zprávy s převodem textu na řeč pomocí /tts. Členům, kteří mají převod textu na řeč zapnutý, se přečtou nahlas." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Odeslat kód <0>{0} na <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Pošlete kód na níže uvedené telefonní číslo." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Odeslat tento kód" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Poslat tento připnutý příspěvek zpět v čase?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Odeslat na" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Odeslat hlasovou zprávu" msgid "Send:" msgstr "Odesílání:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Odesílání SMS na toto telefonní číslo je pro {PRODUCT_NAME} příliš drahé, takže nám ji musíte poslat vy. Víme, že to není ideální. Můžete také požádat správce této instance o zrušení tohoto požadavku pro váš účet." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Odesílání SMS na toto telefonní číslo je pro {PRODUCT_NAME} příliš drahé, takže nám ji musíte poslat vy. Víme, že to není ideální. Můžete také kontaktovat <0>{SUPPORT_EMAIL} a požádat o zrušení tohoto požadavku pro váš účet." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Postupné odesílání" msgid "Serve the token file" msgstr "Poskytnout soubor tokenu" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Chyba služby" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Nastavit vlastní zkratku pro \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Nastavit vlastní stav" @@ -30486,18 +30060,6 @@ msgstr "Hlasový region nastaven na {region}" msgid "Set the voice region to automatic" msgstr "Hlasový region nastaven na automatický" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Odložit tuto kontrolu" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Odložit tuto kontrolu?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Nastavit zájmena" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Nastavit stav" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Během zaznamenávání jsou klávesové zkratky pozastavené." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Zkraťte zprávu a zkuste to znovu." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Zobrazit ikonu {productName} v oznamovací oblasti nebo v řádku nabídek" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Zobrazit upozornění na obsah" @@ -31672,7 +31234,7 @@ msgstr "Pomalý režim · čekejte {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Pomalý režim aktivní" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Pomalý režim je nastaven na {durationLabel}. Před odesláním další zprávy počkejte." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Zbývající čas pomalého režimu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulace pomalého režimu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Zbývající čas pomalého režimu" @@ -31807,11 +31369,6 @@ msgstr "Plynulé posouvání" msgid "Smoother video" msgstr "Plynulejší video" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Ověření SMS zprávou momentálně není k dispozici. Zkuste to prosím později, nebo kontaktujte podporu." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Při přípravě této samolepky se něco pokazilo. Zkuste jiný soubor nebo to zkuste znovu za chvíli." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Něco se pokazilo při publikování. Zkuste to za chvíli znovu." @@ -32009,11 +31566,9 @@ msgstr "Něco se pokazilo. Znovu načtěte stránku nebo se znovu přihlaste." msgid "Something went wrong. Try again later." msgstr "Něco se pokazilo. Zkuste to prosím později." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Něco se pokazilo. Zkuste to znovu." @@ -32352,11 +31907,6 @@ msgstr "Vypršel časový limit pro přihlášení pomocí jednotného přihlá msgid "Staff controls" msgstr "Ovládací prvky pro zaměstnance" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Mohou být účtovány standardní poplatky za zprávy od vašeho operátora." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Animace hvězdy" msgid "Starred channels" msgstr "Oblíbené kanály" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Transport příjemce:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Předplatné" @@ -33051,14 +32599,12 @@ msgstr "Scénáře předplatného" msgid "Subtext" msgstr "Drobný text" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Úspěch" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Doporučeno pro většinu komunit" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Systém a uvítání" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Systémová oznámení od zaměstnanců {productName}. Zde nelze odpovídat." @@ -33765,11 +33311,6 @@ msgstr "Výběr textu" msgid "Text size" msgstr "Velikost textu" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Pošlete nám SMS ze svého telefonu" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Thajština" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Děkujeme, že pomáháte udržovat {productName} v bezpečí. Vaše nahlášení posoudíme co nejdříve." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Tento kód nefungoval. Zkontrolujte ho a zkuste to znovu." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Platnost kódu vypršela. Vyžádejte si nový kód." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Operace se nedokončila. Některé komunity jste již mohli opustit a váš účet je stále uzamčený. Dokončete ji opětovným stisknutím tlačítka „Odložit tuto kontrolu“." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Nepodařilo se to provést. Nic se nezměnilo. Zkuste to znovu." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Nevypadá to jako platná barva. Zkuste hex, rgb(), hsl() nebo název ba msgid "That doesn't look like a valid URL." msgstr "Nevypadá to jako platná adresa URL." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Tento e-mail se již používá." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Přepsání odepřelo {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Stránka, kterou hledáte, neexistuje nebo byla přesunuta." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Ověření telefonu je odložené. Zbývá jeden krok s e-mailem." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Nejsou k dispozici žádné kanály, pro které by bylo možné vytvoři msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "V této komunitě momentálně nejsou k dispozici žádné role k přiřazení, ale novou roli můžete vytvořit v <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Pro tento kanál nejsou nakonfigurovány žádné webhooky. Vytvořte webhook, abyste externím aplikacím umožnili zveřejňovat zprávy." @@ -34273,7 +33784,7 @@ msgstr "Při načítání pozvánek došlo k chybě. Zkuste to znovu." msgid "There was an error loading the stickers. Try again." msgstr "Při načítání samolepek došlo k chybě. Zkuste to znovu." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Při načítání webhooků pro tento kanál došlo k chybě. Zkuste to znovu." @@ -34417,7 +33928,7 @@ msgstr "Tento kanál může publikovat 10 zpráv za sebou, pak jednu další ka msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Tento kanál může publikovat 10 zpráv za sebou, pak jednu další každých 6 minut. Zkuste to znovu za pár minut." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Tento kanál nepodporuje webhooky." @@ -34550,12 +34061,12 @@ msgstr "Toto propojení nebylo ověřeno." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Obsahuje citlivý obsah." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Tato konverzace již není k dispozici." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Tato skupina má příliš mnoho lidí" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Tato skupina je plná. Než přidáte další lidi, někoho odeberte." @@ -34715,11 +34226,6 @@ msgstr "Toto je vlastní samolepka z komunity." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Toto je kanál s věkovým omezením. Aktualizace mohou jít pouze do kanálů s věkovým omezením." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Toto je kontrola proti spamu. Vaše telefonní číslo není propojeno s vaším účtem." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Toto je zakázáno" msgid "This is how messages appear" msgstr "Takto se zobrazují zprávy" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Tato možnost není pro váš účet momentálně dostupná. Požádejte správce této instance o posouzení." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Toto není momentálně dostupné pro váš účet. Napište na {supportEmail} a někdo to zkontroluje." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Tohle není kanál, který hledáte." @@ -34792,11 +34288,6 @@ msgstr "Toto je váš poslední přístupový klíč a přístupové klíče jso msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Toto je váš poslední přístupový klíč. Jakmile o něj přijdete, nebudete moci používat přístupový klíč jako druhý faktor." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Toto není mobilní číslo, takže nemůže přijímat naše SMS. Zkuste mobilní číslo nebo kontaktujte podporu, pokud si myslíte, že je to chyba." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Tato zpráva již byla smazána." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Tato zpráva již byla publikována" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Tato zpráva již neexistuje." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Tato přezdívka bude viditelná pouze v této komunitě" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Toto číslo se ověřuje tak, že nám sami pošlete SMS. Vraťte se a znovu spusťte ověření telefonu, abyste získali kód a číslo, na které ho poslat." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Toto číslo vyžaduje ověření odesláním SMS nám místo přijetí SMS od nás." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Tento účastník má vypnutý zvuk" msgid "This participant was deafened by moderators" msgstr "Moderátoři tomuto účastníkovi vypnuli zvuk" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Toto telefonní číslo nelze použít. Zkuste jiné mobilní číslo nebo kontaktujte podporu." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Toto telefonní číslo již bylo použito. Zkuste jiné číslo nebo kontaktujte podporu." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Tento uživatel nemá v této komunitě žádné role." msgid "This user is already banned from the community." msgstr "Tento uživatel už má v komunitě ban." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Tento uživatel již není k dispozici." @@ -35065,11 +34536,6 @@ msgstr "Tohoto uživatele do komunity nuceně přidal administrátor platformy." msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Platnost ověřovací relace vypršela. Vraťte se do aplikace {productName} a spusťte platbu znovu." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Ověřovací relace vypršela. Začněte znovu." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Tímto se odhlásíte, vymažou se soubory z mezipaměti a uložené rel msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Tímto se budou důvěryhodně otevírat všechny externí odkazy a přeskočí se upozornění pro každou doménu. Vaše stávající důvěryhodné domény budou nahrazeny. Toto je méně bezpečné." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Toto okno se automaticky aktualizuje, jakmile obdržíme vaši zprávu." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Lišta s názvem" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Platforma záhlaví" @@ -35470,18 +34931,11 @@ msgstr "Tón" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Převést HDR snímky do standardního rozsahu, čímž se sníží maximální jas." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Příliš mnoho pokusů. Chvíli počkejte a zkuste to znovu." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Příliš mnoho komunit" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Příliš mnoho požadavků. Zkuste to znovu později." @@ -36151,8 +35605,10 @@ msgstr "Nepodařilo se připravit žádné emoji k nahrání. Došlo k následuj #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Nedostupné" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Nekategorizováno" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Účet s nedokončenou registrací" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Nečíslovaný seznam" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Odepnout" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Odepnout zprávu" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Odepnout tuto zprávu?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Neuložené změny" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Nepodporovaný audio soubor." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Dokud to znovu nezapnu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Neověřený e-mail" @@ -36958,12 +36414,7 @@ msgstr "Aktualizujte aplikaci {productName}, abyste si mohli tuto zprávu prohl msgid "Update app" msgstr "Aktualizovat aplikaci" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Aktualizovat e-mail" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Aktualizovat můj stav" @@ -37306,18 +36757,13 @@ msgstr "Použijte {url} tam, kam se má vložit adresa URL obrázku." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Použijte speciální okno k nastavení data, od kterého se bude zobrazovat historie zpráv pro členy, kteří nemají oprávnění {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Použijte jinou e-mailovou adresu a ověřte ji kódem." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Použít skutečné" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Použít skutečný typ prémia" @@ -37335,16 +36781,6 @@ msgstr "Použít jinou metodu" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Používejte ověřovací aplikaci ke generování kódů pro dvoufaktorové ověřování" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Použijte e-mailovou adresu, ke které máte přístup. Pošleme vám na ni kód." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Použijte e-mail, který se liší od vašeho současného." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Použít tmavý motiv v celé aplikaci" msgid "Use default" msgstr "Použít výchozí" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Použít jiný e-mail" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Použít e-mail" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Použít přístupové klíče pro dvoufaktorové ověřování?" msgid "Use passkeys to sign in without a password" msgstr "Používejte přístupové klíče k přihlášení bez hesla" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Použít telefon" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Použít text pro opětovné ověření" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Uživatel přejde do jiného kanálu" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Uživatel nenalezen" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Ověření" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Ověření a bariéry členství" @@ -37970,15 +37387,8 @@ msgstr "Ověřovací kód" msgid "Verification code sent" msgstr "Ověřovací kód odeslán" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Ověřovací kód odeslán. Zkontrolujte svou novou e-mailovou schránku." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Ověřovací e-mail byl odeslán. Zkontrolujte si doručenou poštu." @@ -38038,23 +37448,6 @@ msgstr "Formulář pro ověření identity" msgid "Verify it's you" msgstr "Ověřte, že jste to vy" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Ověřit telefon" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Ověřit telefonní číslo" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formulář pro ověření telefonního čísla" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Před přidáním ověřovací aplikace si ověřte svůj e-mail." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Před změnou přezdívky, avataru, banneru, popisu profilu, zájmen nebo barvy zvýraznění pro tuto komunitu ověřte svůj e-mail." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Před změnou uživatelského jména, zobrazovaného jména, avataru, banneru, popisu profilu, zájmen, časového pásma nebo soukromí odznaku {premiumProductName} ověřte svůj e-mail." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Před úpravou tohoto komunitního profilu si ověřte svůj e-mail. Stále si ho můžete prohlédnout zde." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Před úpravou profilu si ověřte svůj e-mail. Stále si ho zde můžete prohlédnout." @@ -38113,11 +37506,6 @@ msgstr "Před odesláním žádostí o přátelství si ověřte svůj e-mail." msgid "Verify your email first" msgstr "Nejprve ověřte svůj e-mail" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Ověřte svůj e-mail nebo telefon, abyste mohli nadále používat {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Ověřte svůj e-mail, abyste mohli kupovat dárky." msgid "Verify your email to change your username" msgstr "Ověřte svůj e-mail pro změnu uživatelského jména" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Ověřte svůj e-mail, abyste mohli nadále používat {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Ověřte svůj e-mail, abyste mohli upravit tento komunitní profil" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Ověřte svůj e-mail pro úpravu profilu" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Verze" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Velmi vysoká" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Zvýšit hlasitost" msgid "Wait a moment before deleting more messages." msgstr "Před smazáním dalších zpráv chvíli počkejte." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Moment. Toto okno se automaticky zavře, jakmile obdržíme vaši zprávu." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Doba čekání mezi zprávami. Členové s oprávněním „{bypassSlowmodePermissionLabel}“ nemusí čekat." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Počkejte zde" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Čekání na přístupový klíč…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Čekání na vypršení pomalého režimu v kanálu {forwardChannelDisplayName}." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Čekání na vypršení pomalého režimu v jednom nebo více vybraných kanálech." @@ -39115,16 +38482,6 @@ msgstr "Tento motiv se nepodařilo načíst. Může být poškozený nebo neplat msgid "We couldn't remove that account. Try again." msgstr "Tento účet se nám nepodařilo odebrat. Zkuste to znovu." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Toto telefonní číslo se nepodařilo automaticky ověřit. Kontaktujte podporu a váš účet posoudí její pracovník." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Do této země neposíláme ověřovací SMS. Zkuste mobilní číslo z jiné země nebo kontaktujte podporu." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Pro tento účet jsme našli stávající předplatné {premiumProductFu msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "V Brazílii jsme snížili cenu {premiumProductName}. Nyní je to {monthlyPrice} měsíčně nebo {yearlyPrice} ročně." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Než budete pokračovat, potřebujeme jeden ověřovací krok. Pomáhá to chránit účty a udržet spam mimo {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Než budete moci pokračovat, musíme ověřit dvě věci. Kroky se vám budou zobrazovat postupně." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Doporučujeme si tyto kódy hned uložit, abyste neztratili přístup ke svému účtu." @@ -39167,11 +38514,6 @@ msgstr "Kód jsme odeslali na {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Předvyplníme {prefillEmail}, jakmile se otevře přihlášení v prohlížeči." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Až to bude možné, pošleme SMS kód." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Rádi bychom vám dali {PREMIUM_PRODUCT_NAME} na déle než jeden život, ale to by narušilo časoprostorové kontinuum. Nechcete dárek raději poslat příteli?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Zpracujeme to co nejdříve. Až bude váš archiv připraven, dostanete e-mail." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Obnovíme váš předchozí e-mail, odhlásíme staré relace, odebereme telefonní čísla, zakážeme vícefaktorové ověřování a zabezpečíme váš účet novým heslem." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Obnovíme váš předchozí e-mail, odhlásíme stará připojení, zakážeme vícefaktorové ověřování a zabezpečíme váš účet novým heslem." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Než si budete moct změnit heslo, pošleme vám na e-mail ověřovací msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Před zobrazením záložních kódů vám na e-mail pošleme ověřovací kód." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Pošleme SMS kód, jakmile bude dostupný. Vaše číslo nebude propojeno s vaším účtem. Uchováváme pouze šifrovaný identifikátor bez ID uživatele po omezenou dobu." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Ověříme vaši stávající a poté i novou e-mailovou adresu pomocí jednorázových kódů." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook vytvořen" @@ -39331,7 +38669,7 @@ msgstr "Webhook aktualizován" msgid "Webhook URL" msgstr "Adresa URL webhooku" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooky" @@ -39486,8 +38824,8 @@ msgstr "Sdílený obsah se neaktualizuje" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Co se děje?" @@ -39967,21 +39305,11 @@ msgstr "Oprávnění <0>{readMessageHistoryPermissionLabel} můžete odebrat msgid "You can sign back in at any time." msgstr "Kdykoli se můžete znovu přihlásit." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Správce této instance můžete kdykoli požádat o kontrolu člověkem." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Účet si stále můžete vytvořit nebo se přihlásit. Pokud budou pozvánky později znovu povoleny, můžete se připojit pomocí stejného odkazu." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Kdykoli můžete napsat na {supportEmail} a požádat o posouzení pracovníkem podpory." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Můžete použít odkazy, emoji a Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Nemůžete tam přidávat výrazy" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Během dočasného omezení nemůžete přidávat nové reakce." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Nemůžete si přidat sami sebe do přátel" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Zde si nemůžete změnit přezdívku" @@ -40094,7 +39422,7 @@ msgstr "Nemůžete si poslat žádost o přátelství sami sobě." msgid "You can't send messages in this channel." msgstr "V tomto kanálu nemůžete odesílat zprávy." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "V této komunitě nemůžete odesílat zprávy." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Nemáte oprávnění provést tuto akci u tohoto člena." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Nemáte oprávnění připojit se k tomuto hlasovému kanálu" @@ -40243,7 +39571,7 @@ msgstr "Nemáte oprávnění přejmenovat toto emoji. Název byl vrácen na pův msgid "You have been banned from this community." msgstr "V této komunitě jste dostali ban." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Blokovali jste uživatele {username}. Odblokujte ho, abyste mu mohli posílat zprávy." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Máte neuložené změny." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Máte neuložené změny. Před odchodem je uložte nebo resetujte." @@ -40270,7 +39598,7 @@ msgstr "Máte neuložené změny. Před odchodem je uložte nebo resetujte." msgid "You haven't authorized any applications to access your account." msgstr "Zatím jste neschválili žádné aplikace pro přístup k vašemu účtu." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "V této komunitě ještě nejste členem dostatečně dlouho, abyste mohli posílat zprávy." @@ -40326,11 +39654,6 @@ msgstr "Musíte souhlasit s podmínkami služby, abyste mohli vytvořit účet" msgid "You must verify your email before sending a report." msgstr "Před odesláním nahlášení musíte ověřit svůj e-mail." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Pro změnu e-mailu potřebujete přístup k tomu stávajícímu. Použijte ověření telefonem, pokud je k dispozici, nebo kontaktujte podporu." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "K úpravě těchto oprávnění potřebujete oprávnění \"{manageRoles msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "K úpravě těchto oprávnění potřebujete oprávnění \"{manageRolesPermissionLabel}\"." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "K prohlížení a úpravě webhooků pro tento kanál potřebujete oprávnění „{manageWebhooksPermissionLabel}“." @@ -40384,18 +39707,14 @@ msgstr "Než budete moci vytvořit komunitu, musíte dokončit registraci svého msgid "You need to claim your account before you can start a direct message." msgstr "Než budete moci zahájit soukromou konverzaci, musíte dokončit registraci svého účtu." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Abyste mohli posílat soukromé zprávy, musíte dokončit registraci svého účtu." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Abyste mohli v této komunitě posílat zprávy, musíte dokončit registraci svého účtu." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Abyste mohli v této komunitě posílat zprávy, musíte si ověřit telefonní číslo." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Než budete moci zahájit soukromou konverzaci, musíte ověřit svou e- msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Než si budete moct zakoupit {premiumProductFullName}, musíte si ověřit e-mail." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Abyste mohli v této komunitě posílat zprávy, musíte si ověřit e-mail." @@ -40424,11 +39743,6 @@ msgstr "Abyste mohli v této komunitě posílat zprávy, musíte si ověřit e-m msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Vy nebo někdo, koho přidáváte, už má otevřený maximální počet skupinových konverzací. Opusťte jednu a zkuste to znovu." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Zůstanete v {ownedNames}. Vlastníci nemohou opustit vlastní komunitu." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Moderátoři vám vypnuli zvuk" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Po autorizaci budete přesměrováni na {redirectHostname}." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "{count, plural, one {Opustíte # komunitu, na kterou se tato kontrola vztahuje, a váš účet bude opět fungovat normálně.} few {Opustíte # komunity, na které se tato kontrola vztahuje, a váš účet bude opět fungovat normálně.} many {Opustíte # komunity, na které se tato kontrola vztahuje, a váš účet bude opět fungovat normálně.} other {Opustíte # komunit, na které se tato kontrola vztahuje, a váš účet bude opět fungovat normálně.}}" - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Opustíte {guildNames}. Nic z toho, co jste napsali, není smazáno a můžete se kdykoli znovu připojit." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Stále bude potřeba dokončit krok s e-mailem." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Postupujete příliš rychle" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Postupujete příliš rychle. Chvíli počkejte a zkuste to znovu." @@ -40636,7 +39935,7 @@ msgstr "Posíláte zprávy příliš rychle" msgid "You're streaming!" msgstr "Streamujete!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Máte dočasné omezení. Dokud nevyprší, nemůžete posílat zprávy, přidávat reakce ani používat hlasové kanály." @@ -40764,25 +40063,25 @@ msgstr "Platba za obnovení přes {storeName} se nezdařila, ale <0/> zůstávaj msgid "Your account" msgstr "Váš účet" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Váš účet se okamžitě vrátí do normálu a telefonní číslo nyní nebudete potřebovat. Toto není trvalá výjimka a můžeme o tuto kontrolu požádat později." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Váš účet byl úspěšně propojen. Nyní můžete zavřít tuto kartu a vrátit se do aplikace." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Váš účet opět funguje normálně." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Váš účet má omezení" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Váš účet je omezený. Zkontrolujte si e-mail, jak omezení zrušit." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Registrace vašeho účtu zatím není dokončená. Bez e-mailu a hesla se nebudete moci přihlásit z jiných zařízení a mohli byste ztratit přístup ke svému účtu. Dokončete registraci svého účtu a zabezpečte ho." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Váš účet je příliš nový na odesílání zpráv v této komunitě." @@ -40800,11 +40099,6 @@ msgstr "Váš účet vyžaduje vícefaktorové ověřování, ale na tomto zař msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Váš účet již nebude chráněn dvoufaktorovým ověřováním při přihlašování heslem. Také ztratíte zvýšená oprávnění v komunitách, které dvoufaktorové ověřování vyžadují." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Váš účet bude opět normálně fungovat okamžitě a nic se neodstraní. O tuto kontrolu můžeme požádat později." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Ověřujeme vaši kartu kvůli místním cenám. Obvykle to chvíli trv msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Vaše karta je způsobilá. Nyní vás přesměrujeme na platební stránku." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Váš operátor uvádí, že toto číslo není v provozu. Zkontrolujte ho a zkuste to znovu. Pokud je správné, kontaktujte podporu." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Vaše změny se projeví v každé komunitě, která tento kanál sleduje, což může chvíli trvat. Každá publikovaná zpráva umožňuje 3 rychlé úpravy, poté 1 každých 20 minut." @@ -40869,21 +40158,6 @@ msgstr "Vaše zařízení vás požádá o uložení aktualizovaného přístupo msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Vaše zařízení vás vyzve k uložení aktualizovaného přístupového klíče pro {name}. Použijte stejný telefon nebo bezpečnostní klíč, který jste právě použili." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Vaše e-mailová adresa byla aktualizována." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Na váš e-mail se nepodařilo doručit zprávy. Přidejte funkční e-mail, abychom vás mohli kontaktovat." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Na váš e-mail se nepodařilo doručit zprávy. Aktualizujte ho, abyste mohli nadále používat {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Váš e-mail byl ověřen. Nyní se můžete přihlásit ke svému účtu." @@ -41000,21 +40274,11 @@ msgstr "Zprávu se nepodařilo aktualizovat" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Lhůta pro vrácení peněz za váš poslední nákup již uplynula. S problémy s fakturací se obraťte na podporu." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "váš nový e-mail" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Vaše nová přezdívka. Chcete-li ji zrušit, nechte pole prázdné." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Vaše číslo není propojeno s vaším účtem. Uchováváme pouze šifrovaný identifikátor bez ID uživatele po omezenou dobu." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Platba byla zrušena. Nyní můžete zavřít tuto kartu a vrátit se do aplikace." @@ -41054,11 +40318,6 @@ msgstr "Vaše zakoupené dárky" msgid "your region" msgstr "váš region" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Než budete moct pokračovat, je potřeba provést dodatečnou kontrolu proti spamu." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/da/messages.po b/fluxer_app/src/features/i18n/locales/da/messages.po index e8fbbfda8..d6b4735ab 100644 --- a/fluxer_app/src/features/i18n/locales/da/messages.po +++ b/fluxer_app/src/features/i18n/locales/da/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reaktion} other {# reaktioner}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# bruger har reageret} other {# brugere har reageret}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# sekund} other {# sekunder}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} kl. {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Dit invitationslink udløber om # sekund.} other {Dit invitationslink udløber om # sekunder.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} valgt" @@ -2252,7 +2252,7 @@ msgstr "1 minut" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 timer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 måneder (1 år)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Backupkoder til 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Krav om 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 medlemmer (skriver)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 måneder" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 timer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 måneder" @@ -2575,11 +2575,6 @@ msgstr "et minut" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "En ny version af computerappen er tilgængelig. Download installationsprogrammet, og kør det for at opdatere {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "En ny bekræftelseskode er blevet sendt." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Kontodata" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Kontoen eksisterer for at spamme, svindle eller misbruge platformen." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Konto begrænset" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Kontostatus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Kontoen er for ny" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Kontobekræftelse påkrævet" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Tilføj en bot til et fællesskab med de ønskede tilladelser" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Tilføj en kommentar (valgfrit)" @@ -3054,8 +3052,10 @@ msgstr "Tilføj et emne til denne kanal" msgid "Add a word…" msgstr "Tilføj et ord …" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Tilføj en fungerende e-mailadresse" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Tilføj en konto for at fortsætte." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Tilføj først en e-mailadresse og en adgangskode til din konto." @@ -3424,11 +3424,6 @@ msgstr "Tilføjet: {createdDate} • sidst brugt: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Yderligere kommentarer (valgfrit)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Yderligere bekræftelse påkrævet" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Alle sprog" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Allerede opsagt" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Anmeld også denne besked til sikkerhedsteamet hos {productName}" @@ -4713,11 +4708,6 @@ msgstr "Spørg, før du starter opkald" msgid "Ask for a passkey after your password when you sign in" msgstr "Bed om en adgangsnøgle efter din adgangskode, når du logger ind" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Bed administratorerne af denne instans om at gennemgå din konto. Denne instans drives uafhængigt, og kun dens administratorer kan ændre din konto." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Fjern automatisk sporingsparametre (som utm_source, fbclid og gclid) fra msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Fjern automatisk sporingsparametre fra webadresser i beskeder, du sender" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Scan automatisk beskeder for eksplicit indhold i kanaler, der ikke er markeret for indhold for voksne." @@ -5359,8 +5349,6 @@ msgstr "Ikke til stede lige nu" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Tilbage" @@ -6506,11 +6494,6 @@ msgstr "Kameraer og virtuelle optagelsesenheder vælges her i {productName}, ikk msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Kameraer er slået fra ved over {voiceChannelCameraUserLimit} deltagere" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Kan du ikke få adgang til den e-mailadresse?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Kan ikke uploade filer her" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Kan ikke uploade filer her" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Skift e-mailadresse" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Skift emoji" @@ -7201,7 +7184,7 @@ msgstr "Ændrede brugergrænsen fra {oldCount} til {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Ændrede det brugerdefinerede invitationslink fra {oldCode} til {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Ændrede verificeringsniveauet fra {oldLevel} til {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kanal eller kategori" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Tilpassede kanaltilladelser" @@ -7509,8 +7492,6 @@ msgstr "Tjek din forbindelse, og prøv igen." msgid "Check your connection, then try again." msgstr "Tjek din forbindelse, og prøv igen." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Vælg en skærm i din systemvælger" msgid "Choose a GIF" msgstr "Vælg en GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Vælg en metode" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Vælg en ny adgangskode." @@ -7680,8 +7656,8 @@ msgstr "Vælg en handling." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Vælg en emoji" @@ -7749,11 +7725,6 @@ msgstr "Vælg, hvordan din instans fungerer" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Vælg en af metoderne herunder for at bevise ejerskab af domænet. Du behøver kun at gennemføre én." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Vælg én bekræftelsesmetode. Begge metoder kan opfylde dette bekræftelseskrav." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Vælg, hvad {clientLabel} kan gøre i dit fællesskab. Fjern markeringen msgid "Choose what friends see in their active now panel" msgstr "Vælg, hvad venner ser i panelet Aktiv nu" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Vælg, hvilke krav medlemmer skal opfylde, før de kan skrive beskeder eller sende direkte beskeder til medlemmer af fællesskabet." @@ -8030,8 +8001,8 @@ msgstr "Renser mikrofonens lyd, så talen bliver tydelig." msgid "Clear" msgstr "Ryd" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Ryd efter" @@ -8053,7 +8024,7 @@ msgstr "Ryd alle simuleringer af vedhæftede filer" msgid "Clear all token overrides" msgstr "Ryd alle variabeltilpasninger" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Ryd simuleringer af vedhæftede filer" @@ -8066,14 +8037,14 @@ msgstr "Ryd kommando" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Ryd brugerdefineret status" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Fjern alle reaktioner fra denne besked?" @@ -8124,7 +8095,7 @@ msgstr "Ryd søgefelt" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Kulsort tema" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Kommandoer" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Kommentarer er deaktiveret, fordi langsom tilstand er slået til i en eller flere valgte kanaler. Kommentaren ville blive blokeret af langsom tilstand lige efter videresendelsen." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Kommentarer er deaktiveret, fordi langsom tilstand er slået til i {forwardChannelDisplayName}. Kommentaren ville blive blokeret af langsom tilstand lige efter videresendelsen." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Kommentarer er ikke tilgængelige, når langsom tilstand er slået til." @@ -8670,11 +8639,11 @@ msgstr "Fællesskaber" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Fællesskaber og kanaler, hvor du ikke kan administrere webhooks, er skjult." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Fællesskaber i Opdag skal scanne beskeder fra alle medlemmer. Denne indstilling kan ikke ændres, mens Opdag er aktiveret." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Fællesskaber i Opdag kræver mindst en bekræftet e-mailadresse. \"Ingen\" kan ikke vælges, mens Opdag er aktiveret." @@ -8827,7 +8796,7 @@ msgstr "Navn på fællesskab" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Kaldenavn i fællesskabet" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Fællesskabsprofil" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Fællesskabsprofil opdateret" @@ -8907,7 +8876,7 @@ msgstr "Niveau for ulæstbadge i fællesskabet" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Fællesskab opdateret" @@ -8952,11 +8921,6 @@ msgstr "Sammenligning" msgid "Complete mature content check" msgstr "Gennemfør adgangsbekræftelsen for indhold for voksne" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Gennemfør en af bekræftelsesmetoderne herunder for at fortsætte med at bruge {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Gennemfør betaling" msgid "Complete the mature content check to unlock mature media." msgstr "Gennemfør adgangsbekræftelsen for indhold for voksne for at få adgang til medier med indhold for voksne." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Gennemfør de påkrævede trin til bekræftelse af e-mail og telefon herunder for at fortsætte med at bruge {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Gennemfør den påkrævede bekræftelse for at fortsætte med at bruge {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Konfigurer dit profilbadge" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Forbindelser omarrangeret" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Samtykke påkrævet" @@ -9349,16 +9304,6 @@ msgstr "Opret en autorisations-URL med rettighedsområder og tilladelser." msgid "Contact" msgstr "Kontakt" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Kontakt support" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Kontakt administratorerne af denne instans for at få hjælp." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Indholdsskaber" msgid "Content filter" msgstr "Indholdsfilter" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Indholdsfiltrering" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Indholdstype" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Adgangskontrol for indhold" @@ -9416,12 +9361,10 @@ msgstr "Genvejsmenuer kan åbnes med venstreklik (på knapper) eller højreklik #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Styr, hvordan ulæstindikatoren fungerer for kanaler, der er sat på lyd msgid "Control which chat updates are announced by assistive technology." msgstr "Styr, hvilke chathændelser der læses op af hjælpeteknologi." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Samtale ikke fundet" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Kunne ikke tilføje tag" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Kunne ikke tilføje denne ven til gruppen. Prøv venligst igen." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Kunne ikke føje til gruppe" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Kunne ikke oprette et temalink" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Kunne ikke oprette invitationslink" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Kunne ikke afslutte din overgangsperiode" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Kunne ikke oprette et invitationslink. Prøv venligst igen." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Kunne ikke behandle billede" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Kunne ikke udgive denne besked" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Kunne ikke deltage i Visionary-fællesskabet igen" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Kunne ikke fjerne ankomstlyd" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Kunne ikke gemme kanalindstillinger" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Kunne ikke gemme ankomstlyd" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Kunne ikke trække ansøgning tilbage" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Nedtællingstimer" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Land" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Opret administratorkontoen" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Opret gruppechatten med {addableCount, plural, one {# resterende modtager} other {# resterende modtagere}} og spring de andre over?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Opret webhook" @@ -10948,7 +10884,7 @@ msgstr "Brugerdefineret emoji {emojiName} fra et fællesskab" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Brugerdefinerede ankomstlyde er ikke aktiveret på denne instans." @@ -11108,7 +11044,7 @@ msgstr "Brugerdefineret lydbehandling" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Tilpasset advarselstekst" @@ -11530,11 +11466,6 @@ msgstr "Standardsøgemaskine" msgid "Default shortcuts" msgstr "Standardgenveje" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Standardfane" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Slet denne besked" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Slet denne besked? Kan ikke fortrydes." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Slet denne besked? Kan ikke fortrydes. Denne besked fjernes også fra alle communities, der følger denne kanal." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Udviklertilstand" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Udviklerindstilling" @@ -12299,7 +12230,7 @@ msgstr "Direkte input" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Visningstilstand" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Visningsnavn" @@ -12858,7 +12789,7 @@ msgstr "Vil du deltage i {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, jeg er fra fremtiden. Jeg kom hertil i en tidsmaskine, som du opfandt. Nu har jeg brug for din hjælp til at komme tilbage til år 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Rediger lokal tid for profil" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Rediger opslået besked?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Rediger dine beskeder ovenfor eller nedenfor" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Rediger din profils udseende, og se ændringerne i forhåndsvisningen med det samme" @@ -13590,10 +13521,8 @@ msgstr "Kan refunderes indtil {windowEndsOn}. Dette afslutter også dit abonneme msgid "Email" msgstr "E-mail" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "E-mailadresse er påkrævet." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-mailadresse ændret" @@ -13616,49 +13547,17 @@ msgstr "E-mailadresse ændret" msgid "Email delivery" msgstr "E-mail-levering" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-mail eller telefonnummer" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "E-mailadresse eller telefonnummer skal bekræftes igen" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "E-mailadressen skal bekræftes igen" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-mailadresse utilgængelig" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "E-mailadressen kan ikke ændres lige nu. Prøv igen senere, eller kontakt support." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "E-mailadressen skal opdateres" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Send os en e-mail, så gennemgår en medarbejder din konto. Fortæl os, at du ikke kan bekræfte dit telefonnummer via sms, så hjælper vi dig videre. Vi svarer via e-mail, så det sker ikke med det samme." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Banner til bekræftelse af e-mail" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "E-mailbekræftelse påkrævet" @@ -13675,6 +13574,10 @@ msgstr "Gennemtving bekræftet e-mailadresse" msgid "Email verified successfully" msgstr "E-mailadressen er bekræftet" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "E-mails til din nuværende adresse leveres ikke. Indtast en ny e-mail, så sender vi en kode dertil." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Indlejringer" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Indlejringer skjult" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Indlejringer vises igen" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Slå oplæsning med /tts til" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Slå 2FA til på din konto for at ændre denne indstilling" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Indtast en gyldig skabelon-URL eller kode fra {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Indtast en gyldig e-mailadresse." @@ -14298,33 +14199,11 @@ msgstr "Indtast en gyldig e-mailadresse." msgid "Enter a valid message link." msgstr "Angiv et gyldigt beskedslink." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Indtast et gyldigt mobilnummer." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Indtast et gyldigt telefonnummer" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Indtast et gyldigt brugernavn ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Indtast en e-mailadresse, du har adgang til. Vi sender en kode dertil." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Indtast kode" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Vis i fuld skærm" msgid "Enter gift code…" msgstr "Indtast gavekode…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Indtast ny e-mailadresse" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Indtast en af dine backupkoder, hvis du ikke kan bruge din adgangsnøgle msgid "Enter one of your backup codes." msgstr "Indtast en af dine backupkoder." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Indtast telefonnummer" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Indtast den {digitCount}-cifrede kode fra din godkendelsesapp eller en a msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Indtast den {digitCount}-cifrede kode fra din godkendelsesapp." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Indtast den {digitCount}-cifrede kode, der er sendt til {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Indtast den {MFA_CODE_DIGIT_COUNT}-cifrede kode, der er sendt til {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Indtast koden" @@ -14408,11 +14267,6 @@ msgstr "Indtast koden, før du fortsætter." msgid "Enter the code from your authenticator app." msgstr "Indtast koden fra din godkendelsesapp." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Indtast koden, der er sendt til {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Indtast koden, vi har sendt til din nuværende e-mailadresse." @@ -14426,6 +14280,7 @@ msgstr "Indtast koden, der er sendt til din e-mailadresse." msgid "Enter the code shown in the app to continue." msgstr "Indtast koden, der vises i appen, for at fortsætte." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Indtast koden, vi har sendt til din nye e-mailadresse." @@ -14434,11 +14289,6 @@ msgstr "Indtast koden, vi har sendt til din nye e-mailadresse." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Indtast den kode, vi har sendt til din e-mailadresse, for at bekræfte den. Din adgangskode bliver gemt, når koden er bekræftet." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Indtast e-mailkoden" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Indtast invitationslinket for at blive medlem af et fællesskab." @@ -14452,11 +14302,6 @@ msgstr "Indtast den nye e-mailadresse, du vil bruge. Vi sender en kode dertil." msgid "Enter the PIN for your security key to continue." msgstr "Indtast pinkoden til din sikkerhedsnøgle for at fortsætte." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Indtast sms-koden" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Indtast denne kode i din browser for at logge ind." @@ -14492,11 +14337,6 @@ msgstr "Indtast dit navn" msgid "Enter your password." msgstr "Indtast din adgangskode." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Indtast dit telefonnummer" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Ankomstlyd" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Filer med ankomstlyde må højst fylde {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Biblioteket med ankomstlyde er fuldt" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Ankomstlyd fjernet" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Ankomstlyd gemt" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Ankomstlyde" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Ankomstlyde er ikke tilgængelige" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Udløber:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Indstilling for filter af eksplicit indhold" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Kunne ikke kopiere til udklipsholder" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Kunne ikke oprette webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Kunne ikke indlæse det brugerdefinerede invitationslink. Prøv igen." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Kunne ikke indlæse webhooks" @@ -15190,11 +15030,6 @@ msgstr "Kunne ikke fjerne det brugerdefinerede invitationslink. Prøv igen." msgid "Failed to resend code. Try again." msgstr "Kunne ikke sende kode igen. Prøv igen." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Kunne ikke sende bekræftelseskoden igen. Prøv igen senere." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Kunne ikke sende besked. Hold nede for muligheder." msgid "Failed to send report. Try again." msgstr "Kunne ikke sende anmeldelsen. Prøv igen." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Kunne ikke sende bekræftelsesmail. Prøv igen senere." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Kunne ikke starte" @@ -15551,15 +15381,15 @@ msgstr "Filtrer efter bruger" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtrer alle" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtrer medlemmer uden roller" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Følg denne kanal" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Følg for at få disse annonceringer i en kanal, du vælger." @@ -15773,7 +15603,7 @@ msgstr "Følgende kanal {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Følgende kanaler" @@ -15857,11 +15687,6 @@ msgstr "Kun for britiske øjne ..." msgid "For me" msgstr "Til mig" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Til dette tjek sender du os en sms i stedet for at modtage en fra os." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Af hensyn til din sikkerhed skal du bekræfte, at det er dig, for at fortsætte." @@ -15905,7 +15730,7 @@ msgstr "Fremtving indlæsningsskelet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Gennemtving mærkning som indhold for voksne" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Fremtving flytning til AFK-kanal" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Fremtving manglende tilladelse: {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Vis altid advarslen om brugerdefinerede invitationslinks" msgid "Force show voice connection" msgstr "Vis altid taleforbindelsen" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Gennemtving aktiv langsom tilstand" @@ -16020,7 +15845,7 @@ msgstr "Videresend medie" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Videresend besked" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Geoblokerings-overlay" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Geografisk begrænset" @@ -16490,12 +16315,6 @@ msgstr "Få en animeret avatar og banner, et abonnent-badge, den firesidede tag, msgid "Get monthly" msgstr "Få månedligt" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Få ny kode" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Gavekoder" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Gavevarighed" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Gaveoversigt" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Forløb for gaveoversigt" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Gave ikke fundet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Gave indløst" @@ -17030,7 +16849,7 @@ msgstr "Gruppechat" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hej {displayName}, fuldfør oprettelsen af din konto, så du ikke mister adgang til den." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hej {displayName}, bekræft venligst din e-mailadresse." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hej {displayName}, vi kan ikke levere e-mails til din adresse. Tilføj en fungerende e-mail for at verificere din konto." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Skjul din egen skærmdeling?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Højt" @@ -17755,11 +17579,6 @@ msgstr "Jeg er et værktøjstip" msgid "I changed my mind" msgstr "Jeg har ombestemt mig" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Jeg har brug for en anden mulighed" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Hvis denne anmeldelse handler om en specifik besked, skal du anmelde den msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Hvis denne anmeldelse handler om specifikke beskeder, skal du i stedet anmelde den mest relevante besked. Beskedanmeldelser giver vores sikkerhedsteam den tydeligste kontekst, og hvis du tilføjer detaljer i kommentarerne, kan det hjælpe os med at gennemgå den hurtigere. Fortsæt kun med at anmelde brugeren som helhed, hvis en beskedanmeldelse ikke ville dække det bredere problem." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Hvis du ikke kan bekræfte via SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Hvis du ikke kan bruge nogen bekræftelsesmetode, skal du kontakte support for at få hjælp." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Brugerfladens størrelse" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Ugyldig lydfil" @@ -18674,8 +18483,10 @@ msgstr "Ugyldig JSON. Indsæt hele svaret fra URL'en ovenfor." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Deltag i taleopkald" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Deltag i talekanal" @@ -19613,16 +19424,6 @@ msgstr "Lær mere om Visionary" msgid "Leave" msgstr "Forlad" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Forlad {count, plural, one {# fællesskab} other {# fællesskaber}} og sæt denne kontrol til side?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Forlad og sæt til side" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Lad skærmlæsere annoncere nye beskeder, når de ankommer i den åbne kanal. Notifikationslyde påvirkes ikke." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Lad fællesskabet selv moderere" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Bibliotek" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Biblioteket er fuldt (maks. {max} lyde). Slet en, før du tilføjer en ny." @@ -19812,7 +19613,7 @@ msgstr "Bibliotek: {count} af {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Livstid" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Indlæser..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Indlæser…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Lavt" @@ -20416,7 +20217,7 @@ msgstr "Administrer fællesskabsfunktioner" msgid "Manage emoji & stickers" msgstr "Administrer emojis og klistermærker" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Administrer indgående webhooks, der kan sende beskeder til denne kanal." @@ -20514,7 +20315,7 @@ msgstr "Markér alle ulæste indbakkekanaler som læst med det samme, uden at sp msgid "Mark as read" msgstr "Markér som læst" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Markér som indløst" @@ -20676,14 +20477,14 @@ msgstr "Fællesskab med indhold for voksne" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Indhold for voksne" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Indhold for voksne og indholdsadvarsler" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maksimal levetid (dage)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Maksimal beskyttelse af familievenlige fællesskaber" @@ -20924,7 +20725,7 @@ msgstr "Stop afspilning" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Medlems udelukkelse ophævet" msgid "Member updated" msgstr "Medlem opdateret" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Bekræftelse af medlemmer" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Bekræftelsesniveau for medlemmer" @@ -21048,7 +20849,7 @@ msgstr "Medlemmer fjernes, når de er offline, medmindre de får en rolle." msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Medlemmer med \"{pinMessagesPermissionLabel}\" kan fastgøre beskeder for alle." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Medlemmer med roller kan omgå disse tjek. Til offentlige rum anbefaler vi at aktivere bekræftelse." @@ -21153,7 +20954,7 @@ msgstr "Omtaler af dig vises her i {retentionDays} dage." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Kun omtaler" @@ -21292,7 +21093,7 @@ msgstr "Indstillinger for visning af beskeder er kun tilgængelige på computere msgid "Message editing" msgstr "Redigering af beskeder" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Besked videresendt" @@ -21341,7 +21142,7 @@ msgstr "Knapper i skrivefeltet" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Beskeden er for lang" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Beskedforhåndsvisninger i DM-listen" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Besked publiceret" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Beskeder udgivet i #{sourceName} vil nu blive vist i #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Beskeder, der er udgivet i disse annonceringskanaler, kopieres hertil." @@ -21504,7 +21305,7 @@ msgstr "Beskeder, der udgives i disse annonceringskanaler, kopieres til dine kan msgid "Messages you can bookmark" msgstr "Beskeder du kan bogmærke" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Afsendelse af beskeder er midlertidigt sat på pause i dette fællesskab." @@ -21733,30 +21534,30 @@ msgstr "Simuler udløb om 1 dag" msgid "Mock expires in 7 days" msgstr "Simuler udløb om 7 dage" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Simuler overlejring for geografisk blokering" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Simuler gaveoversigt" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simuler indgående opkald" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Simuler årsag til adgangskontrol for kanaler med indhold for voksne" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Simuler årsag til adgangskontrol for medier med indhold for voksne" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Simuler placering i Storbritannien" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Testbrugeravatarer i forskellige størrelser og alle statuskombinationer." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Testvariant" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Simulerede produktforløb" @@ -22698,14 +22494,16 @@ msgstr "Nyt fællesskab sat på lydløs" msgid "New direct message" msgstr "Ny direkte besked" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Ny e-mail" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formular til ny e-mailadresse" @@ -22816,9 +22614,7 @@ msgstr "Nyeste først" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Næste" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Nej" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Mangler tilladelsen {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Mangler tilladelsen {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Ingen ændringer at gemme" msgid "No channels available" msgstr "Ingen kanaler tilgængelige" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Ingen kanaler fundet" @@ -23233,11 +23029,6 @@ msgstr "Ingen tilladelser fundet" msgid "No personal words yet." msgstr "Ingen personlige ord endnu." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Intet telefonnummer" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Ingen resultater" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Ingen resultater fundet" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Ingen brugere fundet" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Ingen bekræftelse er påkrævet." @@ -23452,7 +23243,7 @@ msgstr "Ingen bekræftelse er påkrævet." msgid "No verification methods available" msgstr "Ingen bekræftelsesmetoder tilgængelige" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Ingen webhooks" @@ -23504,7 +23295,7 @@ msgstr "Ingen konvertering" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Ingen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Ingen (normal adfærd)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norsk" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Ikke medlem længe nok" @@ -23798,9 +23589,9 @@ msgstr "Objekter" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Fra" @@ -23848,7 +23639,7 @@ msgstr "Ældste først" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Til" @@ -23884,11 +23675,6 @@ msgstr "En eller flere vedhæftede filer kunne ikke læses eller uploades. Filen msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "En eller flere af de filer, du prøver at uploade, overskrider den maksimale størrelsesgrænse på {maxSizeFormatted} pr. fil." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Et hurtigt tjek" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Kun højttalere" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Kun fællesskabets ejer kan ændre denne indstilling" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Åbn emoji i browser" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Åbn emoji-vælger" @@ -24382,12 +24168,8 @@ msgstr "Åbn menu" msgid "Open message history threshold" msgstr "Åbn skæringsdato for beskedhistorik" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Åbn overlejring" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Åbn valgliste" @@ -24485,11 +24267,6 @@ msgstr "Åbn den nye app. Du er allerede logget ind." msgid "Open the shortcuts list for quick actions." msgstr "Åbn genvejslisten for hurtige handlinger." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Åbn bekræftelsesmailen, og brug linket indeni. Dette vindue opdateres, når linket er åbnet." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Åbn indstillinger for lyd og video" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Åbn din browser, log ind, og indtast derefter koden herunder for at forbinde din konto." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Åbn dine beskeder" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Åbn din gamle {PRODUCT_NAME}-app, vælg \"Tilknyt en ny enhed\", og indtast derefter koden nedenfor." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Åbn din telefons beskedapp, og opret en ny sms." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Åbn din telefons beskedapp, og start en ny sms." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Anden reaktion …" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Vores kontrol af telefonnumre er nede lige nu. Fejlen er hos os og skyldes ikke dit nummer. Vent et par minutter, og prøv det samme nummer igen." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, svindel, ondsindede links eller falske påstande, der sandsynligvis vil forårsage skade i den virkelige verden." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefon" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Telefonnummer" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Telefonnummer er påkrævet" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Telefonnummer bekræftet" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Ny bekræftelse af telefonnummer påkrævet" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Trin til telefonbekræftelse" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Telefonbekræftelse er ikke tilgængelig for denne konto. Brug en anden metode, eller kontakt support." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Telefonbekræftelse påkrævet" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Vælg det 4-cifrede nummer efter dit brugernavn" msgid "Pick the appearance this administrator account should start with." msgstr "Vælg det udseende, denne administratorkonto skal starte med." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Vælg den metode, du kan gennemføre nu." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Billede i billede" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Fastgør" @@ -25471,7 +25176,7 @@ msgstr "Fastgør gruppe-DM" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Fastgør eller fjern fastgørelse af enhver besked." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Fastgør denne besked til kanalen, så alle kan se den." @@ -26227,18 +25932,18 @@ msgstr "Profilfarve" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Profiltilpasning" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Profiltilpasning for {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formular til profiltilpasning" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Profiltype" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profil opdateret" @@ -26340,7 +26045,7 @@ msgstr "Vis prompt for nye lydenheder" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Koordinering af raid" msgid "Rate" msgstr "Hastighed" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Hastighedsbegrænset" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Rå JSON til indlejring" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Fjern {userName} fra dine venner?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Fjern alle" @@ -27290,7 +26990,7 @@ msgstr "Fjern alle {emojiNameWithColons}-reaktioner fra denne besked?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Fjern alle reaktioner" @@ -27899,20 +27599,10 @@ msgstr "Den anmeldte brugers tag (valgfrit)" msgid "Reposts: <0>{countLabel}" msgstr "Genopslag: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Anmod først om en ny kode." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Anmod om et nyt nulstillingslink" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Anmod først om en bekræftelseskode." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Anmodninger" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Kræv 2FA for moderatorhandlinger" @@ -27958,7 +27648,7 @@ msgstr "Kræv OAuth2-kodebevilling" msgid "Require passkey" msgstr "Kræv adgangsnøgle" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Kræv tofaktorgodkendelse for moderatorer, før de kan udelukke medlemmer, fjerne dem fra fællesskabet, give timeout eller slette beskeder." @@ -27972,46 +27662,6 @@ msgstr "Påkrævet" msgid "Required 2FA for moderation actions" msgstr "Krævede 2FA for moderationshandlinger" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Standardfane for påkrævet handling" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Forløb for påkrævet handling" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Påkrævet handling: telefonbekræftelse" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Påkrævet handling: gensendelse i gang" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Påkrævet handling: resultat af gensendelse" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Påkrævet handling: tekst om ny bekræftelse" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Påkrævet handlingsvariant" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Overlejring med påkrævede handlinger" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Kræver en omdirigerings-URI og en autorisationskode, når denne bot inviteres." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Kræver en bekræftet e-mailadresse og en konto, der er mindst 5 minutter gammel." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Kræver en bekræftet e-mailadresse." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Kræver et bekræftet telefonnummer." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Kræver alt fra niveauet Mellem samt medlemskab af fællesskabet i mindst 10 minutter." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Send igen ({resendSecondsRemaining} sek.)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Send igen ({secondsRemaining} sek.)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Gensend-knap under indlæsning" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Send kode igen" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Send mail igen" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Resultat af gensendelse" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Sendt igen" @@ -28518,21 +28152,6 @@ msgstr "Vis" msgid "Reveal spoiler" msgstr "Vis spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Bekræft din e-mail igen, eller bekræft dit telefonnummer for at fortsætte med at bruge {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Bekræft din e-mail igen for at fortsætte med at bruge {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Bekræft dit telefonnummer igen for at fortsætte med at bruge {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Mætning" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Forhåndsvisning ved spoling" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Søg kanaler" msgid "Search communities" msgstr "Søg i fællesskaber" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Søg lande..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Søg lande…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Vælg dit bopælsland." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Vælg…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Send" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Send ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Send endnu en anmeldelse" msgid "Send button" msgstr "Send-knap" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Send kode" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Send beskeder" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Afsendelse af beskeder deaktiveret" @@ -30151,32 +29759,11 @@ msgstr "Send det gemte medie {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Send tekst-til-tale-beskeder med /tts. Medlemmer, der har slået tekst til tale til, hører dem blive læst op." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Send koden <0>{0} til <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Send koden til telefonnummeret herunder." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Send denne kode" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Send denne fastgjorte besked tilbage i tiden?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Send til" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Send talebesked" msgid "Send:" msgstr "Send:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Det er for dyrt for {PRODUCT_NAME} at sende en SMS til dette telefonnummer, så vi har brug for, at du sender os en SMS i stedet. Vi ved, at det ikke er ideelt. Du kan også bede administratorerne af denne instans om at fjerne dette krav fra din konto." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Det er for dyrt for {PRODUCT_NAME} at sende en SMS til dette telefonnummer, så vi har brug for, at du sender os en SMS i stedet. Vi ved, at det ikke er ideelt. Du kan også kontakte <0>{SUPPORT_EMAIL} for at få os til at fjerne dette krav fra din konto." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Sekventiel afsendelse" msgid "Serve the token file" msgstr "Gør tokenfilen tilgængelig" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Tjenestefejl" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Angiv tilpasset genvej til \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Angiv tilpasset status" @@ -30486,18 +30060,6 @@ msgstr "Angav taleregionen til {region}" msgid "Set the voice region to automatic" msgstr "Angav taleregionen til automatisk" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Udsæt denne kontrol" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Udsæt denne kontrol?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Angiv dine pronominer" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Angiv din status" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Genveje sættes på pause under optagelse." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Forkort beskeden, og prøv igen." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Vis et {productName}-ikon i systembakken eller på menulinjen" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Vis en indholdsadvarsel" @@ -31672,7 +31234,7 @@ msgstr "Langsom tilstand · vent {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Langsom tilstand aktiv" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Langsom tilstand er sat til {durationLabel}. Vent, før du sender en ny besked." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Resterende ventetid i langsom tilstand" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulering af langsom tilstand" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Tid tilbage i langsom tilstand" @@ -31807,11 +31369,6 @@ msgstr "Jævn rulning" msgid "Smoother video" msgstr "Mere flydende video" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "SMS-bekræftelse er ikke tilgængelig lige nu. Prøv igen senere, eller kontakt support." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Der opstod en fejl under forberedelsen af dette klistermærke. Prøv en anden fil, eller prøv igen om et øjeblik." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Der gik noget galt under publicering. Prøv igen om et øjeblik." @@ -32009,11 +31566,9 @@ msgstr "Der opstod en fejl. Genindlæs siden, eller log ind igen." msgid "Something went wrong. Try again later." msgstr "Der opstod en fejl. Prøv igen senere." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Der opstod en fejl. Prøv igen." @@ -32352,11 +31907,6 @@ msgstr "Tidsfristen for SSO-login blev overskredet. Prøv igen." msgid "Staff controls" msgstr "Medarbejderfunktioner" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Standardtakster for beskeder fra din udbyder kan være gældende." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Stjerneanimation" msgid "Starred channels" msgstr "Favoritkanaler" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Modtagertransport:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Abonnement" @@ -33051,14 +32599,12 @@ msgstr "Abonnementsscenarier" msgid "Subtext" msgstr "Undertekst" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Fuldført" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Foreslået til de fleste fællesskaber" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "System og velkomst" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Systemmeddelelser fra {productName}-medarbejdere. Du kan ikke svare her." @@ -33765,11 +33311,6 @@ msgstr "Tekstmarkering" msgid "Text size" msgstr "Tekststørrelse" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Send os en sms fra din telefon" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Thai" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Tak, fordi du hjælper med at holde {productName} sikkert. Vi gennemgår din anmeldelse hurtigst muligt." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Koden virkede ikke. Tjek den, og prøv igen." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Koden er udløbet. Anmod om en ny kode." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Handlingen blev ikke fuldført. Du kan allerede have forladt nogle fællesskaber, og din konto er stadig låst. Tryk på Udsæt denne kontrol igen for at fuldføre." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Det gik ikke igennem. Intet er ændret. Prøv igen." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Det ligner ikke en gyldig farve. Prøv hex, rgb(), hsl() eller et CSS-fa msgid "That doesn't look like a valid URL." msgstr "Det ligner ikke en gyldig URL." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Den e-mail er allerede i brug." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Overstyringen nægtede {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Siden du leder efter, findes ikke eller er blevet flyttet." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Telefonbekræftelsen er udsat. Der mangler ét trin med e-mail." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Der er ingen kanaler tilgængelige at oprette en invitation til." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Der er ingen roller at tildele i dette fællesskab lige nu, men du kan oprette en ny rolle under <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Der er ingen webhooks konfigureret for denne kanal. Opret en webhook for at give eksterne applikationer mulighed for at sende beskeder." @@ -34273,7 +33784,7 @@ msgstr "Der opstod en fejl under indlæsning af invitationerne. Prøv igen." msgid "There was an error loading the stickers. Try again." msgstr "Der opstod en fejl under indlæsning af klistermærkerne. Prøv igen." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Der opstod en fejl under indlæsning af webhooks for denne kanal. Prøv igen." @@ -34417,7 +33928,7 @@ msgstr "Denne kanal kan sende 10 beskeder i træk, og derefter én mere hver 6. msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Denne kanal kan sende 10 beskeder i træk, derefter én mere hvert 6. minut. Prøv igen om et par minutter." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Denne kanal understøtter ikke webhooks." @@ -34550,12 +34061,12 @@ msgstr "Denne forbindelse er ikke blevet bekræftet." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Dette indeholder følsomt indhold." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Denne samtale er ikke længere tilgængelig." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Denne gruppe har for mange personer" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Denne gruppe er fuld. Fjern en person, før du tilføjer flere." @@ -34715,11 +34226,6 @@ msgstr "Dette er et brugerdefineret mærkat fra et fællesskab." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Dette er en aldersbegrænset kanal. Opdateringer kan kun sendes til aldersbegrænsede kanaler." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Dette er et anti-spam-tjek. Dit telefonnummer er ikke knyttet til din konto." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Dette er deaktiveret" msgid "This is how messages appear" msgstr "Sådan vises beskeder" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Dette er ikke tilgængeligt for din konto lige nu. Bed administratorerne af denne instans om at gennemgå det." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Dette er ikke tilgængeligt på din konto lige nu. Send en e-mail til {supportEmail}, så vil en person gennemgå det." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Dette er ikke den kanal, du leder efter." @@ -34792,11 +34288,6 @@ msgstr "Dette er din sidste adgangsnøgle, og adgangsnøgler er din anden faktor msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Dette er din sidste adgangsnøgle. Når den er væk, kan du ikke længere bruge en adgangsnøgle som din anden faktor." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Dette er ikke et mobilnummer, så det kan ikke modtage vores SMS'er. Prøv et mobilnummer, eller kontakt support, hvis du mener, at det er forkert." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Denne besked er allerede blevet slettet." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Denne besked er allerede blevet udgivet" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Denne besked findes ikke længere." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Dette kaldenavn vil kun være synligt i dette fællesskab" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "For at bekræfte dette nummer skal du i stedet sende os en sms. Gå tilbage og start telefonbekræftelsen igen for at få koden og det nummer, du skal sende den til." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Dette nummer skal bekræftes ved, at du sender os en sms, frem for at modtage en fra os." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Lyden fra opkaldet er slået fra for denne deltager" msgid "This participant was deafened by moderators" msgstr "Denne deltager kan ikke høre opkaldet, fordi moderatorerne har slået lyden fra" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Dette telefonnummer kan ikke bruges. Prøv et andet mobilnummer, eller kontakt support." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Dette telefonnummer er allerede blevet brugt. Prøv et andet nummer, eller kontakt support." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Denne bruger har ingen roller i dette fællesskab." msgid "This user is already banned from the community." msgstr "Denne bruger er allerede udelukket fra fællesskabet." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Denne bruger er ikke længere tilgængelig." @@ -35065,11 +34536,6 @@ msgstr "En platformadministrator har tilføjet denne bruger til fællesskabet ud msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Denne bekræftelsessession er udløbet. Vend tilbage til {productName}, og start betalingen igen." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Denne bekræftelsessession er udløbet. Start forfra." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Dette logger dig ud, rydder cachelagrede filer og gemte sessioner og gen msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Dette markerer alle eksterne links som betroede og springer advarslen over for alle domæner. Dine eksisterende betroede domæner erstattes. Dette er mindre sikkert." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Dette vindue opdateres automatisk, når vi har modtaget din besked." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Titellinje" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Titellinjeplatform" @@ -35470,18 +34931,11 @@ msgstr "Tone" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Tone-map HDR-billeder til standardområde, hvilket reducerer den maksimale lysstyrke." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "For mange forsøg. Vent lidt, og prøv så igen." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "For mange fællesskaber" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "For mange anmodninger. Prøv igen senere." @@ -36151,8 +35605,10 @@ msgstr "Kunne ikke forberede nogen emojis til upload. Følgende fejl opstod:" #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Utilgængelig" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Uden kategori" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Kontooprettelse ikke fuldført" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Punktliste" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Fjern fastgørelse" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Fjern fastgørelse af besked" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Fjern fastgørelse af denne besked?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Ugemte ændringer" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Ikke-understøttet lydfil." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Indtil jeg slår den til igen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Ikke-bekræftet e-mail" @@ -36958,12 +36414,7 @@ msgstr "Opdater {productName} for at se denne besked." msgid "Update app" msgstr "Opdater app" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Opdater e-mail" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Opdater min status" @@ -37306,18 +36757,13 @@ msgstr "Brug {url}, hvor billedets URL skal indsættes." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Brug en separat dialog til at indstille en skæringsdato for beskedhistorik for medlemmer uden tilladelsen {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Brug en anden e-mailadresse, og bekræft den med en kode." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Brug faktisk" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Brug faktisk premium-type" @@ -37335,16 +36781,6 @@ msgstr "Brug en anden metode" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Brug en godkendelsesapp til at generere koder til tofaktorgodkendelse" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Brug en e-mailadresse, du har adgang til. Vi sender en kode dertil." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Brug en anden e-mailadresse end din nuværende." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Brug mørkt tema i hele appen" msgid "Use default" msgstr "Brug standard" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Brug en anden e-mail" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Brug e-mail" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Vil du bruge adgangsnøgler til tofaktorgodkendelse?" msgid "Use passkeys to sign in without a password" msgstr "Brug adgangsnøgler til at logge ind uden adgangskode" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Brug telefon" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Brug tekst til genbekræftelse" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Bruger skifter kanal" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Brugeren blev ikke fundet" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Bekræftelse" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Bekræftelse og medlemskabskrav" @@ -37970,15 +37387,8 @@ msgstr "Bekræftelseskode" msgid "Verification code sent" msgstr "Bekræftelseskode sendt" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Bekræftelseskode sendt. Tjek din nye e-mail-indbakke." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Bekræftelsesmail sendt. Tjek din indbakke." @@ -38038,23 +37448,6 @@ msgstr "Formular til identitetsbekræftelse" msgid "Verify it's you" msgstr "Bekræft, at det er dig" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Bekræft telefonnummer" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Bekræft telefonnummer" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formular til bekræftelse af telefonnummer" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Bekræft din e-mail, før du tilføjer en godkendelsesapp." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Bekræft din e-mail, før du ændrer dit kaldenavn, din avatar, dit banner, din biografi, dine pronominer eller din accentfarve i et fællesskab." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Bekræft din e-mail, før du ændrer dit brugernavn, visningsnavn, avatar, banner, biografi, pronominer, tidszone eller privatlivsindstillinger for dit {premiumProductName}-badge." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Bekræft din e-mail, før du redigerer denne fællesskabsprofil. Du kan stadig se en forhåndsvisning her." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Bekræft din e-mail, før du redigerer din profil. Du kan stadig se en forhåndsvisning her." @@ -38113,11 +37506,6 @@ msgstr "Bekræft din e-mail, før du sender venneanmodninger." msgid "Verify your email first" msgstr "Bekræft din e-mail først" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Bekræft din e-mailadresse eller dit telefonnummer for at fortsætte med at bruge {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Bekræft din e-mail for at købe gaver." msgid "Verify your email to change your username" msgstr "Bekræft din e-mail for at ændre dit brugernavn" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Bekræft din e-mail for at fortsætte med at bruge {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Bekræft din e-mail for at redigere denne fællesskabsprofil" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Bekræft din e-mail for at redigere din profil" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Version" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Meget højt" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Skru op" msgid "Wait a moment before deleting more messages." msgstr "Vent et øjeblik, før du sletter flere beskeder." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Vent et øjeblik. Dette vindue lukkes automatisk, når vi modtager din besked." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Ventetid mellem beskeder. Medlemmer med tilladelsen \"{bypassSlowmodePermissionLabel}\" kan omgå den." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Vent her" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Venter på adgangsnøgle …" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Venter på, at ventetiden i langsom tilstand udløber i {forwardChannelDisplayName}." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Venter på, at ventetiden i langsom tilstand udløber i en eller flere valgte kanaler." @@ -39115,16 +38482,6 @@ msgstr "Vi kunne ikke læse dette tema. Det er muligvis beskadiget eller ugyldig msgid "We couldn't remove that account. Try again." msgstr "Vi kunne ikke fjerne den konto. Prøv igen." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Vi kunne ikke bekræfte dette nummer automatisk. Kontakt support, så vil en person gennemgå din konto." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Vi sender ikke sms'er med bekræftelseskoder til dette land. Prøv et mobilnummer fra et andet land, eller kontakt support." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Vi fandt et eksisterende {premiumProductFullName}-abonnement for denne k msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Vi har sænket prisen på {premiumProductName} i Brasilien. Det koster nu {monthlyPrice} om måneden eller {yearlyPrice} om året." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Vi skal lige bekræfte en ting, før du kan fortsætte. Det hjælper med at beskytte konti og holde spam væk fra {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Vi skal bruge to bekræftelsestrin, før du kan fortsætte. Vi viser ét trin ad gangen." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Vi anbefaler, at du gemmer disse koder nu, så du ikke bliver låst ude af din konto." @@ -39167,11 +38514,6 @@ msgstr "Vi har sendt en kode til {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Vi udfylder automatisk {prefillEmail}, når browser-login åbnes." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Vi sender en sms-kode, når det er muligt." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Vi ville gerne give dig {PREMIUM_PRODUCT_NAME} i mere end en livstid, men det bryder rumtidskontinuummet. Send gaven til en ven i stedet?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Vi behandler dette hurtigst muligt. Du får en e-mail, når dit arkiv er klar." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Vi gendanner din tidligere e-mail, logger gamle sessioner ud, fjerner telefonnumre, deaktiverer MFA og sikrer din konto med en ny adgangskode." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Vi gendanner din tidligere e-mail, logger ud af gamle sessioner, deaktiverer MFA og sikrer din konto med en ny adgangskode." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Vi sender en bekræftelseskode til din e-mail, før du kan ændre din ad msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Vi sender en bekræftelseskode til din e-mail, før du kan se dine backupkoder." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Vi sender en SMS-kode, når den er tilgængelig. Dit nummer er ikke knyttet til din konto. Vi gemmer kun en krypteret markør, uden bruger-ID, i en begrænset periode." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Vi bekræfter din nuværende e-mail og derefter din nye e-mail med engangskoder." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook oprettet" @@ -39331,7 +38669,7 @@ msgstr "Webhook opdateret" msgid "Webhook URL" msgstr "Webhook-URL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooks" @@ -39486,8 +38824,8 @@ msgstr "Det, du deler, opdateres ikke" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Hvad sker der?" @@ -39967,21 +39305,11 @@ msgstr "Du kan fjerne tilladelsen <0>{readMessageHistoryPermissionLabel} fra msgid "You can sign back in at any time." msgstr "Du kan logge ind igen når som helst." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Du kan stadig til enhver tid bede administratorerne af denne instans om en manuel gennemgang." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Du kan stadig oprette en konto eller logge ind. Hvis invitationer genaktiveres senere, kan du bruge det samme link til at deltage." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Du kan stadig sende en e-mail til {supportEmail} for en manuel gennemgang når som helst." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Du kan bruge links, emojis og Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Du kan ikke tilføje udtryk der" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Du kan ikke tilføje nye reaktioner, mens du har timeout." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Du kan ikke blive venner med dig selv" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Du kan ikke ændre dit kaldenavn her" @@ -40094,7 +39422,7 @@ msgstr "Du kan ikke sende en venneanmodning til dig selv." msgid "You can't send messages in this channel." msgstr "Du kan ikke sende beskeder i denne kanal." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Du kan ikke sende beskeder i dette fællesskab." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Du har ikke tilladelse til at gøre dette ved dette medlem." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Du har ikke tilladelse til at deltage i denne talekanal" @@ -40243,7 +39571,7 @@ msgstr "Du har ikke tilladelse til at omdøbe denne emoji. Navnet blev gendannet msgid "You have been banned from this community." msgstr "Du er blevet udelukket fra dette fællesskab." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Du har blokeret {username}. Fjern blokeringen for at sende beskeder." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Du har ændringer, der ikke er gemt." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Du har ændringer, der ikke er gemt. Gem eller nulstil, før du forlader siden." @@ -40270,7 +39598,7 @@ msgstr "Du har ændringer, der ikke er gemt. Gem eller nulstil, før du forlader msgid "You haven't authorized any applications to access your account." msgstr "Du har ikke godkendt nogen apps til at få adgang til din konto." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Du har ikke været medlem af dette fællesskab længe nok til at sende beskeder." @@ -40326,11 +39654,6 @@ msgstr "Du skal acceptere servicevilkårene for at oprette en konto" msgid "You must verify your email before sending a report." msgstr "Du skal bekræfte din e-mail, før du kan sende en anmeldelse." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Du skal have adgang til din nuværende e-mail for at ændre den herfra. Brug telefonbekræftelse, hvis det er muligt, eller kontakt support." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Du skal have tilladelsen \"{manageRolesPermissionLabel}\" for at rediger msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Du skal have tilladelsen \"{manageRolesPermissionLabel}\" for at redigere disse tilladelser." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Du skal have tilladelsen \"{manageWebhooksPermissionLabel}\" for at se og redigere webhooks for denne kanal." @@ -40384,18 +39707,14 @@ msgstr "Du skal fuldføre oprettelsen af din konto, før du kan oprette et fæll msgid "You need to claim your account before you can start a direct message." msgstr "Du skal fuldføre oprettelsen af din konto, før du kan starte en privat samtale." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Du skal fuldføre oprettelsen af din konto for at sende direkte beskeder." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Du skal fuldføre oprettelsen af din konto for at sende beskeder i dette fællesskab." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Du skal bekræfte et telefonnummer for at sende beskeder i dette fællesskab." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Du skal bekræfte din e-mailadresse, før du kan starte en privat samtal msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Du skal bekræfte din e-mail, før du kan købe {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Du skal bekræfte din e-mail for at sende beskeder i dette fællesskab." @@ -40424,11 +39743,6 @@ msgstr "Du skal bekræfte din e-mail for at sende beskeder i dette fællesskab." msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Du eller en person, du tilføjer, har allerede det maksimale antal gruppe-DM'er åbne. Forlad en og prøv igen." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Du bliver i {ownedNames}. Ejere kan ikke forlade deres eget fællesskab." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Moderatorer har slået lyden fra opkaldet fra for dig" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Du bliver ført til {redirectHostname} efter godkendelse." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Du vil forlade {count, plural, one {# fællesskab} other {# fællesskaber}}, som denne kontrol gælder for, og din konto fungerer normalt igen." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Du forlader {guildNames}. Intet af det, du har skrevet, bliver slettet, og du kan tilmelde dig igen senere." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Du skal stadig afslutte e-mail-trinnet." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Du er for hurtig" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Du er for hurtig. Vent et øjeblik, og prøv igen." @@ -40636,7 +39935,7 @@ msgstr "Du sender beskeder for hurtigt" msgid "You're streaming!" msgstr "Du streamer!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Du har timeout. Du kan ikke sende beskeder, reagere eller deltage i taleopkald, før timeouten udløber." @@ -40764,25 +40063,25 @@ msgstr "Din fornyelsesbetaling via {storeName} mislykkedes, men <0/> forbliver a msgid "Your account" msgstr "Din konto" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Din konto vender tilbage til normal med det samme, og du behøver ikke et telefonnummer nu. Dette er ikke en permanent undtagelse, og vi kan bede om denne kontrol igen senere." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Din konto er blevet forbundet. Du kan nu lukke denne fane og vende tilbage til appen." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Din konto fungerer normalt igen." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Din konto er begrænset" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Din konto er begrænset. Tjek din e-mail for at se, hvordan du fjerner begrænsningen." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Du har endnu ikke fuldført oprettelsen af din konto. Uden en e-mail og adgangskode kan du ikke logge ind fra andre enheder, og du risikerer at miste adgangen til din konto. Fuldfør kontooprettelsen nu for at sikre den." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Din konto er for ny til at sende beskeder i dette fællesskab." @@ -40800,11 +40099,6 @@ msgstr "Din konto kræver flerfaktorgodkendelse, men der er ingen understøttede msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Din konto vil ikke længere være beskyttet af tofaktorgodkendelse, når du logger ind med din adgangskode. Du mister også udvidede tilladelser i fællesskaber, der kræver tofaktorgodkendelse." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Din konto fungerer normalt igen med det samme, og intet bliver fjernet. Vi kan bede om denne kontrol igen senere." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Dit kort bliver tjekket for at se, om du kan få den lokale pris. Det ta msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Dit kort opfylder kravene. Du bliver nu omdirigeret til betalingssiden." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Din teleudbyder siger, at nummeret ikke er i brug. Tjek det, og prøv igen, eller kontakt support, hvis det er korrekt." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Dine ændringer når alle communities, der følger denne kanal, hvilket kan tage et minut. Hvert offentliggjort opslag tillader 3 hurtige redigeringer, derefter 1 hver 20. minut." @@ -40869,21 +40158,6 @@ msgstr "Din enhed vil bede dig om at gemme en opdateret adgangsnøgle til {name} msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Din enhed vil bede dig om at gemme en opdateret adgangsnøgle til {name}. Brug den samme telefon eller sikkerhedsnøgle, som du lige har brugt." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Din e-mailadresse er blevet opdateret." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Din e-mail kunne ikke modtage beskeder. Tilføj en fungerende e-mail, så vi fortsat kan kontakte dig om din konto." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Din e-mail kunne ikke modtage beskeder. Opdater den for at fortsætte med at bruge {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Din e-mailadresse er blevet bekræftet. Du kan nu logge ind på din konto." @@ -41000,21 +40274,11 @@ msgstr "Din besked blev ikke opdateret" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Dit seneste køb er ikke længere inden for refusionsperioden. Kontakt support for faktureringsproblemer." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "din nye e-mail" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Dit nye kaldenavn, eller lad stå tomt for at nulstille det." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Dit nummer er ikke knyttet til din konto. Vi gemmer kun en krypteret markør, uden bruger-id, i en begrænset periode." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Din betaling blev annulleret. Du kan nu lukke denne fane og vende tilbage til appen." @@ -41054,11 +40318,6 @@ msgstr "Dine købte gaver" msgid "your region" msgstr "din region" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Din registrering kræver et ekstra anti-spam-tjek, før du kan fortsætte." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/de/messages.po b/fluxer_app/src/features/i18n/locales/de/messages.po index 28eda0895..339ea028b 100644 --- a/fluxer_app/src/features/i18n/locales/de/messages.po +++ b/fluxer_app/src/features/i18n/locales/de/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# Reaktion} other {# Reaktionen}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# reagierende Person} other {# reagierende Personen}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# Sekunde} other {# Sekunden}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} um {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Dein Einladungslink läuft in # Sekunde ab.} other {Dein Einladungslink läuft in # Sekunden ab.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} ausgewählt" @@ -2252,7 +2252,7 @@ msgstr "1 Minute" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 Stunden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 Monate (1 Jahr)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "2FA-Backup" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2FA-Anforderung" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 Mitglieder (schreiben)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 Monate" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 Stunden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 Monate" @@ -2575,11 +2575,6 @@ msgstr "eine Minute" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Eine neue Desktop-Version ist verfügbar. Lade die Installationsdatei herunter und führe sie aus, um {productName} zu aktualisieren." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Ein neuer Bestätigungscode wurde gesendet." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Accountdaten" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Der Account dient Spam, Betrug oder dem Missbrauch der Plattform." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Konto eingeschränkt" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Accountstatus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Account zu neu" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Accountverifizierung erforderlich" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Einen Bot mit den angeforderten Berechtigungen zu einer Community hinzufügen" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Kommentar hinzufügen (optional)" @@ -3054,8 +3052,10 @@ msgstr "Thema zu diesem Kanal hinzufügen" msgid "Add a word…" msgstr "Wort hinzufügen …" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Funktionierende E-Mail-Adresse hinzufügen" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Füge einen Account hinzu, um fortzufahren." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Füge deinem Account zuerst eine E-Mail-Adresse und ein Passwort hinzu." @@ -3424,11 +3424,6 @@ msgstr "Hinzugefügt: {createdDate} • zuletzt verwendet: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Zusätzliche Kommentare (optional)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Zusätzliche Verifizierung erforderlich" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Alle Sprachen" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Kündigung bereits geplant" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Diese Nachricht auch an das {productName}-Sicherheitsteam melden" @@ -4713,11 +4708,6 @@ msgstr "Vor dem Starten von Anrufen nachfragen" msgid "Ask for a passkey after your password when you sign in" msgstr "Beim Anmelden nach deinem Passwort zusätzlich einen Passkey abfragen" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Bitte die Administratoren dieser Instanz, deinen Account zu überprüfen. Diese Instanz wird unabhängig betrieben, und nur ihre Administratoren können deinen Account ändern." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Tracking-Parameter (wie utm_source, fbclid, gclid) werden automatisch au msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Tracking-Parameter automatisch aus URLs in deinen gesendeten Nachrichten entfernen" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Nachrichten in Kanälen, die nicht als nicht jugendfrei markiert sind, automatisch auf explizite Inhalte prüfen." @@ -5359,8 +5349,6 @@ msgstr "Gerade abwesend" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Zurück" @@ -6506,11 +6494,6 @@ msgstr "Kameras und virtuelle Aufnahmegeräte werden hier in {productName} ausge msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Kameras sind bei mehr als {voiceChannelCameraUserLimit} Teilnehmenden deaktiviert" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Kein Zugriff auf diese E-Mail-Adresse?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Dateien können hier nicht hochgeladen werden" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Dateien können hier nicht hochgeladen werden" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "E-Mail-Adresse ändern" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Emoji ändern" @@ -7201,7 +7184,7 @@ msgstr "Die Nutzerbeschränkung wurde von {oldCount} auf {newCount} geändert" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Die Vanity-URL von {oldCode} zu {newCode} geändert" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Die Verifizierungsstufe wurde von {oldLevel} auf {newLevel} geändert" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kanal oder Kategorie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Kanalberechtigungsüberschreibungen" @@ -7509,8 +7492,6 @@ msgstr "Überprüfe deine Verbindung und versuche es erneut." msgid "Check your connection, then try again." msgstr "Überprüfe deine Verbindung und versuche es dann erneut." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Wähle einen Bildschirm in der Systemauswahl" msgid "Choose a GIF" msgstr "GIF auswählen" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Methode auswählen" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Wähle ein neues Passwort." @@ -7680,8 +7656,8 @@ msgstr "Eine Aktion auswählen." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Emoji auswählen" @@ -7749,11 +7725,6 @@ msgstr "Wähle, wie deine Instanz funktioniert" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Wähle eine der folgenden Methoden, um den Domain-Besitz nachzuweisen. Es muss nur eine abgeschlossen werden." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Wähle eine Verifizierungsmethode. Mit jeder der beiden Methoden kannst du diese Prüfung abschließen." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Wähle aus, was {clientLabel} in deiner Community tun darf. Deaktiviere msgid "Choose what friends see in their active now panel" msgstr "Wähle aus, was Freunde in ihrem Bereich „Jetzt aktiv“ sehen" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Lege fest, welche Voraussetzungen Mitglieder erfüllen müssen, bevor sie Nachrichten posten oder Community-Mitgliedern DMs senden können." @@ -8030,8 +8001,8 @@ msgstr "Verbessert das Mikrofonsignal für klare Sprache." msgid "Clear" msgstr "Löschen" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Löschen nach" @@ -8053,7 +8024,7 @@ msgstr "Alle Anhang-Mocks löschen" msgid "Clear all token overrides" msgstr "Alle Token-Überschreibungen löschen" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Anhang-Mocks löschen" @@ -8066,14 +8037,14 @@ msgstr "Befehl löschen" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Eigenen Status löschen" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Alle Reaktionen aus dieser Nachricht entfernen?" @@ -8124,7 +8095,7 @@ msgstr "Suchfeld leeren" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Kohle-Design" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Befehle" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Kommentare sind deaktiviert, da in einem oder mehreren ausgewählten Kanälen der Slow-Modus aktiviert ist. Der Kommentar würde direkt nach dem Weiterleiten durch den Slow-Modus blockiert werden." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Kommentare sind deaktiviert, da der Slow-Modus in {forwardChannelDisplayName} aktiviert ist. Der Kommentar würde direkt nach dem Weiterleiten durch den Slow-Modus blockiert werden." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Kommentare sind nicht verfügbar, solange der Slow-Modus aktiviert ist." @@ -8670,11 +8639,11 @@ msgstr "Communitys" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Communities und Kanäle, in denen du keine Webhooks verwalten kannst, werden ausgeblendet." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Unter „Entdecken“ aufgeführte Communitys müssen die Nachrichten aller Mitglieder prüfen. Diese Einstellung kann nicht geändert werden, solange „Entdecken“ aktiviert ist." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Unter „Entdecken“ aufgeführte Communitys erfordern mindestens eine verifizierte E-Mail-Adresse. „Keine“ kann nicht ausgewählt werden, solange „Entdecken“ aktiviert ist." @@ -8827,7 +8796,7 @@ msgstr "Community-Name" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Community-Spitzname" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Community-Profil" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Community-Profil aktualisiert" @@ -8907,7 +8876,7 @@ msgstr "Anzeigestufe für ungelesene Nachrichten in der Community" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Community aktualisiert" @@ -8952,11 +8921,6 @@ msgstr "Vergleich" msgid "Complete mature content check" msgstr "Altersprüfung abschließen" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Schließe einen der unten stehenden Verifizierungspfade ab, um {productName} weiterhin nutzen zu können." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Zahlung abschließen" msgid "Complete the mature content check to unlock mature media." msgstr "Schließe die Prüfung für nicht jugendfreie Inhalte ab, um nicht jugendfreie Medien freizuschalten." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Schließe die erforderlichen Schritte zur E-Mail- und Telefonverifizierung ab, um {productName} weiterhin nutzen zu können." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Schließe die erforderliche Verifizierung ab, um {productName} weiterhin zu nutzen." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Profilabzeichen konfigurieren" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Verbindungen neu sortiert" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Einwilligung erforderlich" @@ -9349,16 +9304,6 @@ msgstr "Autorisierungs-URL mit Scopes und Berechtigungen erstellen." msgid "Contact" msgstr "Kontakt" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Support kontaktieren" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Wende dich für Hilfe an die Administratoren dieser Instanz." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Content Creator" msgid "Content filter" msgstr "Inhaltsfilter" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Inhaltsfilter" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Inhaltshinweis" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Prüfungen zum Schutz vor ungeeigneten Inhalten" @@ -9416,12 +9361,10 @@ msgstr "Kontextmenüs können per Linksklick (auf Schaltflächen) oder Rechtskli #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Lege das Verhalten der Ungelesen-Anzeige für stummgeschaltete Kanäle i msgid "Control which chat updates are announced by assistive technology." msgstr "Lege fest, welche Chat-Updates von Bedienungshilfen angesagt werden." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Unterhaltung nicht gefunden" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Tag konnte nicht hinzugefügt werden" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Dieser Freund konnte der Gruppe nicht hinzugefügt werden. Bitte versuche es erneut." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Konnte nicht zur Gruppe hinzugefügt werden" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Design-Link konnte nicht erstellt werden" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Einladungslink konnte nicht erstellt werden" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Übergangsfrist konnte nicht beendet werden" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Einladungslink konnte nicht erstellt werden. Bitte versuche es erneut." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Bild konnte nicht verarbeitet werden" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Diese Nachricht konnte nicht veröffentlicht werden" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Der Visionary-Community konnte nicht wieder beigetreten werden" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Beitrittston konnte nicht entfernt werden" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Konnte Kanaleinstellungen nicht speichern" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Beitrittston konnte nicht gespeichert werden" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Bewerbung konnte nicht zurückgezogen werden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Countdown-Timer" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Land" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Administrator-Account erstellen" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Gruppen-DM mit {addableCount, plural, one {# verbleibendem Empfänger} other {# verbleibenden Empfängern}} erstellen und die anderen überspringen?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Webhook erstellen" @@ -10948,7 +10884,7 @@ msgstr "Benutzerdefiniertes Emoji {emojiName} aus einer Community" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Benutzerdefinierte Beitrittstöne sind auf dieser Instanz nicht aktiviert." @@ -11108,7 +11044,7 @@ msgstr "Benutzerdefinierte Sprachsignalverarbeitung" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Benutzerdefinierter Warntext" @@ -11530,11 +11466,6 @@ msgstr "Standardsuchmaschine" msgid "Default shortcuts" msgstr "Standard-Tastenkombinationen" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Standard-Tab" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Diese Nachricht löschen" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Diese Nachricht löschen? Kann nicht rückgängig gemacht werden." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Diese Nachricht löschen? Das kann nicht rückgängig gemacht werden. Die Nachricht wird auch aus jeder Community entfernt, die diesem Kanal folgt." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Entwicklermodus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Entwickleroption" @@ -12299,7 +12230,7 @@ msgstr "Direkteingabe" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Anzeigemodus" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Anzeigename" @@ -12858,7 +12789,7 @@ msgstr "Möchtest du {communityName} beitreten?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, ich komme aus der Zukunft. Ich bin in einer Zeitmaschine hierhergekommen, die du erfunden hast. Jetzt brauche ich deine Hilfe, um zurück ins Jahr 1985 zu gelangen." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Ortszeit im Profil bearbeiten" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Veröffentlichte Nachricht bearbeiten?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Deine Nachrichten darüber oder darunter bearbeiten" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Bearbeite dein Profil und sieh dir eine Live-Vorschau an" @@ -13590,10 +13521,8 @@ msgstr "Rückerstattungsberechtigt bis {windowEndsOn}. Dadurch wird auch dein Ab msgid "Email" msgstr "E-Mail" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "E-Mail-Adresse erforderlich." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-Mail-Adresse geändert" @@ -13616,49 +13547,17 @@ msgstr "E-Mail-Adresse geändert" msgid "Email delivery" msgstr "E-Mail-Zustellung" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-Mail-Adresse oder Telefonnummer" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Erneute Verifizierung der E-Mail-Adresse oder Telefonnummer erforderlich" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Erneute Verifizierung der E-Mail-Adresse erforderlich" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-Mail nicht verfügbar" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "E-Mail-Aktualisierung ist zurzeit nicht verfügbar. Versuche es später erneut oder kontaktiere den Support." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "E-Mail-Aktualisierung erforderlich" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Schreib uns eine E-Mail und jemand aus unserem Team wird deinen Account überprüfen. Sag uns, dass du dich nicht per SMS verifizieren kannst, und wir kümmern uns um den Rest. Du erhältst die Antwort per E-Mail, daher kann es etwas dauern." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Hinweisleiste zur E-Mail-Verifizierung" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "E-Mail-Verifizierung erforderlich" @@ -13675,6 +13574,10 @@ msgstr "E-Mail-Verifizierung überschreiben" msgid "Email verified successfully" msgstr "E-Mail-Adresse erfolgreich bestätigt" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "E-Mails an deine aktuelle Adresse werden nicht zugestellt. Gib eine neue E-Mail-Adresse ein und wir senden dir dorthin einen Code." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Einbettungen" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Einbettungen unterdrückt" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Einbettungen nicht unterdrückt" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "/tts-Sprachwiedergabe aktivieren" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Aktiviere die 2FA für deinen Account, um diese Einstellung zu ändern" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Gib eine gültige Vorlagen-URL oder einen gültigen Vorlagencode von {theOtherPlatform} ein." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Gib eine gültige E-Mail-Adresse ein." @@ -14298,33 +14199,11 @@ msgstr "Gib eine gültige E-Mail-Adresse ein." msgid "Enter a valid message link." msgstr "Gib einen gültigen Nachrichtenlink ein." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Gib eine gültige Mobiltelefonnummer ein." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Gib eine gültige Telefonnummer ein" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Gib einen gültigen Benutzernamen ein ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Gib eine E-Mail-Adresse ein, auf die du Zugriff hast. Wir senden einen Code dorthin." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Code eingeben" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Vollbildmodus aktivieren" msgid "Enter gift code…" msgstr "Geschenkcode eingeben …" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Neue E-Mail-Adresse eingeben" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Gib einen deiner Backup-Codes ein, wenn du deinen Passkey nicht verwende msgid "Enter one of your backup codes." msgstr "Gib einen deiner Backup-Codes ein." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Telefonnummer eingeben" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Gib den {digitCount}-stelligen Code aus deiner Authenticator-App oder ei msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Gib den {digitCount}-stelligen Code aus deiner Authenticator-App ein." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Gib den {digitCount}-stelligen Code ein, der an {phoneNumber} gesendet wurde." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Gib den Code mit {MFA_CODE_DIGIT_COUNT} Ziffern ein, der an {0} gesendet wurde." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Code eingeben" @@ -14408,11 +14267,6 @@ msgstr "Gib den Code ein, um fortzufahren." msgid "Enter the code from your authenticator app." msgstr "Gib den Code aus deiner Authenticator-App ein." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Gib den Code ein, der an {emailAddress} gesendet wurde." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Gib den Code ein, der an deine aktuelle E-Mail-Adresse gesendet wurde." @@ -14426,6 +14280,7 @@ msgstr "Gib den Code ein, der an deine E-Mail-Adresse gesendet wurde." msgid "Enter the code shown in the app to continue." msgstr "Gib den in der App angezeigten Code ein, um fortzufahren." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Gib den Code ein, den wir an deine neue Adresse gemailt haben." @@ -14434,11 +14289,6 @@ msgstr "Gib den Code ein, den wir an deine neue Adresse gemailt haben." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Gib den Code ein, den wir dir per E-Mail geschickt haben, um sie zu verifizieren. Dein Passwort wird festgelegt, sobald der Code bestätigt wurde." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "E-Mail-Code eingeben" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Gib den Einladungslink ein, um einer Community beizutreten." @@ -14452,11 +14302,6 @@ msgstr "Gib die neue E-Mail-Adresse ein, die du verwenden möchtest. Wir senden msgid "Enter the PIN for your security key to continue." msgstr "Gib die PIN für deinen Sicherheitsschlüssel ein, um fortzufahren." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "SMS-Code eingeben" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Gib diesen Code in deinem Browser ein, um die Anmeldung abzuschließen." @@ -14492,11 +14337,6 @@ msgstr "Gib deinen Namen ein" msgid "Enter your password." msgstr "Gib dein Passwort ein." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Telefonnummer eingeben" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Beitrittston" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Dateien für Beitrittstöne dürfen höchstens {limit} groß sein." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Bibliothek für Beitrittstöne voll" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Beitrittston entfernt" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Beitrittston gespeichert" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Beitrittstöne" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Beitrittstöne nicht verfügbar" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Läuft ab:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Filtereinstellung für explizite Inhalte" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Kopieren in die Zwischenablage fehlgeschlagen" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Webhook konnte nicht erstellt werden" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Vanity-URL konnte nicht geladen werden. Bitte versuche es noch einmal." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Webhooks konnten nicht geladen werden" @@ -15190,11 +15030,6 @@ msgstr "Fehler beim Entfernen der benutzerdefinierten URL. Bitte erneut versuche msgid "Failed to resend code. Try again." msgstr "Code konnte nicht erneut gesendet werden. Versuche es noch einmal." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Verifizierungscode konnte nicht erneut gesendet werden. Bitte versuche es später noch einmal." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Nachricht konnte nicht gesendet werden. Für Optionen gedrückt halten." msgid "Failed to send report. Try again." msgstr "Meldung konnte nicht gesendet werden. Versuche es noch einmal." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Verifizierungs-E-Mail konnte nicht gesendet werden. Bitte versuche es später noch einmal." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Starten fehlgeschlagen" @@ -15551,15 +15381,15 @@ msgstr "Nach Nutzer filtern" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Alle filtern" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Mitglieder ohne Rollen filtern" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Kanal folgen" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Folge uns, um diese Ankündigungen in einem Kanal deiner Wahl zu erhalten." @@ -15773,7 +15603,7 @@ msgstr "Folgender Kanal {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Folgende Kanäle" @@ -15857,11 +15687,6 @@ msgstr "Nur für britische Augen ..." msgid "For me" msgstr "Für mich" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Sende uns für diese Überprüfung eine SMS, anstatt eine von uns zu erhalten." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Bestätige bitte zu deiner Sicherheit, dass du es bist, um fortzufahren." @@ -15905,7 +15730,7 @@ msgstr "Ladeplatzhalter erzwingen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Nicht jugendfreie Medien erzwingen" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "In AFK-Kanal verschieben erzwingen" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Keine {permissionName}-Berechtigung erzwingen" @@ -15948,7 +15773,7 @@ msgstr "Anzeige des Hinweises zur Vanity-URL erzwingen" msgid "Force show voice connection" msgstr "Anzeige der Sprachverbindung erzwingen" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Aktiven Slow-Modus erzwingen" @@ -16020,7 +15845,7 @@ msgstr "Medien weiterleiten" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Nachricht weiterleiten" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Geoblock-Overlay" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Geografisch eingeschränkt" @@ -16490,12 +16315,6 @@ msgstr "Erhalte einen animierten Avatar und ein Banner, ein Abzeichen für Abonn msgid "Get monthly" msgstr "Monatlich abonnieren" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Neuen Code anfordern" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Geschenkcodes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Geschenkdauer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Geschenkinventar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Geschenkinventar-Flow" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Geschenk nicht gefunden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Geschenk eingelöst" @@ -17030,7 +16849,7 @@ msgstr "Gruppen-Direktnachricht" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hallo {displayName}, beanspruche deinen Account, um den Verlust des Zugriffs zu verhindern." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hallo {displayName}, bitte bestätige deine E-Mail-Adresse." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hallo {displayName}, wir können keine E-Mails an deine Adresse senden. Füge eine funktionierende E-Mail-Adresse hinzu, um dein Konto zu verifizieren." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Eigene Bildschirmfreigabe ausblenden?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Hoch" @@ -17755,11 +17579,6 @@ msgstr "Ich bin ein Tooltip" msgid "I changed my mind" msgstr "Ich habe es mir anders überlegt" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Ich brauche eine andere Möglichkeit" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Wenn sich diese Meldung auf eine bestimmte Nachricht bezieht, melde stat msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Wenn sich diese Meldung auf bestimmte Nachrichten bezieht, melde stattdessen die relevanteste Nachricht. Nachrichtenmeldungen geben unserem Sicherheitsteam den klarsten Kontext, und das Hinzufügen von Details in den Kommentaren kann uns helfen, die Meldung schneller zu prüfen. Fahre nur mit der Meldung des gesamten Nutzers fort, wenn die Meldung einer Nachricht das umfassendere Problem nicht erfassen würde." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Wenn du dich nicht per SMS verifizieren kannst" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Wenn du keine Verifizierungsmethode nutzen kannst, kontaktiere den Support." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Oberflächengröße" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Ungültige Audiodatei" @@ -18674,8 +18483,10 @@ msgstr "Ungültiges JSON. Füge die vollständige Antwort von der obigen URL ein #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Sprachanruf beitreten" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Sprachkanal beitreten" @@ -19613,16 +19424,6 @@ msgstr "Mehr über Visionary erfahren" msgid "Leave" msgstr "Verlassen" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "{count, plural, one {# Community} other {# Communitys}} verlassen und diese Prüfung zurückstellen?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Verlassen und zurückstellen" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Bildschirmleser neue Nachrichten ankündigen lassen, sobald sie im geöffneten Kanal eingehen. Benachrichtigungstöne sind davon nicht betroffen." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Community selbst moderieren lassen" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Mediathek" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Bibliothek voll (max. {max} Töne). Lösche einen Ton, bevor du einen weiteren hinzufügst." @@ -19812,7 +19613,7 @@ msgstr "Mediathek: {count} von {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Lebenslang" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Wird geladen..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Lädt…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Niedrig" @@ -20416,7 +20217,7 @@ msgstr "Community-Funktionen verwalten" msgid "Manage emoji & stickers" msgstr "Emoji und Sticker verwalten" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Eingehende Webhooks verwalten, die Nachrichten in diesen Kanal posten können." @@ -20514,7 +20315,7 @@ msgstr "Alle ungelesenen Posteingangskanäle sofort als gelesen markieren, ohne msgid "Mark as read" msgstr "Als gelesen markieren" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Als eingelöst markieren" @@ -20676,14 +20477,14 @@ msgstr "Community für Erwachsene" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Nicht jugendfreie Inhalte" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Nicht jugendfreie Inhalte und Inhaltswarnungen" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maximale Lebensdauer (Tage)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Maximaler Schutz für familienfreundliche Bereiche" @@ -20924,7 +20725,7 @@ msgstr "Wiedergabe stoppen" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Mitglied entbannt" msgid "Member updated" msgstr "Mitglied aktualisiert" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Mitgliederverifizierung" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Verifizierungsstufe für Mitglieder" @@ -21048,7 +20849,7 @@ msgstr "Mitglieder werden entfernt, wenn sie offline sind, es sei denn, sie habe msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Mit \"{pinMessagesPermissionLabel}\" können Mitglieder Nachrichten für alle anheften." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Mitglieder mit Rollen können diese Prüfungen umgehen. Für öffentliche Bereiche empfehlen wir, die Verifizierung zu aktivieren." @@ -21153,7 +20954,7 @@ msgstr "Erwähnungen von dir werden hier für {retentionDays} Tage angezeigt." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Nur Erwähnungen" @@ -21292,7 +21093,7 @@ msgstr "Nachrichtenanzeige-Einstellungen sind nur auf dem Desktop verfügbar." msgid "Message editing" msgstr "Nachrichten bearbeiten" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Nachricht weitergeleitet" @@ -21341,7 +21142,7 @@ msgstr "Schaltflächen für die Nachrichteneingabe" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Nachricht ist zu lang" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Nachrichten-Vorschauen in der DM-Liste anzeigen." #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Nachricht veröffentlicht" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Nachrichten, die in #{sourceName} veröffentlicht werden, erscheinen jetzt in #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Nachrichten, die in diesen Ankündigungskanälen veröffentlicht werden, werden hierher kopiert." @@ -21504,7 +21305,7 @@ msgstr "Nachrichten, die in diesen Ankündigungskanälen veröffentlicht werden, msgid "Messages you can bookmark" msgstr "Nachrichten, die du anpinnen kannst" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Nachrichten sind in dieser Community vorübergehend pausiert." @@ -21733,30 +21534,30 @@ msgstr "Ablauf in 1 Tag simulieren" msgid "Mock expires in 7 days" msgstr "Ablauf in 7 Tagen simulieren" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Geo-Blockierungs-Overlay vortäuschen" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Geschenkinventar simulieren" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Eingehenden Anruf vortäuschen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Grund für Altersbeschränkung des Kanals vortäuschen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Grund für Altersbeschränkung vortäuschen" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "UK-Standort vortäuschen" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Beispiel-Nutzeravatare in verschiedenen Größen und allen Status-Permutationen." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Variante simulieren" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Simulierte Produktabläufe" @@ -22698,14 +22494,16 @@ msgstr "Neue Community stummgeschaltet" msgid "New direct message" msgstr "Neue Direktnachricht" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Neue E-Mail-Adresse" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formular für eine neue E-Mail-Adresse" @@ -22816,9 +22614,7 @@ msgstr "Neueste zuerst" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Weiter" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Nein" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Keine Berechtigung „{attachFilesPermission}“" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Keine Berechtigung \"{sendMessagesPermission}\"" @@ -23005,7 +22801,7 @@ msgstr "Keine Änderungen zum Speichern" msgid "No channels available" msgstr "Keine Kanäle verfügbar" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Keine Kanäle gefunden" @@ -23233,11 +23029,6 @@ msgstr "Keine Berechtigungen gefunden" msgid "No personal words yet." msgstr "Noch keine persönlichen Wörter." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Keine Telefonnummer" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Keine Ergebnisse" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Keine Ergebnisse gefunden" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Keine Benutzer gefunden" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Keine Verifizierung erforderlich." @@ -23452,7 +23243,7 @@ msgstr "Keine Verifizierung erforderlich." msgid "No verification methods available" msgstr "Keine Verifizierungsmethoden verfügbar" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Keine Webhooks" @@ -23504,7 +23295,7 @@ msgstr "Nicht konvertieren" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Keine" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Keine (normales Verhalten)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norwegisch" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Noch nicht lange genug Mitglied" @@ -23798,9 +23589,9 @@ msgstr "Objekte" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Aus" @@ -23848,7 +23639,7 @@ msgstr "Älteste zuerst" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "An" @@ -23884,11 +23675,6 @@ msgstr "Ein oder mehrere Anhänge konnten nicht gelesen oder hochgeladen werden. msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Eine oder mehrere Dateien, die du hochladen möchtest, überschreiten die maximale Größe von {maxSizeFormatted} pro Datei." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Eine kurze Überprüfung" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Nur Lautsprecher" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Nur der Community-Eigentümer kann diese Einstellung ändern" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Emoji im Browser öffnen" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Emoji-Auswahl öffnen" @@ -24382,12 +24168,8 @@ msgstr "Menü-Symbol öffnen" msgid "Open message history threshold" msgstr "Einstellungen zum Stichtag für den Nachrichtenverlauf öffnen" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Overlay öffnen" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Popup öffnen" @@ -24485,11 +24267,6 @@ msgstr "Öffne die neue App. Du bist bereits angemeldet." msgid "Open the shortcuts list for quick actions." msgstr "Öffne die Liste der Tastenkombinationen für schnelle Aktionen." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Öffne die Bestätigungs-E-Mail und verwende den Link darin. Dieses Fenster wird aktualisiert, nachdem der Link geöffnet wurde." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Einstellungen für Audio & Video öffnen" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Öffne deinen Browser, melde dich an und gib dann den folgenden Code ein, um deinen Account zu verknüpfen." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Öffne deine Nachrichten" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Öffne deine alte {PRODUCT_NAME}-App, wähle „Neues Gerät verknüpfen“ und gib dann den folgenden Code ein." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Öffne die Nachrichten-App deines Smartphones und erstelle eine neue SMS." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Öffne die Nachrichten-App deines Smartphones und beginne eine neue SMS." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Andere Reaktion …" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Unsere Telefonnummernprüfung ist gerade ausgefallen. Das Problem liegt bei uns, nicht bei deiner Nummer. Warte ein paar Minuten und versuche es erneut mit derselben Nummer." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "Bild auf" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, Betrug, bösartige Links oder falsche Behauptungen, die wahrscheinlich realen Schaden verursachen." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefon" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Telefonnummer" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Telefonnummer ist erforderlich" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Telefonnummer verifiziert" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Telefonnummer erneut verifizieren" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Telefonschritt" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Telefonverifizierung ist für diesen Account nicht verfügbar. Verwende eine andere Methode oder kontaktiere den Support." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Telefonverifizierung erforderlich" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Wähle die 4-stellige Zahl nach deinem Benutzernamen" msgid "Pick the appearance this administrator account should start with." msgstr "Wähle das Erscheinungsbild, mit dem dieser Administratoraccount beginnen soll." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Wähle die Methode, die du jetzt abschließen kannst." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Bild-im-Bild" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Anpinnen" @@ -25471,7 +25176,7 @@ msgstr "Gruppen-DM anpinnen" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Jede Nachricht anheften oder ihre Anheftung aufheben." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Diese Nachricht für alle sichtbar im Kanal anpinnen." @@ -26227,18 +25932,18 @@ msgstr "Profilfarbe" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Profil anpassen" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Profilanpassung für {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formular zum Anpassen des Profils" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Profiltyp" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profil aktualisiert" @@ -26340,7 +26045,7 @@ msgstr "Bei neuen Audiogeräten nachfragen" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Raid-Koordination" msgid "Rate" msgstr "Geschwindigkeit" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Ratenbegrenzung" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Rohes Embed-JSON" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "{userName} aus deiner Freundesliste entfernen?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Alle entfernen" @@ -27290,7 +26990,7 @@ msgstr "Alle Reaktionen mit {emojiNameWithColons} von dieser Nachricht entfernen #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Alle Reaktionen entfernen" @@ -27899,20 +27599,10 @@ msgstr "Gemeldeter Nutzer-Tag (optional)" msgid "Reposts: <0>{countLabel}" msgstr "Reposts: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Fordere zuerst einen neuen Code an." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Neuen Zurücksetzungslink anfordern" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Fordere zuerst einen Bestätigungscode an." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Anfragen" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "2FA für Moderationsaktionen erforderlich" @@ -27958,7 +27648,7 @@ msgstr "OAuth2-Code-Grant erforderlich" msgid "Require passkey" msgstr "Passkey erforderlich" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Zwei-Faktor-Authentifizierung für Moderatoren verlangen, bevor sie Nutzer bannen oder entfernen, Timeouts verhängen oder Nachrichten löschen können." @@ -27972,46 +27662,6 @@ msgstr "Erforderlich" msgid "Required 2FA for moderation actions" msgstr "2FA für Moderationsaktionen erforderlich" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Standard-Tab für erforderliche Aktion" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Erforderlicher Aktionsfluss" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Erforderlicher Aktionsschritt (Telefon)" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Ladezustand beim erneuten Senden für die erforderliche Aktion" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Ergebnis der erneuten Übermittlung der erforderlichen Aktion" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Text zur erneuten Überprüfung der erforderlichen Aktion" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Erforderliche Aktionsvariante" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Overlay für erforderliche Aktionen" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Erfordert eine Weiterleitungs-URL und einen Autorisierungscode, wenn dieser Bot eingeladen wird." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Erfordert eine verifizierte E-Mail-Adresse und einen Account, der mindestens 5 Minuten alt ist." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Erfordert eine verifizierte E-Mail-Adresse." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Erfordert eine verifizierte Telefonnummer." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Erfordert alles, was in \"Mittel\" enthalten ist, plus eine Mitgliedschaft in der Community von mindestens 10 Minuten." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Erneut senden ({resendSecondsRemaining}s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Erneut senden ({secondsRemaining}s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "\"Erneut senden\"-Button wird geladen" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Code erneut senden" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "E-Mail erneut senden" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Ergebnis des erneuten Sendens" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Erneut gesendet" @@ -28518,21 +28152,6 @@ msgstr "Anzeigen" msgid "Reveal spoiler" msgstr "Spoiler anzeigen" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Bestätige deine E-Mail-Adresse erneut oder verifiziere deine Telefonnummer, um {productName} weiterhin nutzen zu können." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Bestätige deine E-Mail-Adresse erneut, um {productName} weiterhin zu nutzen." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Bestätige deine Telefonnummer erneut, um {productName} weiterhin nutzen zu können." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Sättigung" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Vorschau beim Spulen" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Kanäle suchen" msgid "Search communities" msgstr "Communitys suchen" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Länder suchen …" - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Länder suchen …" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Wähle dein Wohnsitzland aus." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Auswählen …" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Senden" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Senden ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Weitere Meldung senden" msgid "Send button" msgstr "Senden-Taste" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Code senden" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Nachrichten senden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Nachrichten senden deaktiviert" @@ -30151,32 +29759,11 @@ msgstr "Gespeichertes Medium \"{memeName}\" senden" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Sende Text-to-Speech-Nachrichten mit /tts. Mitglieder, die Text-to-Speech aktiviert haben, hören sie vorgelesen." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Sende den Code <0>{0} an <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Sende den Code an die unten stehende Telefonnummer." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Diesen Code senden" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Diesen Pin in die Vergangenheit schicken?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Senden an" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Sprachnachricht senden" msgid "Send:" msgstr "Senden:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Das Senden einer SMS an diese Telefonnummer ist für {PRODUCT_NAME} zu teuer, daher bitten wir dich, uns stattdessen eine SMS zu senden. Wir wissen, dass dies nicht ideal ist. Du kannst auch die Administratoren dieser Instanz bitten, diese Anforderung für deinen Account aufzuheben." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Das Senden einer SMS an diese Telefonnummer ist für {PRODUCT_NAME} zu teuer, daher bitten wir dich, uns stattdessen eine SMS zu senden. Wir wissen, dass dies nicht ideal ist. Du kannst auch <0>{SUPPORT_EMAIL} kontaktieren, damit wir diese Anforderung für deinen Account aufheben." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Seriell senden" msgid "Serve the token file" msgstr "Token-Datei bereitstellen" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Dienstfehler" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Benutzerdefinierte Tastenkombination für „{label}“ festlegen" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Eigenen Status festlegen" @@ -30486,18 +30060,6 @@ msgstr "Die Sprachregion wurde auf {region} gesetzt" msgid "Set the voice region to automatic" msgstr "Die Sprachregion auf automatisch gesetzt" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Diese Prüfung zurückstellen" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Diese Prüfung zurückstellen?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Pronomen festlegen" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Status festlegen" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Während der Aufnahme sind Tastenkombinationen pausiert." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Nachricht kürzen und erneut versuchen." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Ein {productName}-Symbol im Infobereich oder in der Menüleiste anzeigen" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Inhaltswarnung anzeigen" @@ -31672,7 +31234,7 @@ msgstr "Slow-Modus · warte {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Slow-Modus aktiv" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Der Slow-Modus ist auf {durationLabel} eingestellt. Warte, bevor du eine weitere Nachricht sendest." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Verbleibende Zeit im Slow-Modus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Slow-Modus-Simulation" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Verbleibende Zeit im Slow-Modus" @@ -31807,11 +31369,6 @@ msgstr "Flüssiges Scrollen" msgid "Smoother video" msgstr "Flüssigeres Video" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Die SMS-Verifizierung ist derzeit nicht verfügbar. Versuche es später erneut oder kontaktiere den Support." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Beim Vorbereiten dieses Stickers ist ein Fehler aufgetreten. Versuche es mit einer anderen Datei oder versuche es später noch einmal." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Beim Veröffentlichen ist etwas schiefgelaufen. Versuche es gleich noch einmal." @@ -32009,11 +31566,9 @@ msgstr "Es ist ein Fehler aufgetreten. Lade die Seite neu oder melde dich erneut msgid "Something went wrong. Try again later." msgstr "Es ist ein Fehler aufgetreten. Bitte versuche es später erneut." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Es ist ein Fehler aufgetreten. Bitte versuche es erneut." @@ -32352,11 +31907,6 @@ msgstr "Zeitüberschreitung bei der SSO-Anmeldung. Versuche es erneut." msgid "Staff controls" msgstr "Mitarbeiter-Steuerung" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Es können die üblichen Nachrichtentarife deines Mobilfunkanbieters anfallen." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Stern-Animation" msgid "Starred channels" msgstr "Markierte Kanäle" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Subscriber-Transport:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Abo" @@ -33051,14 +32599,12 @@ msgstr "Abonnement-Szenarien" msgid "Subtext" msgstr "Untertext" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Erfolg" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Für die meisten Communitys empfohlen" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "System & Willkommen" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Systemankündigungen vom {productName}-Team. Hier kannst du nicht antworten." @@ -33765,11 +33311,6 @@ msgstr "Textauswahl" msgid "Text size" msgstr "Textgröße" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Sende uns eine SMS von deinem Telefon" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Thailändisch" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Danke, dass du dabei hilfst, {productName} sicher zu halten. Wir prüfen deine Meldung so schnell wie möglich." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Der Code hat nicht funktioniert. Bitte überprüfe ihn und versuche es erneut." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Dieser Code ist abgelaufen. Fordere einen neuen Code an." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Der Vorgang wurde nicht abgeschlossen. Einige Communitys wurden möglicherweise bereits verlassen und dein Account ist noch gesperrt. Drücke erneut „Diese Prüfung zurückstellen“, um den Vorgang abzuschließen." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Das hat nicht geklappt. Nichts hat sich geändert. Versuche es erneut." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Das sieht nicht nach einer gültigen Farbe aus. Versuche es mit Hex, rgb msgid "That doesn't look like a valid URL." msgstr "Das sieht nicht nach einer gültigen URL aus." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Diese E-Mail-Adresse wird bereits verwendet." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Die Berechtigungsüberschreibung verweigerte {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Die Seite, die du suchst, existiert nicht oder wurde verschoben." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Die Telefonprüfung wurde zurückgestellt. Ein E-Mail-Schritt ist noch übrig." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Es sind keine Kanäle verfügbar, für die eine Einladung erstellt werde msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "In dieser Community gibt es derzeit keine Rollen zum Zuweisen, aber du kannst eine neue Rolle in <0>{rolesSettingsPath} erstellen." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Für diesen Kanal sind keine Webhooks konfiguriert. Erstelle einen Webhook, damit externe Anwendungen Nachrichten posten können." @@ -34273,7 +33784,7 @@ msgstr "Beim Laden der Einladungen ist ein Fehler aufgetreten. Versuche es noch msgid "There was an error loading the stickers. Try again." msgstr "Beim Laden der Sticker ist ein Fehler aufgetreten. Bitte versuche es erneut." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Beim Laden der Webhooks für diesen Kanal ist ein Fehler aufgetreten. Versuche es erneut." @@ -34417,7 +33928,7 @@ msgstr "Dieser Kanal kann 10 Nachrichten hintereinander senden, danach alle 6 Mi msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Dieser Kanal kann 10 Nachrichten hintereinander senden, danach alle 6 Minuten eine weitere. Versuche es in ein paar Minuten erneut." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Dieser Kanal unterstützt keine Webhooks." @@ -34550,12 +34061,12 @@ msgstr "Diese Verbindung wurde nicht verifiziert." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Dieser Inhalt ist sensibel." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Diese Unterhaltung ist nicht mehr verfügbar." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Diese Gruppe hat zu viele Mitglieder" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Diese Gruppe ist voll. Entferne jemanden, bevor du weitere Personen hinzufügst." @@ -34715,11 +34226,6 @@ msgstr "Das ist ein benutzerdefinierter Sticker aus einer Community." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Dies ist ein Kanal mit Altersbeschränkung. Updates können nur an Kanäle mit Altersbeschränkung gesendet werden." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Dies ist eine Anti-Spam-Prüfung. Deine Telefonnummer ist nicht mit deinem Account verknüpft." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Dies ist deaktiviert" msgid "This is how messages appear" msgstr "So werden Nachrichten angezeigt" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Das ist für deinen Account gerade nicht verfügbar. Bitte die Administratoren dieser Instanz, es zu überprüfen." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Das ist für deinen Account derzeit nicht verfügbar. Sende eine E-Mail an {supportEmail}, damit jemand aus unserem Team es überprüfen kann." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Das ist nicht der gewünschte Kanal." @@ -34792,11 +34288,6 @@ msgstr "Dies ist dein letzter Passkey und Passkeys sind dein zweiter Faktor. Wen msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Dies ist dein letzter Passkey. Sobald er weg ist, kannst du keinen Passkey mehr als zweiten Faktor verwenden." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Dies ist keine Handynummer und kann daher keine SMS empfangen. Versuche es mit einer Handynummer oder kontaktiere den Support, falls du denkst, dass dies ein Fehler ist." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Diese Nachricht wurde bereits gelöscht." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Diese Nachricht wurde bereits veröffentlicht" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Diese Nachricht existiert nicht mehr." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Dieser Spitzname ist nur in dieser Community sichtbar" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Um diese Nummer zu verifizieren, musst du uns stattdessen eine SMS senden. Gehe zurück und starte die Telefonverifizierung erneut, um den Code und die Empfängernummer zu erhalten." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Für diese Nummer musst du uns zur Verifizierung eine SMS senden, statt eine von uns zu empfangen." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Der Ton dieses Teilnehmers ist ausgeschaltet" msgid "This participant was deafened by moderators" msgstr "Der Ton dieses Teilnehmers wurde von Moderatoren ausgeschaltet" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Diese Telefonnummer kann nicht verwendet werden. Versuche es mit einer anderen Mobilnummer oder kontaktiere den Support." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Diese Telefonnummer wurde bereits verwendet. Versuche es mit einer anderen Nummer oder kontaktiere den Support." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Dieser Nutzer hat keine Rollen in dieser Community." msgid "This user is already banned from the community." msgstr "Dieser Nutzer ist bereits aus der Community ausgeschlossen." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Dieser Nutzer ist nicht mehr verfügbar." @@ -35065,11 +34536,6 @@ msgstr "Dieser Nutzer wurde von einem Plattformadministrator zwangsweise zu dies msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Diese Verifizierungssitzung ist abgelaufen. Kehre zu {productName} zurück und starte den Bezahlvorgang erneut." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Diese Verifizierungssitzung ist abgelaufen. Bitte starte den Vorgang erneut." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Dadurch wirst du abgemeldet, zwischengespeicherte Dateien und gespeicher msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Dadurch werden alle externen Links als vertrauenswürdig eingestuft und die Warnung für jede Domain übersprungen. Deine bestehenden vertrauenswürdigen Domains werden ersetzt. Dies ist weniger sicher." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Dieses Fenster wird automatisch aktualisiert, sobald wir deine Nachricht erhalten haben." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Titelleiste" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Titelleisten-Plattform" @@ -35470,18 +34931,11 @@ msgstr "Ton" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "HDR-Bilder auf den Standardbereich tonemappen, wodurch die Spitzenhelligkeit reduziert wird." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Zu viele Versuche. Warte einen Moment und versuche es dann erneut." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Zu viele Communitys" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Zu viele Anfragen. Versuche es später erneut." @@ -36151,8 +35605,10 @@ msgstr "Emojis konnten nicht für den Upload vorbereitet werden. Die folgenden F #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Nicht verfügbar" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Nicht kategorisiert" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Nicht beanspruchter Account" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Unsortiert" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Anheftung aufheben" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Anheftung der Nachricht aufheben" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Anheftung dieser Nachricht aufheben?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Ungespeicherte Änderungen" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Nicht unterstütztes Audioformat." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Bis ich es wieder einschalte" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "E-Mail nicht verifiziert" @@ -36958,12 +36414,7 @@ msgstr "Aktualisiere {productName}, um diese Nachricht anzuzeigen." msgid "Update app" msgstr "App aktualisieren" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "E-Mail aktualisieren" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Meinen Status aktualisieren" @@ -37306,18 +36757,13 @@ msgstr "Verwende {url} an der Stelle, an der die Bild-URL eingefügt werden soll msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Lege in einem eigenen Dialog einen Stichtag für den Nachrichtenverlauf fest. Er gilt für Mitglieder ohne die Berechtigung „{readMessageHistoryPermissionLabel}“." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Verwende eine andere E-Mail-Adresse und bestätige sie mit einem Code." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Tatsächliche verwenden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Tatsächlichen Premium-Typ verwenden" @@ -37335,16 +36781,6 @@ msgstr "Alternative Methode verwenden" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Authenticator-App zur Generierung von Codes für die Zwei-Faktor-Authentifizierung verwenden" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Verwende eine E-Mail-Adresse, auf die du Zugriff hast. Wir senden einen Code dorthin." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Verwende eine andere E-Mail-Adresse als deine aktuelle." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Dunkles Design in der gesamten App verwenden" msgid "Use default" msgstr "Standard verwenden" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Andere E-Mail verwenden" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "E-Mail verwenden" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Zwei-Faktor-Authentifizierung mit Passkeys verwenden?" msgid "Use passkeys to sign in without a password" msgstr "Nutze Passkeys, um dich ohne Passwort anzumelden" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Telefon verwenden" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Text für erneute Verifizierung verwenden" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Nutzer wechselt den Kanal" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Nutzer nicht gefunden" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Verifizierung" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Verifizierung & Mitgliedschaftsbarrieren" @@ -37970,15 +37387,8 @@ msgstr "Bestätigungscode" msgid "Verification code sent" msgstr "Verifizierungscode gesendet" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Verifizierungscode gesendet. Prüfe deinen neuen E-Mail-Posteingang." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Verifizierungs-E-Mail gesendet. Posteingang prüfen." @@ -38038,23 +37448,6 @@ msgstr "Formular zur Identitätsverifizierung" msgid "Verify it's you" msgstr "Verifiziere deine Identität" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Telefonnummer verifizieren" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Telefonnummer verifizieren" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formular zur Verifizierung der Telefonnummer" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Bestätige deine E-Mail-Adresse, bevor du eine Authenticator-App hinzufügst." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Bestätige deine E-Mail-Adresse, bevor du deinen Community-Spitznamen, Avatar, Banner, deine Biografie, Pronomen oder Akzentfarbe änderst." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Bestätige deine E-Mail-Adresse, bevor du deinen Benutzernamen, Anzeigenamen, Avatar, Banner, deine Biografie, Pronomen, Zeitzone oder die Sichtbarkeit deines {premiumProductName}-Abzeichens änderst." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Bestätige deine E-Mail-Adresse, bevor du dieses Community-Profil bearbeitest. Du kannst es hier trotzdem in der Vorschau ansehen." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Bestätige deine E-Mail-Adresse, bevor du dein Profil bearbeitest. Du kannst es hier trotzdem in der Vorschau ansehen." @@ -38113,11 +37506,6 @@ msgstr "Bestätige deine E-Mail-Adresse, bevor du Freundschaftsanfragen sendest. msgid "Verify your email first" msgstr "Verifiziere zuerst deine E-Mail-Adresse" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Bestätige deine E-Mail-Adresse oder Telefonnummer, um {productName} weiterhin zu nutzen." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "E-Mail verifizieren, um Geschenke zu kaufen." msgid "Verify your email to change your username" msgstr "E-Mail-Adresse bestätigen, um den Benutzernamen zu ändern" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Bestätige deine E-Mail-Adresse, um {productName} weiterhin nutzen zu können." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Bestätige deine E-Mail-Adresse, um dieses Community-Profil zu bearbeiten" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "E-Mail-Adresse verifizieren, um dein Profil zu bearbeiten" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Version" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Sehr hoch" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Lauter" msgid "Wait a moment before deleting more messages." msgstr "Warte einen Moment, bevor du weitere Nachrichten löschst." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Bitte warte einen Moment. Dieses Fenster schließt sich automatisch, sobald wir deine Nachricht erhalten." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Wartezeit zwischen Nachrichten. Mitglieder mit der Berechtigung „{bypassSlowmodePermissionLabel}“ können sie umgehen." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Hier warten" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Warte auf Passkey …" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Warten, bis die Wartezeit des Slow-Modus in {forwardChannelDisplayName} abgelaufen ist." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Warten, bis die Wartezeit des Slow-Modus in einem oder mehreren ausgewählten Kanälen abgelaufen ist." @@ -39115,16 +38482,6 @@ msgstr "Dieses Design konnte nicht gelesen werden. Es ist möglicherweise besch msgid "We couldn't remove that account. Try again." msgstr "Dieser Account konnte nicht entfernt werden. Bitte versuche es erneut." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Wir konnten diese Nummer nicht automatisch verifizieren. Kontaktiere den Support, damit jemand aus unserem Team deinen Account überprüfen kann." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Wir senden keine Verifizierungs-SMS in dieses Land. Versuche es mit einer Mobilnummer aus einem anderen Land oder kontaktiere den Support." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Wir haben ein bestehendes {premiumProductFullName}-Abonnement für diese msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Wir haben die Preise für {premiumProductName} in Brasilien gesenkt. Es kostet jetzt {monthlyPrice} pro Monat oder {yearlyPrice} pro Jahr." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Bevor du fortfahren kannst, ist ein Verifizierungsschritt erforderlich. Dies hilft, Accounts zu schützen und Spam von {productName} fernzuhalten." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Wir benötigen zwei Schritte zur Verifizierung, bevor du fortfahren kannst. Wir zeigen dir die Schritte nacheinander an." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Wir empfehlen, diese Codes jetzt zu speichern, damit du nicht aus deinem Account ausgesperrt wirst." @@ -39167,11 +38514,6 @@ msgstr "Wir haben einen Code an {email} gesendet." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Wir tragen \"{prefillEmail}\" automatisch ein, sobald sich die Browser-Anmeldung öffnet." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Wir senden dir einen SMS-Code, sofern der SMS-Versand verfügbar ist." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Wir würden dir gerne mehr als lebenslangen Zugriff auf {PREMIUM_PRODUCT_NAME} geben, aber das würde das Raum-Zeit-Kontinuum sprengen. Möchtest du das Geschenk stattdessen einem Freund schicken?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Wir verarbeiten deine Anfrage so schnell wie möglich. Du erhältst eine E-Mail, sobald dein Export fertig ist." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Wir stellen deine vorherige E-Mail wieder her, melden alte Sitzungen ab, entfernen Telefonnummern, deaktivieren MFA und sichern deinen Account mit einem neuen Passwort." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Wir stellen deine vorherige E-Mail-Adresse wieder her, melden alte Sitzungen ab, deaktivieren die Multi-Faktor-Authentifizierung und sichern dein Konto mit einem neuen Passwort." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Wir senden einen Bestätigungscode an deine E-Mail-Adresse, bevor du dei msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Wir senden dir einen Verifizierungscode an deine E-Mail, bevor du deine Backup-Codes anzeigen kannst." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Wir senden einen SMS-Code, sobald einer verfügbar ist. Deine Nummer wird nicht mit deinem Konto verknüpft. Wir speichern nur einen verschlüsselten Marker ohne Benutzer-ID für eine begrenzte Zeit." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Wir verifizieren deine aktuelle und deine neue E-Mail-Adresse mit Einmalcodes." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook erstellt" @@ -39331,7 +38669,7 @@ msgstr "Webhook aktualisiert" msgid "Webhook URL" msgstr "Webhook-URL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooks" @@ -39486,8 +38824,8 @@ msgstr "Was du teilst, wird nicht aktualisiert" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Was gibt's Neues?" @@ -39967,21 +39305,11 @@ msgstr "Du kannst die Berechtigung <0>{readMessageHistoryPermissionLabel} au msgid "You can sign back in at any time." msgstr "Du kannst dich jederzeit wieder anmelden." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Du kannst die Administratoren dieser Instanz jederzeit um eine Überprüfung durch einen Menschen bitten." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Du kannst weiterhin einen Account erstellen oder dich anmelden. Wenn Einladungen später wieder aktiviert werden, kannst du denselben Link verwenden, um beizutreten." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Du kannst jederzeit eine menschliche Überprüfung per E-Mail an {supportEmail} anfordern." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Du kannst Links, Emojis und Markdown verwenden." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Du kannst dort keine Ausdrücke hinzufügen" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Du kannst keine neuen Reaktionen hinzufügen, solange dein Timeout aktiv ist." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Du kannst dich nicht selbst befreunden" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Du kannst deinen Spitznamen hier nicht ändern" @@ -40094,7 +39422,7 @@ msgstr "Du kannst dir selbst keine Freundschaftsanfrage senden." msgid "You can't send messages in this channel." msgstr "Du kannst in diesem Kanal keine Nachrichten senden." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Du kannst in dieser Community keine Nachrichten senden." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Du hast keine Berechtigung, dies für dieses Mitglied zu tun." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Du hast keine Berechtigung, diesem Sprachkanal beizutreten" @@ -40243,7 +39571,7 @@ msgstr "Du hast keine Berechtigung, dieses Emoji umzubenennen. Der Name wurde au msgid "You have been banned from this community." msgstr "Du wurdest aus dieser Community ausgeschlossen." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Du hast {username} blockiert. Hebe die Blockierung auf, um Nachrichten zu senden." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Du hast ungespeicherte Änderungen." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Du hast ungespeicherte Änderungen. Speichere sie oder setze sie zurück, bevor du die Seite verlässt." @@ -40270,7 +39598,7 @@ msgstr "Du hast ungespeicherte Änderungen. Speichere sie oder setze sie zurück msgid "You haven't authorized any applications to access your account." msgstr "Du hast noch keine Anwendungen autorisiert, auf deinen Account zuzugreifen." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Du bist noch nicht lange genug Mitglied dieser Community, um Nachrichten senden zu können." @@ -40326,11 +39654,6 @@ msgstr "Du musst den Nutzungsbedingungen zustimmen, um einen Account zu erstelle msgid "You must verify your email before sending a report." msgstr "Du musst deine E-Mail-Adresse bestätigen, bevor du eine Meldung senden kannst." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Du benötigst Zugriff auf deine aktuelle E-Mail-Adresse, um sie hier zu ändern. Nutze, falls verfügbar, die Telefonverifizierung oder kontaktiere den Support." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Du benötigst die Berechtigung \"{manageRolesPermissionLabel}\", um dies msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Du benötigst die Berechtigung \"{manageRolesPermissionLabel}\", um diese Berechtigungen zu bearbeiten." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Du benötigst die Berechtigung „{manageWebhooksPermissionLabel}“, um die Webhooks für diesen Kanal anzuzeigen und zu bearbeiten." @@ -40384,18 +39707,14 @@ msgstr "Du musst zuerst deinen Account beanspruchen, bevor du eine Community ers msgid "You need to claim your account before you can start a direct message." msgstr "Du musst deinen Account beanspruchen, bevor du eine Direktnachricht starten kannst." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Du musst deinen Account beanspruchen, um Direktnachrichten senden zu können." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Du musst deinen Account beanspruchen, um Nachrichten in dieser Community senden zu können." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Du musst eine Telefonnummer verifizieren, um Nachrichten in dieser Community senden zu können." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Du musst deine E-Mail-Adresse bestätigen, bevor du eine Direktnachricht msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Du musst deine E-Mail-Adresse bestätigen, bevor du {premiumProductFullName} kaufen kannst." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Du musst deine E-Mail-Adresse bestätigen, um Nachrichten in dieser Community senden zu können." @@ -40424,11 +39743,6 @@ msgstr "Du musst deine E-Mail-Adresse bestätigen, um Nachrichten in dieser Comm msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Du oder jemand, den du hinzufügst, hat bereits die maximale Anzahl offener Gruppen-DMs erreicht. Verlasse eine und versuche es erneut." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Du bleibst in {ownedNames}. Besitzer können ihre eigene Community nicht verlassen." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Dein Ton wurde von Moderatoren ausgeschaltet" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Nach der Autorisierung wirst du zu {redirectHostname} weitergeleitet." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Du verlässt {count, plural, one {# Community} other {# Communitys}}, für die diese Prüfung gilt. Danach funktioniert dein Account wieder normal." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Du wirst {guildNames} verlassen. Nichts, was du gepostet hast, wird gelöscht, und du kannst jederzeit wieder beitreten." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Du musst den E-Mail-Schritt noch abschließen." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Du bist zu schnell" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Du bist zu schnell. Warte einen Moment und versuch es noch einmal." @@ -40636,7 +39935,7 @@ msgstr "Du sendest zu schnell Nachrichten" msgid "You're streaming!" msgstr "Du streamst!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Für dich gilt ein Timeout. Du kannst keine Nachrichten senden, reagieren oder am Sprachchat teilnehmen, bis er abgelaufen ist." @@ -40764,25 +40063,25 @@ msgstr "Deine Verlängerungszahlung über {storeName} ist fehlgeschlagen, aber < msgid "Your account" msgstr "Dein Account" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Dein Konto ist sofort wieder normal und du brauchst jetzt keine Telefonnummer mehr. Dies ist keine dauerhafte Ausnahme, und wir können diese Überprüfung später erneut anfordern." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Dein Account wurde erfolgreich verknüpft. Du kannst diesen Tab jetzt schließen und zur App zurückkehren." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Dein Account funktioniert wieder normal." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Dein Konto ist eingeschränkt" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Dein Konto ist eingeschränkt. Prüfe deine E-Mails, um zu erfahren, wie du es wieder freischalten kannst." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Dein Account ist noch nicht beansprucht. Ohne E-Mail-Adresse und Passwort kannst du dich nicht von anderen Geräten aus anmelden und könntest den Zugriff auf deinen Account verlieren. Beanspruche deinen Account jetzt, um ihn zu sichern." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Dein Account ist zu neu, um Nachrichten in dieser Community zu senden." @@ -40800,11 +40099,6 @@ msgstr "Für deinen Account ist die Multi-Faktor-Authentifizierung erforderlich, msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Dein Account ist beim Anmelden mit deinem Passwort nicht mehr durch Zwei-Faktor-Authentifizierung geschützt. Du verlierst außerdem erweiterte Berechtigungen in Communitys, die Zwei-Faktor-Authentifizierung erfordern." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Dein Account funktioniert sofort wieder normal und nichts wird entfernt. Wir können diese Prüfung später erneut verlangen." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Deine Karte wird auf lokalisierte Preise geprüft. Dies dauert normalerw msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Deine Karte ist gültig. Du wirst jetzt zur Zahlungsseite weitergeleitet." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Dein Mobilfunkanbieter gibt an, dass diese Nummer nicht vergeben ist. Überprüfe sie und versuche es erneut, oder kontaktiere den Support, falls sie korrekt ist." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Deine Änderungen erreichen jede Community, die diesem Kanal folgt. Das kann einen Moment dauern. Jede veröffentlichte Nachricht erlaubt 3 schnelle Bearbeitungen, danach 1 alle 20 Minuten." @@ -40869,21 +40158,6 @@ msgstr "Dein Gerät wird dich bitten, einen aktualisierten Passkey für {name} z msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Dein Gerät wird dich bitten, einen aktualisierten Passkey für {name} zu speichern. Benutze dasselbe Smartphone oder denselben Sicherheitsschlüssel, den du gerade verwendet hast." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Deine E-Mail-Adresse wurde aktualisiert." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Deine E-Mail-Adresse konnte keine Nachrichten empfangen. Füge eine funktionierende E-Mail-Adresse hinzu, damit wir dich zu deinem Account erreichen können." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Deine E-Mail-Adresse konnte keine Nachrichten empfangen. Aktualisiere sie, um {productName} weiterhin nutzen zu können." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Deine E-Mail-Adresse wurde verifiziert. Du kannst dich jetzt bei deinem Account anmelden." @@ -41000,21 +40274,11 @@ msgstr "Deine Nachricht wurde nicht aktualisiert" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Dein jüngster Kauf liegt nicht mehr innerhalb des Rückerstattungszeitraums. Kontaktiere den Support bei Abrechnungsproblemen." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "deine neue E-Mail-Adresse" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Dein neuer Spitzname. Lass das Feld leer, um ihn zurückzusetzen." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Deine Nummer ist nicht mit deinem Konto verknüpft. Wir speichern nur einen verschlüsselten Marker ohne Benutzer-ID für eine begrenzte Zeit." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Deine Zahlung wurde abgebrochen. Du kannst diesen Tab jetzt schließen und zur App zurückkehren." @@ -41054,11 +40318,6 @@ msgstr "Deine gekauften Geschenke" msgid "your region" msgstr "deine Region" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Deine Registrierung erfordert eine zusätzliche Anti-Spam-Prüfung, bevor du fortfahren kannst." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/el/messages.po b/fluxer_app/src/features/i18n/locales/el/messages.po index f35d81e3d..f8a2bc389 100644 --- a/fluxer_app/src/features/i18n/locales/el/messages.po +++ b/fluxer_app/src/features/i18n/locales/el/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# αντίδραση} other {# αντιδράσει msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# άτομο που αντέδρασε} other {# άτομα που αντέδρασαν}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# δευτερόλεπτο} other {# δευτερόλεπτα}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} στις {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Ο σύνδεσμος πρόσκλησής σας λήγει σε # δευτερόλεπτο.} other {Ο σύνδεσμος πρόσκλησής σας λήγει σε # δευτερόλεπτα.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} επιλεγμένα" @@ -2252,7 +2252,7 @@ msgstr "1 λεπτό" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 ώρες" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 μήνες (1 έτος)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "εφεδρικοί κωδικοί 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Απαίτηση 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 μέλη (πληκτρολογούν)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 μήνες" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 ώρες" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 μήνες" @@ -2575,11 +2575,6 @@ msgstr "ένα λεπτό" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Υπάρχει διαθέσιμη νέα έκδοση για υπολογιστή. Κατεβάστε το πρόγραμμα εγκατάστασης και εκτελέστε το για να ενημερώσετε το {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Έχει σταλεί νέος κωδικός επαλήθευσης." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Δεδομένα λογαριασμού" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Ο λογαριασμός υπάρχει για spam, απάτη ή κατάχρηση της πλατφόρμας." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Ο λογαριασμός έχει περιορισμούς" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Κατάσταση λογαριασμού" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Ο λογαριασμός είναι πολύ καινούριος" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Απαιτείται επαλήθευση λογαριασμού" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Προσθήκη bot σε μια κοινότητα με τα ζητούμενα δικαιώματα" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Προσθήκη σχολίου (προαιρετικό)" @@ -3054,8 +3052,10 @@ msgstr "Πρόσθεσε ένα θέμα σε αυτό το κανάλι" msgid "Add a word…" msgstr "Προσθήκη λέξης…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Προσθέστε ένα email που λειτουργεί" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Προσθέστε έναν λογαριασμό για να συνεχίσετε." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Προσθέστε πρώτα ένα email και έναν κωδικό πρόσβασης στον λογαριασμό σας." @@ -3424,11 +3424,6 @@ msgstr "Προστέθηκε: {createdDate} • τελευταία χρήση: { msgid "Additional comments (optional)" msgstr "Πρόσθετα σχόλια (προαιρετικά)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Απαιτείται επιπλέον επαλήθευση" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Όλες οι γλώσσες" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Έχει ήδη οριστεί για ακύρωση" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Αναφορά αυτού του μηνύματος και στην ομάδα ασφαλείας του {productName}" @@ -4713,11 +4708,6 @@ msgstr "Ζητά επιβεβαίωση πριν από την έναρξη κλ msgid "Ask for a passkey after your password when you sign in" msgstr "Να ζητείται κλειδί πρόσβασης μετά τον κωδικό πρόσβασής σας κατά τη σύνδεση" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Ζητήστε από τους διαχειριστές αυτής της παρουσίας να ελέγξουν τον λογαριασμό σας. Αυτή η παρουσία λειτουργεί ανεξάρτητα και μόνο οι διαχειριστές της μπορούν να αλλάξουν τον λογαριασμό σας." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Αυτόματη αφαίρεση παραμέτρων παρακολο msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Αυτόματη αφαίρεση παραμέτρων παρακολούθησης από URL στα μηνύματα που στέλνετε" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Αυτόματος έλεγχος των μηνυμάτων για ακατάλληλο περιεχόμενο σε κανάλια που δεν έχουν επισημανθεί για περιεχόμενο ενηλίκων." @@ -5359,8 +5349,6 @@ msgstr "Απών τώρα" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Πίσω" @@ -6506,11 +6494,6 @@ msgstr "Οι κάμερες και οι συσκευές εικονικής λή msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Οι κάμερες είναι απενεργοποιημένες πάνω από {voiceChannelCameraUserLimit} συμμετέχοντες" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Δεν έχετε πρόσβαση σε αυτό το email;" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Δεν μπορείτε να ανεβάσετε αρχεία εδώ" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Δεν μπορείτε να ανεβάσετε αρχεία εδώ" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Αλλαγή email" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Αλλαγή emoji" @@ -7201,7 +7184,7 @@ msgstr "Άλλαξε το όριο χρηστών από {oldCount} σε {newCou msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Άλλαξε το προσαρμοσμένο URL από {oldCode} σε {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Άλλαξε το επίπεδο επαλήθευσης από {oldLevel} σε {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Κανάλι ή κατηγορία" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Παρακάμψεις δικαιωμάτων καναλιού" @@ -7509,8 +7492,6 @@ msgstr "Έλεγξε τη σύνδεσή σου και δοκίμασε ξανά msgid "Check your connection, then try again." msgstr "Ελέγξτε τη σύνδεσή σας και δοκιμάστε ξανά." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Επιλέξτε μια οθόνη από τον επιλογέα του msgid "Choose a GIF" msgstr "Επιλέξτε ένα GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Επιλέξτε μια μέθοδο" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Επιλέξτε νέο κωδικό πρόσβασης." @@ -7680,8 +7656,8 @@ msgstr "Επιλέξτε μια ενέργεια." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Επιλέξτε ένα emoji" @@ -7749,11 +7725,6 @@ msgstr "Επιλέξτε πώς λειτουργεί η παρουσία σας" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Επιλέξτε μία από τις παρακάτω μεθόδους για να αποδείξετε την ιδιοκτησία του τομέα. Χρειάζεται να ολοκληρώσετε μόνο μία." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Επιλέξτε μία μέθοδο επαλήθευσης. Οποιαδήποτε μέθοδος μπορεί να ολοκληρώσει αυτόν τον έλεγχο." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Επίλεξε τι μπορεί να κάνει το {clientLabel} στ msgid "Choose what friends see in their active now panel" msgstr "Επιλέξτε τι βλέπουν οι φίλοι στην ενότητα «Ενεργοί τώρα»" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Επιλέξτε τι πρέπει να έχουν τα μέλη πριν δημοσιεύσουν ή στείλουν DM σε μέλη της κοινότητας." @@ -8030,8 +8001,8 @@ msgstr "Καθαρίζει το μικρόφωνό σας για καθαρή ο msgid "Clear" msgstr "Εκκαθάριση" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Εκκαθάριση μετά από" @@ -8053,7 +8024,7 @@ msgstr "Εκκαθάριση όλων των εικονικών συνημμέν msgid "Clear all token overrides" msgstr "Εκκαθάριση όλων των παρακάμψεων μεταβλητών" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Εκκαθάριση εικονικών συνημμένων" @@ -8066,14 +8037,14 @@ msgstr "Εκκαθάριση εντολής" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Εκκαθάριση προσαρμοσμένης κατάστασης" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Να διαγραφούν όλες οι αντιδράσεις από αυτό το μήνυμα;" @@ -8124,7 +8095,7 @@ msgstr "Εκκαθάριση πεδίου αναζήτησης" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Θέμα Coal" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Εντολές" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Τα σχόλια είναι απενεργοποιημένα επειδή ένα ή περισσότερα επιλεγμένα κανάλια έχουν ενεργοποιημένη την αργή λειτουργία. Το σχόλιο θα αποκλειόταν από την αργή λειτουργία αμέσως μετά την προώθηση." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Τα σχόλια είναι απενεργοποιημένα επειδή η αργή λειτουργία είναι ενεργοποιημένη στο {forwardChannelDisplayName}. Το σχόλιο θα αποκλειόταν από την αργή λειτουργία αμέσως μετά την προώθηση." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Τα σχόλια δεν είναι διαθέσιμα όσο είναι ενεργή η αργή λειτουργία." @@ -8670,11 +8639,11 @@ msgstr "Κοινότητες" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Οι κοινότητες και τα κανάλια όπου δεν μπορείτε να διαχειριστείτε webhooks είναι κρυφά." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Οι κοινότητες που εμφανίζονται στην Ανακάλυψη πρέπει να σαρώνουν τα μηνύματα από όλα τα μέλη. Αυτή η ρύθμιση δεν μπορεί να αλλάξει όσο είναι ενεργοποιημένη η Ανακάλυψη." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Οι κοινότητες που εμφανίζονται στην Ανακάλυψη απαιτούν τουλάχιστον επαληθευμένο email. Η επιλογή \"Καμία\" δεν είναι διαθέσιμη όσο η Ανακάλυψη είναι ενεργοποιημένη." @@ -8827,7 +8796,7 @@ msgstr "Όνομα κοινότητας" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Ψευδώνυμο κοινότητας" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Προφίλ κοινότητας" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Το προφίλ κοινότητας ενημερώθηκε" @@ -8907,7 +8876,7 @@ msgstr "Επίπεδο σημάτων μη αναγνωσμένων κοινότ #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Η κοινότητα ενημερώθηκε" @@ -8952,11 +8921,6 @@ msgstr "Σύγκριση" msgid "Complete mature content check" msgstr "Ολοκλήρωση ελέγχου περιεχομένου ενηλίκων" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Ολοκληρώστε μία από τις παρακάτω διαδρομές επαλήθευσης για να συνεχίσετε να χρησιμοποιείτε το {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Ολοκλήρωση πληρωμής" msgid "Complete the mature content check to unlock mature media." msgstr "Ολοκληρώστε τον έλεγχο περιεχομένου ενηλίκων για να ξεκλειδώσετε πολυμέσα ενηλίκων." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Ολοκληρώστε τα απαιτούμενα βήματα επαλήθευσης email και τηλεφώνου παρακάτω για να συνεχίσετε να χρησιμοποιείτε το {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Ολοκληρώστε την απαιτούμενη επαλήθευση για να συνεχίσετε να χρησιμοποιείτε το {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Διαμόρφωση σήματος προφίλ" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Οι συνδέσεις αναδιατάχθηκαν" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Απαιτείται συναίνεση" @@ -9349,16 +9304,6 @@ msgstr "Δημιουργήστε μια διεύθυνση URL εξουσιοδ msgid "Contact" msgstr "Επαφή" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Επικοινωνία με την υποστήριξη" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Επικοινωνήστε με τους διαχειριστές αυτής της παρουσίας για βοήθεια." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Δημιουργός περιεχομένου" msgid "Content filter" msgstr "Φίλτρο περιεχομένου" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Φιλτράρισμα περιεχομένου" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Τύπος περιεχομένου για κωδικοποίηση" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Φίλτρα ασφάλειας περιεχομένου" @@ -9416,12 +9361,10 @@ msgstr "Τα μενού περιβάλλοντος μπορούν να ανοί #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Ελέγξτε τη συμπεριφορά της ένδειξης μη msgid "Control which chat updates are announced by assistive technology." msgstr "Ελέγξτε ποιες ενημερώσεις συνομιλίας ανακοινώνονται από την υποστηρικτική τεχνολογία." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Η συνομιλία δεν βρέθηκε" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Δεν ήταν δυνατή η προσθήκη ετικέτας" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Δεν ήταν δυνατή η προσθήκη αυτού του φίλου στην ομάδα. Δοκιμάστε ξανά." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Δεν ήταν δυνατή η προσθήκη στην ομάδα" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Δεν ήταν δυνατή η δημιουργία συνδέσμου θέματος" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Δεν ήταν δυνατή η δημιουργία συνδέσμου πρόσκλησης" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Δεν ήταν δυνατή η λήξη της περιόδου χάριτος" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Δεν ήταν δυνατή η δημιουργία συνδέσμου πρόσκλησης. Δοκιμάστε ξανά." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Δεν ήταν δυνατή η επεξεργασία της εικόνας" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Δεν ήταν δυνατή η δημοσίευση αυτού του μηνύματος" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Δεν ήταν δυνατή η εκ νέου συμμετοχή στην κοινότητα Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Δεν ήταν δυνατή η κατάργηση του ήχου εισόδου" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Δεν ήταν δυνατή η αποθήκευση των ρυθμίσεων του καναλιού" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Δεν ήταν δυνατή η αποθήκευση του ήχου εισόδου" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Δεν ήταν δυνατή η απόσυρση της αίτησης" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Χρονόμετρο αντίστροφης μέτρησης" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Χώρα" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Δημιουργήστε τον λογαριασμό διαχειρισ msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Να δημιουργηθεί η ομαδική συνομιλία με {addableCount, plural, one {# παραλήπτη που απομένει} other {# παραλήπτες που απομένουν}} και να παραλειφθούν οι υπόλοιποι;" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Δημιουργία webhook" @@ -10948,7 +10884,7 @@ msgstr "Προσαρμοσμένο emoji {emojiName} από μια κοινότ #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Οι προσαρμοσμένοι ήχοι εισόδου δεν είναι ενεργοποιημένοι σε αυτήν την παρουσία." @@ -11108,7 +11044,7 @@ msgstr "Προσαρμοσμένη επεξεργασία φωνής" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Προσαρμοσμένο κείμενο προειδοποίησης" @@ -11530,11 +11466,6 @@ msgstr "Προεπιλεγμένη μηχανή αναζήτησης" msgid "Default shortcuts" msgstr "Προεπιλεγμένες συντομεύσεις" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Προεπιλεγμένη καρτέλα" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Ντέλαγουερ" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Διαγραφή αυτού του μηνύματος" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Διαγραφή αυτού του μηνύματος; Δεν μπορεί να αναιρεθεί." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Διαγραφή αυτού του μηνύματος; Δεν αναιρείται. Το μήνυμα θα αφαιρεθεί επίσης από κάθε κοινότητα που ακολουθεί αυτό το κανάλι." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Λειτουργία προγραμματιστή" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Επιλογή προγραμματιστή" @@ -12299,7 +12230,7 @@ msgstr "Απευθείας είσοδος" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Λειτουργία εμφάνισης" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Όνομα εμφάνισης" @@ -12858,7 +12789,7 @@ msgstr "Θέλεις να μπεις στο {communityName};" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Γιατρέ, έρχομαι από το μέλλον. Ήρθα εδώ με μια χρονομηχανή που εφηύρατε εσείς. Τώρα, χρειάζομαι τη βοήθειά σας για να επιστρέψω στο έτος 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Επεξεργασία τοπικής ώρας προφίλ" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Επεξεργασία δημοσιευμένου μηνύματος;" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Επεξεργασία των μηνυμάτων σας από πάνω ή από κάτω" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Επεξεργαστείτε την εμφάνιση του προφίλ σας και δείτε μια ζωντανή προεπισκόπηση" @@ -13590,10 +13521,8 @@ msgstr "Δικαιούστε επιστροφή χρημάτων έως {windowE msgid "Email" msgstr "Email" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Απαιτείται διεύθυνση email." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Το email άλλαξε" @@ -13616,49 +13547,17 @@ msgstr "Το email άλλαξε" msgid "Email delivery" msgstr "Παράδοση email" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Email ή τηλέφωνο" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Απαιτείται εκ νέου επαλήθευση email ή τηλεφώνου" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Απαιτείται εκ νέου επαλήθευση email" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Email μη διαθέσιμο" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Η ενημέρωση email δεν είναι διαθέσιμη αυτήν τη στιγμή. Δοκιμάστε ξανά αργότερα ή επικοινωνήστε με την υποστήριξη." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Απαιτείται ενημέρωση email" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Στείλτε μας email και ένα άτομο θα ελέγξει τον λογαριασμό σας. Πείτε μας ότι δεν μπορείτε να επαληθεύσετε μέσω SMS και θα αναλάβουμε εμείς. Οι απαντήσεις έρχονται μέσω email, οπότε αυτό δεν είναι άμεσο." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Μπάρα ειδοποιήσεων επαλήθευσης email" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Απαιτείται επαλήθευση email" @@ -13675,6 +13574,10 @@ msgstr "Παράκαμψη επαλήθευσης email" msgid "Email verified successfully" msgstr "Το email επαληθεύτηκε με επιτυχία" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Τα email στη τρέχουσα διεύθυνσή σας δεν παραδίδονται. Εισαγάγετε ένα νέο email και θα στείλουμε έναν κωδικό εκεί." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Ενσωματώσεις" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Οι ενσωματώσεις αποκρύφθηκαν" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Οι ενσωματώσεις εμφανίστηκαν ξανά" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Ενεργοποίηση αναπαραγωγής ομιλίας /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Ενεργοποιήστε το 2FA στον λογαριασμό σας για να αλλάξετε αυτήν τη ρύθμιση" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Εισαγάγετε μια έγκυρη διεύθυνση URL ή κωδικό προτύπου {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Εισαγάγετε μια έγκυρη διεύθυνση email." @@ -14298,33 +14199,11 @@ msgstr "Εισαγάγετε μια έγκυρη διεύθυνση email." msgid "Enter a valid message link." msgstr "Εισαγάγετε έναν έγκυρο σύνδεσμο μηνύματος." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Εισαγάγετε έναν έγκυρο αριθμό κινητού τηλεφώνου." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Εισαγάγετε έναν έγκυρο αριθμό τηλεφώνου" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Εισαγάγετε ένα έγκυρο όνομα χρήστη ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Εισαγάγετε ένα email στο οποίο έχετε πρόσβαση. Θα στείλουμε έναν κωδικό εκεί." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Εισαγωγή κωδικού" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Πλήρης οθόνη" msgid "Enter gift code…" msgstr "Εισαγωγή κωδικού δώρου…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Εισαγάγετε νέο email" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Εισαγάγετε έναν από τους εφεδρικούς κω msgid "Enter one of your backup codes." msgstr "Εισαγάγετε έναν από τους εφεδρικούς κωδικούς σας." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Εισαγωγή τηλεφώνου" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Εισαγάγετε τον κωδικό {digitCount} ψηφίων απ msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Εισαγάγετε τον κωδικό {digitCount} ψηφίων από την εφαρμογή ελέγχου ταυτότητας." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Εισαγάγετε τον κωδικό {digitCount} ψηφίων που στάλθηκε στο {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Εισάγετε τον κωδικό {MFA_CODE_DIGIT_COUNT} ψηφίων που στάλθηκε στο {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Εισαγάγετε τον κωδικό" @@ -14408,11 +14267,6 @@ msgstr "Εισάγετε τον κωδικό πριν συνεχίσετε." msgid "Enter the code from your authenticator app." msgstr "Εισάγετε τον κωδικό από την εφαρμογή ελέγχου ταυτότητας." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Εισαγάγετε τον κωδικό που στάλθηκε στο {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Εισάγετε τον κωδικό που στάλθηκε στο τρέχον email σας." @@ -14426,6 +14280,7 @@ msgstr "Εισάγετε τον κωδικό που στάλθηκε στη δι msgid "Enter the code shown in the app to continue." msgstr "Εισαγάγετε τον κωδικό που εμφανίζεται στην εφαρμογή για να συνεχίσετε." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Εισάγετε τον κωδικό που στείλαμε στην καινούργια σας διεύθυνση email." @@ -14434,11 +14289,6 @@ msgstr "Εισάγετε τον κωδικό που στείλαμε στην κ msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Εισάγετε τον κωδικό που στείλαμε στο email σας για να το επαληθεύσετε. Ο κωδικός πρόσβασής σας θα οριστεί μόλις επιβεβαιωθεί ο κωδικός επαλήθευσης." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Εισαγάγετε τον κωδικό email" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Εισάγετε τον σύνδεσμο πρόσκλησης για να μπείτε σε μια κοινότητα." @@ -14452,11 +14302,6 @@ msgstr "Εισάγετε το νέο email που θέλετε να χρησιμ msgid "Enter the PIN for your security key to continue." msgstr "Εισαγάγετε τον κωδικό PIN για το κλειδί ασφαλείας σας, ώστε να συνεχίσετε." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Εισαγάγετε τον κωδικό SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Πληκτρολογήστε αυτόν τον κωδικό στο πρόγραμμα περιήγησής σας για να ολοκληρώσετε τη σύνδεση." @@ -14492,11 +14337,6 @@ msgstr "Πληκτρολογήστε το όνομά σας" msgid "Enter your password." msgstr "Εισάγετε τον κωδικό πρόσβασής σας." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Εισαγάγετε τον αριθμό τηλεφώνου σας" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Ήχος εισόδου" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Τα αρχεία ήχου εισόδου πρέπει να είναι έως {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Η βιβλιοθήκη ήχων εισόδου είναι πλήρης" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Ο ήχος εισόδου καταργήθηκε" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Ο ήχος εισόδου αποθηκεύτηκε" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Ήχοι εισόδου" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Οι ήχοι εισόδου δεν είναι διαθέσιμοι" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Λήγει:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Ρύθμιση φίλτρου ακατάλληλου περιεχομένου" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Αποτυχία αντιγραφής στο πρόχειρο" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Αποτυχία δημιουργίας webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Αποτυχία φόρτωσης προσαρμοσμένου URL. Δοκιμάστε ξανά." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Αποτυχία φόρτωσης webhooks" @@ -15190,11 +15030,6 @@ msgstr "Αποτυχία κατάργησης προσαρμοσμένου URL. msgid "Failed to resend code. Try again." msgstr "Αποτυχία επανάληψης αποστολής κωδικού. Δοκιμάστε ξανά." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Αποτυχία επανάληψης αποστολής κωδικού επαλήθευσης. Δοκιμάστε ξανά αργότερα." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Αποτυχία αποστολής μηνύματος. Πατήστε msgid "Failed to send report. Try again." msgstr "Αποτυχία αποστολής αναφοράς. Δοκιμάστε ξανά." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Αποτυχία αποστολής email επαλήθευσης. Δοκιμάστε ξανά αργότερα." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Αποτυχία εκκίνησης" @@ -15551,15 +15381,15 @@ msgstr "Φιλτράρισμα κατά χρήστη" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Φιλτράρισμα όλων" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Φιλτράρισμα μελών χωρίς ρόλους" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Ακολούθησε αυτό το κανάλι" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Ακολούθησε για να λαμβάνεις αυτές τις ανακοινώσεις σε ένα κανάλι της επιλογής σου." @@ -15773,7 +15603,7 @@ msgstr "Ακολουθούμενο κανάλι {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Ακολουθούμενα κανάλια" @@ -15857,11 +15687,6 @@ msgstr "Μόνο για βρετανικά μάτια..." msgid "For me" msgstr "Για μένα" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Για αυτόν τον έλεγχο, μας στέλνετε ένα μήνυμα αντί να λάβετε ένα από εμάς." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Για την ασφάλειά σας, επιβεβαιώστε ότι είστε εσείς για να συνεχίσετε." @@ -15905,7 +15730,7 @@ msgstr "Εξαναγκασμός σκελετού φόρτωσης" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Εξαναγκασμός εμφάνισης περιεχομένου ενηλίκων" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Αναγκαστική μετακίνηση στο κανάλι AFK" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Εξαναγκασμός έλλειψης δικαιώματος {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Να εμφανίζεται πάντα η αποποίηση ευθύν msgid "Force show voice connection" msgstr "Να εμφανίζεται πάντα η κατάσταση σύνδεσης φωνής" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Ενεργοποίηση αργής λειτουργίας" @@ -16020,7 +15845,7 @@ msgstr "Προώθηση πολυμέσων" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Προώθηση μηνύματος" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Επικάλυψη γεωγραφικού αποκλεισμού" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Γεωγραφικός περιορισμός" @@ -16490,12 +16315,6 @@ msgstr "Απόκτησε ένα κινούμενο avatar και banner, μια msgid "Get monthly" msgstr "Λήψη μηνιαίως" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Λήψη νέου κωδικού" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Κωδικοί δώρων" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Διάρκεια δώρου" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Δώρα" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Ροή αποθέματος δώρων" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Το δώρο δεν βρέθηκε" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Το δώρο εξαργυρώθηκε" @@ -17030,7 +16849,7 @@ msgstr "Ομαδική απευθείας συνομιλία" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Γεια σας {displayName}, διεκδικήστε τον λογαριασμό σας για να μην χάσετε την πρόσβαση." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Γεια σου {displayName}, επιβεβαίωσε τη διεύθυνση email σου." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Γεια σου {displayName}, δεν μπορούμε να στείλουμε email στη διεύθυνσή σου. Πρόσθεσε ένα έγκυρο email για να επαληθεύσεις τον λογαριασμό σου." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Να αποκρύψετε τη δική σας κοινή χρήση ο #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Υψηλό" @@ -17755,11 +17579,6 @@ msgstr "Είμαι μια επεξήγηση" msgid "I changed my mind" msgstr "Άλλαξα γνώμη" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Χρειάζομαι άλλον τρόπο" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Αν αυτή η αναφορά αφορά ένα συγκεκριμέν msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Αν αυτή η αναφορά αφορά συγκεκριμένα μηνύματα, αναφέρετε το πιο σχετικό μήνυμα. Οι αναφορές μηνυμάτων δίνουν στην ομάδα ασφαλείας μας το σαφέστερο πλαίσιο και η προσθήκη λεπτομερειών στα σχόλια μπορεί να μας βοηθήσει να το εξετάσουμε πιο γρήγορα. Συνεχίστε με την αναφορά του χρήστη συνολικά μόνο αν η αναφορά ενός μηνύματος δεν θα κάλυπτε το ευρύτερο ζήτημα." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Αν δεν μπορείτε να επαληθεύσετε μέσω SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Αν δεν μπορείτε να χρησιμοποιήσετε καμία μέθοδο επαλήθευσης, επικοινωνήστε με την υποστήριξη για βοήθεια." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Μέγεθος διεπαφής" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Μη έγκυρο αρχείο ήχου" @@ -18674,8 +18483,10 @@ msgstr "Μη έγκυρο JSON. Επικολλήστε την πλήρη από #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Συμμετοχή σε φωνητική κλήση" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Συμμετοχή στο φωνητικό κανάλι" @@ -19613,16 +19424,6 @@ msgstr "Μάθετε περισσότερα για το Visionary" msgid "Leave" msgstr "Αποχώρηση" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Αποχώρηση από {count, plural, one {# κοινότητα} other {# κοινότητες}} και αναβολή αυτού του ελέγχου;" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Αποχώρηση και αναβολή" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Τα προγράμματα ανάγνωσης οθόνης ανακοινώνουν τα νέα μηνύματα καθώς φτάνουν στο ανοιχτό κανάλι. Οι ήχοι ειδοποιήσεων δεν επηρεάζονται." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Άσε την κοινότητα να συντονίζεται μόνη της" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Βιβλιοθήκη" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Η βιβλιοθήκη είναι πλήρης (έως {max} ήχοι). Διαγράψτε έναν πριν προσθέσετε άλλον." @@ -19812,7 +19613,7 @@ msgstr "Βιβλιοθήκη: {count} από {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Ισόβια" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Φόρτωση..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Φόρτωση…" @@ -20261,7 +20062,7 @@ msgstr "Λουιζιάνα" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Χαμηλό" @@ -20416,7 +20217,7 @@ msgstr "Διαχείριση λειτουργιών κοινότητας" msgid "Manage emoji & stickers" msgstr "Διαχείριση emoji και αυτοκόλλητων" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Διαχειριστείτε τα εισερχόμενα webhook που μπορούν να δημοσιεύουν μηνύματα σε αυτό το κανάλι." @@ -20514,7 +20315,7 @@ msgstr "Σήμανση όλων των μη αναγνωσμένων καναλ msgid "Mark as read" msgstr "Σήμανση ως αναγνωσμένου" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Σήμανση ως εξαργυρωμένου" @@ -20676,14 +20477,14 @@ msgstr "Κοινότητα ενηλίκων" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Περιεχόμενο για ενήλικες" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Περιεχόμενο για ενήλικες και προειδοποιήσεις περιεχομένου" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Μέγιστη διάρκεια ζωής (ημέρες)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Μέγιστη προστασία για χώρους φιλικούς προς την οικογένεια" @@ -20924,7 +20725,7 @@ msgstr "Διακοπή αναπαραγωγής" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Ο αποκλεισμός του μέλους καταργήθηκε" msgid "Member updated" msgstr "Το μέλος ενημερώθηκε" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Επαλήθευση μέλους" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Επίπεδο επαλήθευσης μέλους" @@ -21048,7 +20849,7 @@ msgstr "Τα μέλη αφαιρούνται όταν είναι εκτός σύ msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Τα μέλη με το δικαίωμα \"{pinMessagesPermissionLabel}\" μπορούν να καρφιτσώνουν μηνύματα για όλους." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Τα μέλη με ρόλους μπορούν να παρακάμψουν αυτούς τους ελέγχους. Για δημόσιους χώρους, συνιστούμε την ενεργοποίηση της επαλήθευσης." @@ -21153,7 +20954,7 @@ msgstr "Οι αναφορές σε εσάς εμφανίζονται εδώ γι #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Μόνο αναφορές" @@ -21292,7 +21093,7 @@ msgstr "Οι ρυθμίσεις εμφάνισης μηνυμάτων είναι msgid "Message editing" msgstr "Επεξεργασία μηνύματος" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Το μήνυμα προωθήθηκε" @@ -21341,7 +21142,7 @@ msgstr "Κουμπιά εισαγωγής μηνυμάτων" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Το μήνυμα είναι πολύ μεγάλο" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Προεπισκοπήσεις μηνυμάτων στη λίστα DM" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Μήνυμα δημοσιεύτηκε" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Μηνύματα που δημοσιεύονται στο #{sourceName} θα εμφανίζονται τώρα στο #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Τα μηνύματα που δημοσιεύονται σε αυτά τα κανάλια ανακοινώσεων αντιγράφονται εδώ." @@ -21504,7 +21305,7 @@ msgstr "Τα μηνύματα που δημοσιεύονται σε αυτά τ msgid "Messages you can bookmark" msgstr "Μηνύματα που μπορείτε να αποθηκεύσετε" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Η ανταλλαγή μηνυμάτων έχει προσωρινά τεθεί σε παύση σε αυτήν την κοινότητα." @@ -21733,30 +21534,30 @@ msgstr "Εικονικό: λήγει σε 1 ημέρα" msgid "Mock expires in 7 days" msgstr "Εικονικό: λήγει σε 7 ημέρες" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Επικάλυψη εικονικού γεωγραφικού αποκλεισμού" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Εικονικό απόθεμα δώρων" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Προσομοίωση εισερχόμενης κλήσης" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Προσομοίωση αιτίας πύλης καναλιού για περιεχόμενο ενηλίκων" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Προσομοίωση αιτίας πύλης πολυμέσων για περιεχόμενο ενηλίκων" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Εικονική γεωγραφική θέση ΗΒ" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Εικονικά avatar χρηστών σε διάφορα μεγέθη και όλους τους πιθανούς συνδυασμούς κατάστασης." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Εικονική παραλλαγή" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Εικονικές ροές προϊόντων" @@ -22698,14 +22494,16 @@ msgstr "Νέα κοινότητα σε σίγαση" msgid "New direct message" msgstr "Νέο απευθείας μήνυμα" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Νέο email" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Φόρμα νέου email" @@ -22816,9 +22614,7 @@ msgstr "Πιο πρόσφατα πρώτα" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Επόμενο" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Όχι" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Δεν υπάρχει δικαίωμα {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Δεν υπάρχει δικαίωμα {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Δεν υπάρχουν αλλαγές για αποθήκευση" msgid "No channels available" msgstr "Δεν υπάρχουν διαθέσιμα κανάλια" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Δεν βρέθηκαν κανάλια" @@ -23233,11 +23029,6 @@ msgstr "Δεν βρέθηκαν δικαιώματα" msgid "No personal words yet." msgstr "Δεν υπάρχουν ακόμα προσωπικές λέξεις." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Χωρίς αριθμό τηλεφώνου" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Κανένα αποτέλεσμα" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Δεν βρέθηκαν αποτελέσματα" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Δεν βρέθηκαν χρήστες" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Δεν απαιτείται επαλήθευση." @@ -23452,7 +23243,7 @@ msgstr "Δεν απαιτείται επαλήθευση." msgid "No verification methods available" msgstr "Δεν υπάρχουν διαθέσιμες μέθοδοι επαλήθευσης" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Δεν υπάρχουν webhooks" @@ -23504,7 +23295,7 @@ msgstr "Χωρίς μετατροπή" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Καμία" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Καμία (κανονική συμπεριφορά)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Νορβηγικά" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Δεν είστε μέλος για αρκετό καιρό" @@ -23798,9 +23589,9 @@ msgstr "Αντικείμενα" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Ανενεργό" @@ -23848,7 +23639,7 @@ msgstr "Παλαιότερα πρώτα" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Ενεργό" @@ -23884,11 +23675,6 @@ msgstr "Δεν ήταν δυνατή η ανάγνωση ή η μεταφόρτ msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Ένα ή περισσότερα αρχεία που προσπαθείτε να ανεβάσετε υπερβαίνουν το μέγιστο επιτρεπόμενο μέγεθος των {maxSizeFormatted} ανά αρχείο." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Μια γρήγορη επαλήθευση" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Μόνο ηχεία" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Μόνο ο κάτοχος της κοινότητας μπορεί να αλλάξει αυτήν τη ρύθμιση" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Άνοιγμα emoji στο πρόγραμμα περιήγησης" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Άνοιγμα επιλογέα emoji" @@ -24382,12 +24168,8 @@ msgstr "Άνοιγμα μενού" msgid "Open message history threshold" msgstr "Όριο ιστορικού μηνυμάτων" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Άνοιγμα επικάλυψης" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Άνοιγμα αναπτυσσόμενου πλαισίου" @@ -24485,11 +24267,6 @@ msgstr "Ανοίξτε τη νέα εφαρμογή. Είστε ήδη συνδ msgid "Open the shortcuts list for quick actions." msgstr "Ανοίξτε τη λίστα συντομεύσεων για γρήγορες ενέργειες." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Ανοίξτε το email επαλήθευσης και χρησιμοποιήστε τον σύνδεσμο που περιέχει. Αυτό το παράθυρο θα ενημερωθεί αφού ανοίξει ο σύνδεσμος." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Άνοιγμα ρυθμίσεων φωνής και βίντεο" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Ανοίξτε το πρόγραμμα περιήγησής σας, συνδεθείτε και, στη συνέχεια, εισαγάγετε τον παρακάτω κωδικό για να συνδέσετε τον λογαριασμό σας." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Ανοίξτε τα μηνύματά σας" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Ανοίξτε την παλιά σας εφαρμογή {PRODUCT_NAME}, επιλέξτε «Σύνδεση νέας συσκευής» και, στη συνέχεια, εισαγάγετε τον παρακάτω κωδικό." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Ανοίξτε την εφαρμογή μηνυμάτων του τηλεφώνου σας και δημιουργήστε ένα νέο μήνυμα κειμένου." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Ανοίξτε την εφαρμογή μηνυμάτων του τηλεφώνου σας και ξεκινήστε ένα νέο μήνυμα κειμένου." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Άλλη αντίδραση…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Η υπηρεσία ελέγχου του αριθμού τηλεφώνου μας είναι προσωρινά εκτός λειτουργίας. Η ευθύνη είναι δική μας, όχι του αριθμού σας. Περιμένετε λίγα λεπτά και δοκιμάστε ξανά με τον ίδιο αριθμό." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, απάτη, κακόβουλοι σύνδεσμοι ή ψευδείς ισχυρισμοί που ενδέχεται να προκαλέσουν πραγματική βλάβη." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Τηλέφωνο" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Αριθμός τηλεφώνου" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Απαιτείται αριθμός τηλεφώνου" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Ο αριθμός τηλεφώνου επαληθεύτηκε" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Απαιτείται εκ νέου επαλήθευση τηλεφώνου" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Βήμα τηλεφώνου" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Η επαλήθευση τηλεφώνου δεν είναι διαθέσιμη για αυτόν τον λογαριασμό. Χρησιμοποιήστε άλλη μέθοδο ή επικοινωνήστε με την υποστήριξη." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Απαιτείται επαλήθευση τηλεφώνου" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Διάλεξε τον 4ψήφιο αριθμό μετά το όνομά msgid "Pick the appearance this administrator account should start with." msgstr "Επιλέξτε την εμφάνιση με την οποία θα ξεκινήσει αυτός ο λογαριασμός διαχειριστή." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Επιλέξτε τη μέθοδο που μπορείτε να ολοκληρώσετε τώρα." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Εικόνα σε εικόνα" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Καρφίτσωμα" @@ -25471,7 +25176,7 @@ msgstr "Καρφίτσωμα ομαδικής συνομιλίας" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Καρφίτσωμα ή αφαίρεση καρφιτσώματος οποιουδήποτε μηνύματος." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Καρφιτσώστε αυτό το μήνυμα στο κανάλι για να το βλέπουν όλοι." @@ -26227,18 +25932,18 @@ msgstr "Χρώμα προφίλ" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Προσαρμογή προφίλ" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Προσαρμογή προφίλ για το {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Φόρμα προσαρμογής προφίλ" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Τύπος προφίλ" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Το προφίλ ενημερώθηκε" @@ -26340,7 +26045,7 @@ msgstr "Εμφάνιση ειδοποίησης για νέες συσκευές #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Συντονισμός επιδρομής" msgid "Rate" msgstr "Ταχύτητα" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Υπέρβαση ορίου αιτημάτων" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Ακατέργαστο JSON ενσωμάτωσης" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Να καταργηθεί ο/η {userName} από τους φίλους σας;" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Αφαίρεση όλων" @@ -27290,7 +26990,7 @@ msgstr "Να καταργηθούν όλες οι αντιδράσεις {emojiN #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Κατάργηση όλων των αντιδράσεων" @@ -27899,20 +27599,10 @@ msgstr "Ετικέτα αναφερόμενου χρήστη (προαιρετι msgid "Reposts: <0>{countLabel}" msgstr "Αναδημοσιεύσεις: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Ζητήστε πρώτα έναν νέο κωδικό." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Ζητήστε έναν νέο σύνδεσμο επαναφοράς" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Ζητήστε πρώτα έναν κωδικό επαλήθευσης." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Αιτήματα" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Απαίτηση 2FA για ενέργειες συντονισμού" @@ -27958,7 +27648,7 @@ msgstr "Απαίτηση εκχώρησης κωδικού OAuth2" msgid "Require passkey" msgstr "Απαίτηση κλειδιού πρόσβασης" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Να απαιτείται έλεγχος ταυτότητας δύο παραγόντων για τους συντονιστές, προτού μπορέσουν να αποκλείσουν, να αποβάλουν, να θέσουν σε προσωρινό περιορισμό ή να διαγράψουν μηνύματα." @@ -27972,46 +27662,6 @@ msgstr "Απαιτείται" msgid "Required 2FA for moderation actions" msgstr "Ενεργοποιήθηκε η απαίτηση για έλεγχο ταυτότητας δύο παραγόντων (2FA) για ενέργειες συντονισμού" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Προεπιλεγμένη καρτέλα απαιτούμενης ενέργειας" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Ροή απαιτούμενης ενέργειας" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Βήμα τηλεφώνου απαιτούμενης ενέργειας" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Απαιτούμενη ενέργεια: εκ νέου αποστολή (φόρτωση)" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Απαιτούμενη ενέργεια: αποτέλεσμα εκ νέου αποστολής" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Κείμενο επανεπαλήθευσης απαιτούμενης ενέργειας" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Παραλλαγή απαιτούμενης ενέργειας" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Επικάλυψη απαιτούμενων ενεργειών" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Απαιτεί URI ανακατεύθυνσης και κωδικό εξουσιοδότησης κατά την πρόσκληση αυτού του bot." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Απαιτείται επαληθευμένη διεύθυνση email και λογαριασμός που να έχει δημιουργηθεί τουλάχιστον 5 λεπτά πριν." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Απαιτείται επαληθευμένη διεύθυνση email." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Απαιτείται επαληθευμένος αριθμός τηλεφώνου." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Απαιτούνται όλα όσα και στο επίπεδο \"Μέτρια\", καθώς και συμμετοχή στην κοινότητα για τουλάχιστον 10 λεπτά." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Επανάληψη αποστολής ({resendSecondsRemaining}δ)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Επανάληψη αποστολής ({secondsRemaining}δ)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Φόρτωση κουμπιού επανάληψης αποστολής" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Επανάληψη αποστολής κωδικού" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Επανάληψη αποστολής email" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Αποτέλεσμα εκ νέου αποστολής" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Εστάλη ξανά" @@ -28518,21 +28152,6 @@ msgstr "Αποκάλυψη" msgid "Reveal spoiler" msgstr "Αποκάλυψη spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Επαληθεύστε ξανά το email σας ή επαληθεύστε το τηλέφωνό σας για να συνεχίσετε να χρησιμοποιείτε το {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Επαληθεύστε ξανά το email σας για να συνεχίσετε να χρησιμοποιείτε το {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Επαληθεύστε ξανά τον αριθμό τηλεφώνου σας για να συνεχίσετε να χρησιμοποιείτε το {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Κορεσμός" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Προεπισκόπηση μετακίνησης" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Αναζήτηση καναλιών" msgid "Search communities" msgstr "Αναζήτηση κοινοτήτων" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Αναζήτηση χωρών..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Αναζήτηση χωρών…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Επιλέξτε τη χώρα διαμονής σας." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Επιλογή…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Αποστολή" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Αποστολή ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Αποστολή άλλης αναφοράς" msgid "Send button" msgstr "Κουμπί αποστολής" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Αποστολή κωδικού" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Αποστολή μηνυμάτων" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Αποστολή μηνυμάτων απενεργοποιημένη" @@ -30151,32 +29759,11 @@ msgstr "Αποστολή αποθηκευμένου πολυμέσου {memeName msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Στείλτε μηνύματα κειμένου σε ομιλία με το /tts. Τα μέλη που έχουν ενεργοποιήσει τη μετατροπή κειμένου σε ομιλία τα ακούν να διαβάζονται δυνατά." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Στείλτε τον κωδικό <0>{0} στο <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Στείλτε τον κωδικό στον παρακάτω αριθμό τηλεφώνου." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Στείλτε αυτόν τον κωδικό" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Να στείλετε αυτό το καρφιτσωμένο μήνυμα πίσω στον χρόνο;" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Αποστολή σε" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Αποστολή φωνητικού μηνύματος" msgid "Send:" msgstr "Αποστολή:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Η αποστολή SMS σε αυτόν τον αριθμό τηλεφώνου είναι πολύ ακριβή για το {PRODUCT_NAME}, οπότε πρέπει να μας στείλετε εσείς ένα SMS. Γνωρίζουμε ότι αυτό δεν είναι το ιδανικό. Μπορείτε επίσης να ζητήσετε από τους διαχειριστές αυτής της παρουσίας να καταργήσουν αυτήν την απαίτηση από τον λογαριασμό σας." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Η αποστολή SMS σε αυτόν τον αριθμό τηλεφώνου είναι πολύ ακριβή για το {PRODUCT_NAME}, οπότε πρέπει να μας στείλετε εσείς ένα SMS. Γνωρίζουμε ότι αυτό δεν είναι το ιδανικό. Μπορείτε επίσης να επικοινωνήσετε με το <0>{SUPPORT_EMAIL} για να καταργήσουμε αυτήν την απαίτηση από τον λογαριασμό σας." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Αποστολή κατά σειρά" msgid "Serve the token file" msgstr "Παροχή του αρχείου token" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Σφάλμα υπηρεσίας" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Ορισμός προσαρμοσμένης συντόμευσης για «{label}»" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Ορισμός προσαρμοσμένης κατάστασης" @@ -30486,18 +30060,6 @@ msgstr "Ορίστηκε η περιοχή φωνής σε {region}" msgid "Set the voice region to automatic" msgstr "Ορίστηκε η περιοχή φωνής σε αυτόματη" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Αναβολή αυτού του ελέγχου" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Αναβολή αυτού του ελέγχου;" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Όρισε τις αντωνυμίες σου" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Όρισε την κατάστασή σου" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Οι συντομεύσεις απενεργοποιούνται προσωρινά κατά την καταγραφή." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Συντομεύστε το μήνυμα και δοκιμάστε ξανά." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Εμφάνιση εικονιδίου {productName} στην περιοχή ειδοποιήσεων ή στη γραμμή μενού" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Εμφάνιση προειδοποίησης περιεχομένου" @@ -31672,7 +31234,7 @@ msgstr "Αργή λειτουργία · αναμονή {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Ενεργή αργή λειτουργία" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Η αργή λειτουργία έχει οριστεί σε {durationLabel}. Περιμένετε πριν στείλετε άλλο μήνυμα." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Υπόλοιπο αργής λειτουργίας" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Προσομοίωση αργής λειτουργίας" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Χρόνος που απομένει για αργή λειτουργία" @@ -31807,11 +31369,6 @@ msgstr "Ομαλή κύλιση" msgid "Smoother video" msgstr "Ομαλότερο βίντεο" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Η επαλήθευση SMS δεν είναι διαθέσιμη αυτήν τη στιγμή. Δοκιμάστε ξανά αργότερα ή επικοινωνήστε με την υποστήριξη." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Κάτι πήγε στραβά κατά την προετοιμασία αυτού του αυτοκόλλητου. Δοκιμάστε άλλο αρχείο ή δοκιμάστε ξανά σε λίγο." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Κάτι πήγε στραβά κατά τη δημοσίευση. Δοκιμάστε ξανά σε λίγο." @@ -32009,11 +31566,9 @@ msgstr "Κάτι πήγε στραβά. Φορτώστε ξανά τη σελί msgid "Something went wrong. Try again later." msgstr "Κάτι πήγε στραβά. Δοκιμάστε ξανά αργότερα." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Κάτι πήγε στραβά. Δοκιμάστε ξανά." @@ -32352,11 +31907,6 @@ msgstr "Έληξε ο χρόνος σύνδεσης SSO. Δοκιμάστε ξα msgid "Staff controls" msgstr "Επιλογές προσωπικού" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Ενδέχεται να ισχύουν οι τυπικές χρεώσεις μηνυμάτων του παρόχου σας." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Αγαπημένα GIF" msgid "Starred channels" msgstr "Αγαπημένα κανάλια" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Μεταφορά συνδρομητή:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Συνδρομή" @@ -33051,14 +32599,12 @@ msgstr "Σενάρια συνδρομής" msgid "Subtext" msgstr "Δευτερεύον κείμενο" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Επιτυχία" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Προτείνεται για τις περισσότερες κοινότητες" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Σύστημα & καλωσόρισμα" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Ανακοινώσεις συστήματος από το προσωπικό του {productName}. Δεν μπορείτε να απαντήσετε εδώ." @@ -33765,11 +33311,6 @@ msgstr "Επιλογή κειμένου" msgid "Text size" msgstr "Μέγεθος κειμένου" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Στείλτε μας μήνυμα από το τηλέφωνό σας" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Ταϊλανδικά" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Σας ευχαριστούμε που συμβάλλετε στη διατήρηση της ασφάλειας του {productName}. Θα εξετάσουμε την αναφορά σας το συντομότερο δυνατό." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Αυτός ο κωδικός δεν λειτούργησε. Ελέγξτε τον και δοκιμάστε ξανά." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Αυτός ο κωδικός έληξε. Ζητήστε έναν νέο κωδικό." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Αυτό δεν ολοκληρώθηκε. Ενδέχεται να έχετε ήδη αποχωρήσει από ορισμένες κοινότητες και ο λογαριασμός σας παραμένει κλειδωμένος. Πατήστε ξανά «Αναβολή αυτού του ελέγχου» για να ολοκληρώσετε." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Δεν λειτούργησε. Τίποτα δεν άλλαξε. Δοκιμάστε ξανά." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Αυτό δεν μοιάζει με έγκυρο χρώμα. Δοκιμ msgid "That doesn't look like a valid URL." msgstr "Αυτό δεν μοιάζει με έγκυρη διεύθυνση URL." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Αυτό το email χρησιμοποιείται ήδη." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Η παράκαμψη απαγόρευε {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Η σελίδα που ψάχνετε δεν υπάρχει ή έχει μετακινηθεί." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Αφήσαμε στην άκρη τον τηλεφωνικό έλεγχο. Απομένει ένα βήμα με το email." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Δεν υπάρχουν διαθέσιμα κανάλια για τη δ msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Δεν υπάρχουν ρόλοι για ανάθεση σε αυτήν την κοινότητα αυτήν τη στιγμή, αλλά μπορείτε να δημιουργήσετε έναν νέο ρόλο στο <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Δεν έχουν ρυθμιστεί webhooks για αυτό το κανάλι. Δημιουργήστε ένα webhook για να επιτρέψετε σε εξωτερικές εφαρμογές να δημοσιεύουν μηνύματα." @@ -34273,7 +33784,7 @@ msgstr "Παρουσιάστηκε σφάλμα κατά τη φόρτωση τ msgid "There was an error loading the stickers. Try again." msgstr "Παρουσιάστηκε σφάλμα κατά τη φόρτωση των αυτοκόλλητων. Δοκιμάστε ξανά." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Παρουσιάστηκε σφάλμα κατά τη φόρτωση των webhooks για αυτό το κανάλι. Δοκιμάστε ξανά." @@ -34417,7 +33928,7 @@ msgstr "Αυτό το κανάλι μπορεί να δημοσιεύσει 10 msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Αυτό το κανάλι μπορεί να δημοσιεύσει 10 μηνύματα στη σειρά, και μετά ένα ακόμη κάθε 6 λεπτά. Δοκιμάστε ξανά σε λίγα λεπτά." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Αυτό το κανάλι δεν υποστηρίζει webhooks." @@ -34550,12 +34061,12 @@ msgstr "Αυτή η σύνδεση δεν έχει επαληθευτεί." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Περιέχει ευαίσθητο περιεχόμενο." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Αυτή η συνομιλία δεν είναι πλέον διαθέσιμη." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Αυτή η ομάδα έχει πάρα πολλά άτομα" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Αυτή η ομάδα είναι πλήρης. Αφαιρέστε κάποιον πριν προσθέσετε κι άλλα άτομα." @@ -34715,11 +34226,6 @@ msgstr "Αυτό είναι ένα προσαρμοσμένο αυτοκόλλη msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Αυτό είναι ένα κανάλι με περιορισμούς ηλικίας. Οι ενημερώσεις μπορούν να σταλούν μόνο σε κανάλια με περιορισμούς ηλικίας." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Αυτός είναι ένας έλεγχος κατά των ανεπιθύμητων μηνυμάτων. Ο αριθμός τηλεφώνου σας δεν συνδέεται με τον λογαριασμό σας." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Αυτό είναι απενεργοποιημένο" msgid "This is how messages appear" msgstr "Έτσι εμφανίζονται τα μηνύματα" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Αυτό δεν είναι διαθέσιμο στον λογαριασμό σας αυτήν τη στιγμή. Ζητήστε από τους διαχειριστές αυτής της παρουσίας να το ελέγξουν." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Αυτό δεν είναι διαθέσιμο στον λογαριασμό σας αυτήν τη στιγμή. Στείλτε email στο {supportEmail} και κάποιος θα το ελέγξει." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Αυτό δεν είναι το κανάλι που ψάχνετε." @@ -34792,11 +34288,6 @@ msgstr "Αυτό είναι το τελευταίο σας κλειδί πρόσ msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Αυτό είναι το τελευταίο σας κλειδί πρόσβασης. Μόλις διαγραφεί, δεν θα μπορείτε να χρησιμοποιήσετε κλειδί πρόσβασης ως δεύτερο παράγοντα." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Αυτός δεν είναι αριθμός κινητού, οπότε δεν μπορεί να λάβει τα μηνύματά μας. Δοκιμάστε έναν αριθμό κινητού ή επικοινωνήστε με την υποστήριξη αν πιστεύετε ότι αυτό είναι λάθος." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Αυτό το μήνυμα έχει ήδη διαγραφεί." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Αυτό το μήνυμα έχει ήδη δημοσιευτεί" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Αυτό το μήνυμα δεν υπάρχει πλέον." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Αυτό το ψευδώνυμο θα είναι ορατό μόνο σε αυτήν την κοινότητα" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Αυτός ο αριθμός επαληθεύεται με μήνυμα που στέλνετε εσείς σε εμάς. Επιστρέψτε και ξεκινήστε ξανά την επαλήθευση τηλεφώνου για να λάβετε τον κωδικό και τον αριθμό στον οποίο θα στείλετε το μήνυμα." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Αυτός ο αριθμός χρειάζεται επαλήθευση με μήνυμα που στέλνετε εσείς, αντί για SMS από εμάς." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Αυτός ο συμμετέχων είναι σε σίγαση ήχου msgid "This participant was deafened by moderators" msgstr "Αυτός ο συμμετέχων τέθηκε σε σίγαση ήχου από συντονιστές" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Αυτός ο αριθμός τηλεφώνου δεν μπορεί να χρησιμοποιηθεί. Δοκιμάστε έναν άλλο αριθμό κινητού ή επικοινωνήστε με την υποστήριξη." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Αυτός ο αριθμός τηλεφώνου έχει ήδη χρησιμοποιηθεί. Δοκιμάστε έναν άλλο αριθμό ή επικοινωνήστε με την υποστήριξη." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Αυτός ο χρήστης δεν έχει ρόλους σε αυτή msgid "This user is already banned from the community." msgstr "Αυτός ο χρήστης έχει ήδη αποκλειστεί από την κοινότητα." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Αυτός ο χρήστης δεν είναι πλέον διαθέσιμος." @@ -35065,11 +34536,6 @@ msgstr "Αυτός ο χρήστης προστέθηκε αναγκαστικά msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Αυτή η συνεδρία επαλήθευσης έληξε. Επιστρέψτε στο {productName} και ξεκινήστε ξανά την ολοκλήρωση αγοράς." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Αυτή η συνεδρία επαλήθευσης έληξε. Ξεκινήστε ξανά." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Αυτό θα σας αποσυνδέσει, θα διαγράψει τ msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Έτσι θα εμπιστεύεστε όλους τους εξωτερικούς συνδέσμους και θα παραλείπετε την προειδοποίηση για κάθε τομέα. Οι υπάρχοντες αξιόπιστοι τομείς σας θα αντικατασταθούν. Αυτό είναι λιγότερο ασφαλές." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Αυτό το παράθυρο ενημερώνεται αυτόματα μόλις λάβουμε το μήνυμά σας." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Γραμμή τίτλου" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Πλατφόρμα γραμμής τίτλου" @@ -35470,18 +34931,11 @@ msgstr "Τονική χαρτογράφηση" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Τονική προσαρμογή των εικόνων HDR στο τυπικό εύρος, με μείωση της μέγιστης φωτεινότητας." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Πάρα πολλές προσπάθειες. Περιμένετε λίγο και δοκιμάστε ξανά." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Πάρα πολλές κοινότητες" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Πάρα πολλά αιτήματα. Δοκιμάστε ξανά αργότερα." @@ -36151,8 +35605,10 @@ msgstr "Δεν ήταν δυνατή η προετοιμασία κανενός #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Μη διαθέσιμο" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Χωρίς κατηγορία" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Μη διεκδικημένος λογαριασμός" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Χωρίς σειρά" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Κατάργηση καρφιτσώματος" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Κατάργηση καρφιτσώματος μηνύματος" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Να καταργηθεί το καρφίτσωμα αυτού του μηνύματος;" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Μη αποθηκευμένες αλλαγές" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Μη υποστηριζόμενο αρχείο ήχου." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Μέχρι να το ενεργοποιήσω ξανά" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Μη επαληθευμένο email" @@ -36958,12 +36414,7 @@ msgstr "Ενημερώστε το {productName} για να δείτε αυτό msgid "Update app" msgstr "Ενημέρωση εφαρμογής" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Ενημέρωση email" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Ενημέρωση της κατάστασής μου" @@ -37306,18 +36757,13 @@ msgstr "Χρησιμοποιήστε το {url} όπου πρέπει να ει msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Χρησιμοποιήστε ένα ειδικό αναδυόμενο παράθυρο για να ορίσετε μια ημερομηνία ορίου ιστορικού μηνυμάτων για μέλη που δεν έχουν το δικαίωμα {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Χρησιμοποιήστε μια διαφορετική διεύθυνση email και επαληθεύστε την με έναν κωδικό." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Χρήση πραγματικού" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Χρήση πραγματικού τύπου premium" @@ -37335,16 +36781,6 @@ msgstr "Χρήση εναλλακτικής μεθόδου" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Χρησιμοποιήστε μια εφαρμογή ελέγχου ταυτότητας για να δημιουργήσετε κωδικούς για έλεγχο ταυτότητας δύο παραγόντων" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Χρησιμοποιήστε ένα email στο οποίο έχετε πρόσβαση. Θα στείλουμε έναν κωδικό εκεί." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Χρησιμοποιήστε ένα email διαφορετικό από το τρέχον." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Χρήση σκούρου θέματος σε όλη την εφαρμο msgid "Use default" msgstr "Χρήση προεπιλογής" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Χρησιμοποιήστε διαφορετικό email" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Χρήση email" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Θέλετε να χρησιμοποιείτε κλειδιά πρόσβ msgid "Use passkeys to sign in without a password" msgstr "Χρησιμοποιήστε κλειδιά πρόσβασης για να συνδέεστε χωρίς κωδικό πρόσβασης" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Χρήση τηλεφώνου" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Χρήση κειμένου επανεπαλήθευσης" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Ο χρήστης μετακινείται σε άλλο κανάλι" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Ο χρήστης δεν βρέθηκε" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Επαλήθευση" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Εμπόδια επαλήθευσης και συμμετοχής" @@ -37970,15 +37387,8 @@ msgstr "Κωδικός επαλήθευσης" msgid "Verification code sent" msgstr "Ο κωδικός επαλήθευσης στάλθηκε" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Ο κωδικός επαλήθευσης στάλθηκε. Ελέγξτε τα εισερχόμενα του νέου σας email." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Στάλθηκε email επαλήθευσης. Ελέγξτε τα εισερχόμενά σας." @@ -38038,23 +37448,6 @@ msgstr "Φόρμα επαλήθευσης ταυτότητας" msgid "Verify it's you" msgstr "Επιβεβαιώστε την ταυτότητά σας" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Επαλήθευση τηλεφώνου" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Επαλήθευση αριθμού τηλεφώνου" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Φόρμα επαλήθευσης αριθμού τηλεφώνου" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Επαληθεύστε το email σας πριν προσθέσετε μια εφαρμογή ελέγχου ταυτότητας." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Επαληθεύστε το email σας πριν αλλάξετε το ψευδώνυμο κοινότητας, το avatar, το banner, το βιογραφικό, τις αντωνυμίες ή το χρώμα έμφασης." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Επαληθεύστε το email σας πριν αλλάξετε το όνομα χρήστη, το όνομα εμφάνισης, το avatar, το banner, το βιογραφικό, τις αντωνυμίες, τη ζώνη ώρας ή το απόρρητο του σήματος {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Επαληθεύστε το email σας πριν επεξεργαστείτε αυτό το προφίλ κοινότητας. Μπορείτε ακόμα να το δείτε εδώ." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Επαληθεύστε το email σας πριν επεξεργαστείτε το προφίλ σας. Μπορείτε ακόμα να το δείτε εδώ." @@ -38113,11 +37506,6 @@ msgstr "Επαληθεύστε το email σας πριν στείλετε αι msgid "Verify your email first" msgstr "Επαληθεύστε πρώτα το email σας" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Επαληθεύστε το email ή το τηλέφωνό σας για να συνεχίσετε να χρησιμοποιείτε το {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Επαλήθευσε το email σου για να αγοράσεις δ msgid "Verify your email to change your username" msgstr "Επαληθεύστε το email σας για να αλλάξετε το όνομα χρήστη σας" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Επαληθεύστε το email σας για να συνεχίσετε να χρησιμοποιείτε το {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Επαληθεύστε το email σας για να επεξεργαστείτε αυτό το προφίλ κοινότητας" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Επαληθεύστε το email σας για να επεξεργαστείτε το προφίλ σας" @@ -38181,13 +37564,6 @@ msgstr "Βερμόντ" msgid "Version" msgstr "Έκδοση" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Πολύ υψηλό" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Αύξηση έντασης" msgid "Wait a moment before deleting more messages." msgstr "Περίμενε λίγο πριν διαγράψεις κι άλλα μηνύματα." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Περιμένετε λίγο. Αυτό το παράθυρο θα κλείσει αυτόματα μόλις λάβουμε το μήνυμά σας." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Χρονικό διάστημα μεταξύ των μηνυμάτων. Τα μέλη με το δικαίωμα \"{bypassSlowmodePermissionLabel}\" μπορούν να το παρακάμψουν." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Περιμένετε εδώ" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Αναμονή για κλειδί πρόσβασης…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Αναμονή λήξης της αργής λειτουργίας στο κανάλι {forwardChannelDisplayName}." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Αναμονή λήξης της αργής λειτουργίας σε ένα ή περισσότερα επιλεγμένα κανάλια." @@ -39115,16 +38482,6 @@ msgstr "Δεν μπορέσαμε να διαβάσουμε αυτό το θέμ msgid "We couldn't remove that account. Try again." msgstr "Δεν ήταν δυνατή η κατάργηση αυτού του λογαριασμού. Δοκιμάστε ξανά." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Δεν μπορέσαμε να επαληθεύσουμε αυτόν τον αριθμό αυτόματα. Επικοινωνήστε με την υποστήριξη και ένα άτομο θα ελέγξει τον λογαριασμό σας." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Δεν στέλνουμε μηνύματα επαλήθευσης σε αυτήν τη χώρα. Δοκιμάστε έναν αριθμό κινητού από άλλη χώρα ή επικοινωνήστε με την υποστήριξη." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Βρήκαμε μια υπάρχουσα συνδρομή {premiumProduc msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Μειώσαμε την τιμή του {premiumProductName} στη Βραζιλία. Τώρα είναι {monthlyPrice} το μήνα ή {yearlyPrice} το χρόνο." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Χρειάζεται ένα βήμα επαλήθευσης πριν συνεχίσετε. Αυτό βοηθά στην προστασία των λογαριασμών και στην αποφυγή ανεπιθύμητων μηνυμάτων στο {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Χρειάζονται δύο βήματα επαλήθευσης πριν συνεχίσετε. Θα εμφανίζεται ένα βήμα κάθε φορά." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Συνιστούμε να αποθηκεύσετε αυτούς τους κωδικούς τώρα, για να μην αποκλειστείτε από τον λογαριασμό σας." @@ -39167,11 +38514,6 @@ msgstr "Στείλαμε έναν κωδικό στο {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Θα συμπληρώσουμε αυτόματα το {prefillEmail} μόλις ανοίξει η σύνδεση στο πρόγραμμα περιήγησης." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Θα στείλουμε έναν κωδικό SMS όταν είναι διαθέσιμος." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Θα θέλαμε να σου δώσουμε περισσότερο από {PREMIUM_PRODUCT_NAME} εφ’ όρου ζωής, αλλά αυτό θα έσπαγε το χωροχρονικό συνεχές. Να στείλεις το δώρο σε έναν φίλο αντ’ αυτού;" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Θα το επεξεργαστούμε το συντομότερο δυνατό. Θα λάβετε ένα email όταν το αρχείο σας είναι έτοιμο." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Θα επαναφέρουμε το προηγούμενο email σας, θα αποσυνδέσουμε παλιές συνεδρίες, θα αφαιρέσουμε αριθμούς τηλεφώνου, θα απενεργοποιήσουμε τον έλεγχο ταυτότητας πολλαπλών παραγόντων (MFA) και θα ασφαλίσουμε τον λογαριασμό σας με έναν νέο κωδικό πρόσβασης." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Θα επαναφέρουμε την προηγούμενη διεύθυνση email σας, θα αποσυνδεθούμε από παλιές συνεδρίες, θα απενεργοποιήσουμε τον έλεγχο ταυτότητας πολλών παραγόντων (MFA) και θα ασφαλίσουμε τον λογαριασμό σας με έναν νέο κωδικό πρόσβασης." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Θα στείλουμε έναν κωδικό επαλήθευσης σ msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Θα στείλουμε έναν κωδικό επαλήθευσης στο email σας πριν μπορέσετε να δείτε τους εφεδρικούς κωδικούς σας." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Θα στείλουμε έναν κωδικό SMS όταν είναι διαθέσιμος. Ο αριθμός σας δεν συνδέεται με τον λογαριασμό σας. Διατηρούμε μόνο έναν κρυπτογραφημένο δείκτη, χωρίς αναγνωριστικό χρήστη, για περιορισμένο χρονικό διάστημα." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Θα επαληθεύσουμε το τρέχον email σας και μετά το νέο σας email με κωδικούς μιας χρήσης." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Το webhook δημιουργήθηκε" @@ -39331,7 +38669,7 @@ msgstr "Το webhook ενημερώθηκε" msgid "Webhook URL" msgstr "URL του webhook" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhook" @@ -39486,8 +38824,8 @@ msgstr "Αυτό που μοιράζεστε δεν ενημερώνεται" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Τι συμβαίνει;" @@ -39967,21 +39305,11 @@ msgstr "Μπορείτε να αφαιρέσετε το δικαίωμα <0>{rea msgid "You can sign back in at any time." msgstr "Μπορείτε να συνδεθείτε ξανά οποιαδήποτε στιγμή." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Μπορείτε πάντα να ζητήσετε από τους διαχειριστές αυτής της παρουσίας έλεγχο από άνθρωπο." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Μπορείτε ωστόσο να δημιουργήσετε λογαριασμό ή να συνδεθείτε. Αν οι προσκλήσεις ενεργοποιηθούν ξανά αργότερα, μπορείτε να χρησιμοποιήσετε τον ίδιο σύνδεσμο για να συμμετάσχετε." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Μπορείτε πάντα να στείλετε email στο {supportEmail} για έλεγχο από άνθρωπο." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Μπορείτε να χρησιμοποιήσετε συνδέσμους, emoji και μορφοποίηση κειμένου (markdown)." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Δεν μπορείτε να προσθέσετε εκφράσεις εκεί" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Δεν μπορείτε να προσθέσετε νέες αντιδράσεις όσο βρίσκεστε σε προσωρινό περιορισμό." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Δεν μπορείτε να κάνετε φίλο τον εαυτό σας" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Δεν μπορείτε να αλλάξετε το ψευδώνυμό σας εδώ" @@ -40094,7 +39422,7 @@ msgstr "Δεν μπορείτε να στείλετε αίτημα φιλίας msgid "You can't send messages in this channel." msgstr "Δεν μπορείτε να στείλετε μηνύματα σε αυτό το κανάλι." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Δεν μπορείτε να στείλετε μηνύματα σε αυτήν την κοινότητα." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Δεν έχετε δικαίωμα να το κάνετε αυτό σε αυτό το μέλος." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Δεν έχετε δικαίωμα να μπείτε σε αυτό το φωνητικό κανάλι" @@ -40243,7 +39571,7 @@ msgstr "Δεν έχετε δικαίωμα να μετονομάσετε αυτ msgid "You have been banned from this community." msgstr "Έχετε αποκλειστεί από αυτήν την κοινότητα." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Έχετε μπλοκάρει τον/την {username}. Ξεμπλοκάρετέ τον/την για να στείλετε μηνύματα." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Έχετε μη αποθηκευμένες αλλαγές." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Έχετε μη αποθηκευμένες αλλαγές. Αποθηκεύστε ή επαναφέρετε πριν φύγετε." @@ -40270,7 +39598,7 @@ msgstr "Έχετε μη αποθηκευμένες αλλαγές. Αποθηκ msgid "You haven't authorized any applications to access your account." msgstr "Δεν έχετε εξουσιοδοτήσει καμία εφαρμογή να έχει πρόσβαση στον λογαριασμό σας." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Δεν είστε μέλος αυτής της κοινότητας για αρκετό καιρό ώστε να στέλνετε μηνύματα." @@ -40326,11 +39654,6 @@ msgstr "Πρέπει να συμφωνήσετε με τους όρους παρ msgid "You must verify your email before sending a report." msgstr "Πρέπει να επαληθεύσετε το email σας πριν στείλετε μια αναφορά." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Για να αλλάξετε το email σας από εδώ, πρέπει να έχετε πρόσβαση στο τρέχον email σας. Χρησιμοποιήστε την επαλήθευση μέσω τηλεφώνου, αν είναι διαθέσιμη, ή επικοινωνήστε με την υποστήριξη." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Χρειάζεστε το δικαίωμα «{manageRolesPermissionLabel msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Χρειάζεστε το δικαίωμα «{manageRolesPermissionLabel}» για να επεξεργαστείτε αυτά τα δικαιώματα." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Χρειάζεστε το δικαίωμα «{manageWebhooksPermissionLabel}» για να δείτε και να επεξεργαστείτε τα webhook αυτού του καναλιού." @@ -40384,18 +39707,14 @@ msgstr "Πρέπει να διεκδικήσετε τον λογαριασμό msgid "You need to claim your account before you can start a direct message." msgstr "Πρέπει να διεκδικήσετε τον λογαριασμό σας πριν ξεκινήσετε μια απευθείας συνομιλία." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Πρέπει να διεκδικήσετε τον λογαριασμό σας για να στείλετε απευθείας μηνύματα." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Πρέπει να διεκδικήσετε τον λογαριασμό σας για να στείλετε μηνύματα σε αυτήν την κοινότητα." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Πρέπει να επαληθεύσετε έναν αριθμό τηλεφώνου για να στείλετε μηνύματα σε αυτήν την κοινότητα." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Πρέπει να επαληθεύσετε τη διεύθυνση email msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Πρέπει να επαληθεύσετε το email σας πριν μπορέσετε να αγοράσετε το {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Πρέπει να επαληθεύσετε το email σας για να στείλετε μηνύματα σε αυτήν την κοινότητα." @@ -40424,11 +39743,6 @@ msgstr "Πρέπει να επαληθεύσετε το email σας για να msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Εσείς ή κάποιος από όσους προσθέτετε έχει ήδη φτάσει τον μέγιστο αριθμό ανοιχτών ομαδικών συνομιλιών. Αποχωρήστε από μία και δοκιμάστε ξανά." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Παραμένετε σε {ownedNames}. Οι ιδιοκτήτες δεν μπορούν να αποχωρήσουν από τη δική τους κοινότητα." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Είστε σε σίγαση ήχου από συντονιστές" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Θα μεταφερθείτε στο {redirectHostname} μετά την εξουσιοδότηση." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Θα αποχωρήσετε από {count, plural, one {# κοινότητα} other {# κοινότητες}} όπου ισχύει αυτός ο έλεγχος, και ο λογαριασμός σας θα λειτουργεί ξανά κανονικά." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Θα αποχωρήσετε από {guildNames}. Τίποτα από όσα δημοσιεύσατε δεν διαγράφεται και μπορείτε να γίνετε ξανά μέλος αργότερα." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Θα χρειαστεί να ολοκληρώσετε και το βήμα του email." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Προχωράτε πολύ γρήγορα" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Προχωράτε πολύ γρήγορα. Περιμένετε λίγο και δοκιμάστε ξανά." @@ -40636,7 +39935,7 @@ msgstr "Στέλνετε μηνύματα πολύ γρήγορα" msgid "You're streaming!" msgstr "Κάνετε μετάδοση!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Είστε σε προσωρινό περιορισμό. Η ανταλλαγή μηνυμάτων, οι αντιδράσεις και η φωνή έχουν τεθεί σε παύση μέχρι να λήξει ο περιορισμός." @@ -40764,25 +40063,25 @@ msgstr "Η πληρωμή ανανέωσης μέσω {storeName} απέτυχε msgid "Your account" msgstr "Ο λογαριασμός σας" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Ο λογαριασμός σας επανέρχεται αμέσως σε κανονική λειτουργία και δεν θα χρειαστείτε πλέον αριθμό τηλεφώνου. Αυτή δεν είναι μόνιμη εξαίρεση και ενδέχεται να σας ζητήσουμε ξανά αυτόν τον έλεγχο αργότερα." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Ο λογαριασμός σας έχει συνδεθεί επιτυχώς. Μπορείτε τώρα να κλείσετε αυτήν την καρτέλα και να επιστρέψετε στην εφαρμογή." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Ο λογαριασμός σας επανήλθε στο φυσιολογικό." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Ο λογαριασμός σας έχει περιορισμούς" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Ο λογαριασμός σας έχει περιορισμούς. Ελέγξτε το email σας για οδηγίες άρσης." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Ο λογαριασμός σας δεν έχει διεκδικηθεί ακόμα. Χωρίς email και κωδικό πρόσβασης, δεν θα μπορείτε να συνδεθείτε από άλλες συσκευές και μπορεί να χάσετε την πρόσβαση στον λογαριασμό σας. Διεκδικήστε τον λογαριασμό σας τώρα για να τον ασφαλίσετε." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Ο λογαριασμός σας είναι πολύ καινούριος για να στέλνετε μηνύματα σε αυτήν την κοινότητα." @@ -40800,11 +40099,6 @@ msgstr "Ο λογαριασμός σας απαιτεί έλεγχο ταυτό msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Ο λογαριασμός σας δεν θα προστατεύεται πλέον με έλεγχο ταυτότητας δύο παραγόντων όταν συνδέεστε με τον κωδικό πρόσβασής σας. Θα χάσετε επίσης τα αυξημένα δικαιώματα σε κοινότητες που απαιτούν έλεγχο ταυτότητας δύο παραγόντων." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Ο λογαριασμός σας λειτουργεί κανονικά αμέσως και τίποτα δεν αφαιρείται. Μπορούμε να ζητήσουμε ξανά αυτόν τον έλεγχο αργότερα." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Ελέγχουμε την κάρτα σας για τοπικές τιμ msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Η κάρτα σας πληροί τις προϋποθέσεις. Σας ανακατευθύνουμε τώρα στη σελίδα πληρωμής." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Ο πάροχός σας αναφέρει ότι αυτός ο αριθμός δεν είναι σε χρήση. Ελέγξτε τον και δοκιμάστε ξανά, ή επικοινωνήστε με την υποστήριξη αν είναι σωστός." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Οι αλλαγές σας φτάνουν σε κάθε κοινότητα που ακολουθεί αυτό το κανάλι, κάτι που μπορεί να πάρει ένα λεπτό. Κάθε δημοσιευμένο μήνυμα επιτρέπει 3 γρήγορες επεξεργασίες, μετά 1 κάθε 20 λεπτά." @@ -40869,21 +40158,6 @@ msgstr "Η συσκευή σας θα σας ζητήσει να αποθηκε msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Η συσκευή σας θα σας ζητήσει να αποθηκεύσετε ένα ενημερωμένο κλειδί πρόσβασης για το {name}. Χρησιμοποιήστε το ίδιο τηλέφωνο ή κλειδί ασφαλείας που μόλις χρησιμοποιήσατε." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Η διεύθυνση email σας έχει ενημερωθεί." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Το email σας δεν μπόρεσε να λάβει μηνύματα. Προσθέστε ένα email που λειτουργεί, ώστε να μπορούμε να διατηρήσουμε τον λογαριασμό σας προσβάσιμο." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Το email σας δεν μπόρεσε να λάβει μηνύματα. Ενημερώστε το για να συνεχίσετε να χρησιμοποιείτε το {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Η διεύθυνση email σας έχει επαληθευτεί. Μπορείτε τώρα να συνδεθείτε στον λογαριασμό σας." @@ -41000,21 +40274,11 @@ msgstr "Το μήνυμά σας δεν ενημερώθηκε" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Η πιο πρόσφατη αγορά σας δεν είναι πλέον εντός του παραθύρου επιστροφής χρημάτων. Επικοινωνήστε με την υποστήριξη για θέματα χρέωσης." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "το νέο σας email" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Το νέο σου ψευδώνυμο, ή άφησέ το κενό για επαναφορά." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Ο αριθμός σας δεν είναι συνδεδεμένος με τον λογαριασμό σας. Διατηρούμε μόνο ένα κρυπτογραφημένο δείκτη, χωρίς αναγνωριστικό χρήστη, για περιορισμένο χρονικό διάστημα." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Η πληρωμή σας ακυρώθηκε. Μπορείτε τώρα να κλείσετε αυτήν την καρτέλα και να επιστρέψετε στην εφαρμογή." @@ -41054,11 +40318,6 @@ msgstr "Τα δώρα που αγοράσατε" msgid "your region" msgstr "η περιοχή σας" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Η εγγραφή σας χρειάζεται έναν επιπλέον έλεγχο κατά των ανεπιθύμητων μηνυμάτων πριν συνεχίσετε." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/en-GB/messages.po b/fluxer_app/src/features/i18n/locales/en-GB/messages.po index fa966e167..3e4a6344e 100644 --- a/fluxer_app/src/features/i18n/locales/en-GB/messages.po +++ b/fluxer_app/src/features/i18n/locales/en-GB/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reaction} other {# reactions}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# reactor} other {# reactors}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# second} other {# seconds}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} at {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Your invite link expires in # second.} other {Your invite link expires in # seconds.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} selected" @@ -2252,7 +2252,7 @@ msgstr "1 minute" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 hours" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 months (1 year)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "2FA backup" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2FA requirement" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 members (typing)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 months" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 hours" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 months" @@ -2575,11 +2575,6 @@ msgstr "a minute" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "A new desktop version is available. Download the installer, then run it to update {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "A new verification code has been sent." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Account data" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Account exists to spam, scam, or abuse the platform." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Account limited" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Account state" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Account too new" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Account verification required" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Add a bot to a community with requested permissions" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Add a comment (optional)" @@ -3054,8 +3052,10 @@ msgstr "Add a topic to this channel" msgid "Add a word…" msgstr "Add a word…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Add a working email" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Add an account to continue." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Add an email and password to your account first." @@ -3424,11 +3424,6 @@ msgstr "Added: {createdDate} • last used: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Additional comments (optional)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Additional verification required" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "All languages" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Already set to cancel" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Also report this message to the {productName} Safety Team" @@ -4713,11 +4708,6 @@ msgstr "Ask before starting calls" msgid "Ask for a passkey after your password when you sign in" msgstr "Ask for a passkey after your password when you sign in" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Automatically remove tracking parameters (like utm_source, fbclid, gclid msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Automatically remove tracking parameters from URLs in messages you send" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Automatically screen messages for explicit content in channels not marked for mature content." @@ -5359,8 +5349,6 @@ msgstr "Away right now" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Back" @@ -6506,11 +6494,6 @@ msgstr "Cameras and virtual capture devices are selected here in {productName}, msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Cameras are off above {voiceChannelCameraUserLimit} participants" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Can't access that email?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Can't upload files here" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Can't upload files here" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Change email" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Change emoji" @@ -7201,7 +7184,7 @@ msgstr "Changed the user limit from {oldCount} to {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Changed the vanity URL from {oldCode} to {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Changed the verification level from {oldLevel} to {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Channel or category" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Channel permission overrides" @@ -7509,8 +7492,6 @@ msgstr "Check your connection and try again." msgid "Check your connection, then try again." msgstr "Check your connection, then try again." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Choose a display in your system picker" msgid "Choose a GIF" msgstr "Choose a GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Choose a method" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Choose a new password." @@ -7680,8 +7656,8 @@ msgstr "Choose an action." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Choose an emoji" @@ -7749,11 +7725,6 @@ msgstr "Choose how your instance works" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Choose one of the methods below to prove domain ownership. You only need to complete one." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Choose one verification method. Either method can clear this check." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Choose what {clientLabel} can do in your community. Uncheck any permissi msgid "Choose what friends see in their active now panel" msgstr "Choose what friends see in their active now panel" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Choose what members must have before they can post or DM community members." @@ -8030,8 +8001,8 @@ msgstr "Cleans up your mic for clear speech." msgid "Clear" msgstr "Clear" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Clear after" @@ -8053,7 +8024,7 @@ msgstr "Clear all attachment mocks" msgid "Clear all token overrides" msgstr "Clear all token overrides" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Clear attachment mocks" @@ -8066,14 +8037,14 @@ msgstr "Clear command" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Clear custom status" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Clear every reaction from this message?" @@ -8124,7 +8095,7 @@ msgstr "Clear search input" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Coal theme" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Commands" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Comments are unavailable while slowmode is on." @@ -8670,11 +8639,11 @@ msgstr "Communities" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Communities and channels where you can't manage webhooks are hidden." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." @@ -8827,7 +8796,7 @@ msgstr "Community name" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Community nickname" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Community profile" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Community profile updated" @@ -8907,7 +8876,7 @@ msgstr "Community unread badge level" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Community updated" @@ -8952,11 +8921,6 @@ msgstr "Comparison" msgid "Complete mature content check" msgstr "Complete mature content check" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Complete one of the verification paths below to continue using {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Complete payment" msgid "Complete the mature content check to unlock mature media." msgstr "Complete the mature content check to unlock mature media." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Complete the required email and phone verification steps below to continue using {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Complete the required verification to continue using {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Configure your profile badge" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Connections reordered" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Consent required" @@ -9349,16 +9304,6 @@ msgstr "Construct an authorisation URL with scopes and permissions." msgid "Contact" msgstr "Contact" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Contact support" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Contact the administrators of this instance for help." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Content creator" msgid "Content filter" msgstr "Content filter" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Content filtering" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Content hint" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Content safety gates" @@ -9416,12 +9361,10 @@ msgstr "Context menus can be opened with left-click (on buttons) or right-click #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Control unread indicator behaviour for muted channels in channel lists." msgid "Control which chat updates are announced by assistive technology." msgstr "Control which chat updates are announced by assistive technology." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Conversation not found" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Couldn't add tag" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Couldn't add this friend to the group. Please try again." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Couldn't add to group" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Couldn't create a theme link" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Couldn't create invite link" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Couldn't end your grace period" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Couldn't generate an invite link. Please try again." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Couldn't process image" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Couldn't publish this message" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Couldn't rejoin the Visionary community" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Couldn't remove entrance sound" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Couldn't save channel settings" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Couldn't save entrance sound" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Couldn't withdraw application" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Countdown timer" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Country" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Create the administrator account" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Create webhook" @@ -10948,7 +10884,7 @@ msgstr "Custom emoji {emojiName} from a community" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Custom entrance sounds are not enabled on this instance." @@ -11108,7 +11044,7 @@ msgstr "Custom voice processing" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Custom warning text" @@ -11530,11 +11466,6 @@ msgstr "Default search engine" msgid "Default shortcuts" msgstr "Default shortcuts" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Default tab" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Delete this message" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Delete this message? Can't be undone." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Developer mode" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Developer option" @@ -12299,7 +12230,7 @@ msgstr "Direct input" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Display mode" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Display name" @@ -12858,7 +12789,7 @@ msgstr "Do you want to join {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Edit profile local time" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Edit published message?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Edit your messages above or below" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Edit your profile appearance and see a live preview" @@ -13590,10 +13521,8 @@ msgstr "Eligible for a refund until {windowEndsOn}. This will also cancel your s msgid "Email" msgstr "Email" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Email address required." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Email changed" @@ -13616,49 +13547,17 @@ msgstr "Email changed" msgid "Email delivery" msgstr "Email delivery" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Email or phone" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Email or phone re-verification required" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Email re-verification required" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Email unavailable" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Email update is unavailable right now. Try again later or contact support." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Email update required" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Email verification nagbar" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Email verification required" @@ -13675,6 +13574,10 @@ msgstr "Email verified override" msgid "Email verified successfully" msgstr "Email verified successfully" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Embeds" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Embeds suppressed" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Embeds unsuppressed" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Enable /tts speech playback" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Enable 2FA on your account to change this setting" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Enter a valid {theOtherPlatform} template URL or code." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Enter a valid email address." @@ -14298,33 +14199,11 @@ msgstr "Enter a valid email address." msgid "Enter a valid message link." msgstr "Enter a valid message link." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Enter a valid mobile phone number." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Enter a valid phone number" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Enter a valid username ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Enter an email address you can access. We will send a code there." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Enter code" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Enter fullscreen" msgid "Enter gift code…" msgstr "Enter gift code…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Enter new email" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Enter one of your backup codes if you can't use your passkey." msgid "Enter one of your backup codes." msgstr "Enter one of your backup codes." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Enter phone" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Enter the {digitCount}-digit code from your authenticator app or one of msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Enter the {digitCount}-digit code from your authenticator app." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Enter the {digitCount}-digit code sent to {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Enter the code" @@ -14408,11 +14267,6 @@ msgstr "Enter the code before continuing." msgid "Enter the code from your authenticator app." msgstr "Enter the code from your authenticator app." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Enter the code sent to {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Enter the code sent to your current email." @@ -14426,6 +14280,7 @@ msgstr "Enter the code sent to your email address." msgid "Enter the code shown in the app to continue." msgstr "Enter the code shown in the app to continue." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Enter the code we emailed to your new address." @@ -14434,11 +14289,6 @@ msgstr "Enter the code we emailed to your new address." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Enter the email code" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Enter the invite link to join a community." @@ -14452,11 +14302,6 @@ msgstr "Enter the new email you want to use. We'll send a code there next." msgid "Enter the PIN for your security key to continue." msgstr "Enter the PIN for your security key to continue." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Enter the SMS code" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Enter this code in your browser to complete sign-in." @@ -14492,11 +14337,6 @@ msgstr "Enter your name" msgid "Enter your password." msgstr "Enter your password." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Enter your phone number" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Entrance sound" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Entrance sound files must be {limit} or less." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Entrance sound library full" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Entrance sound removed" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Entrance sound saved" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Entrance sounds" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Entrance sounds unavailable" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Expires:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Explicit content filter setting" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Failed to copy to clipboard" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Failed to create webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Failed to load vanity URL. Try again." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Failed to load webhooks" @@ -15190,11 +15030,6 @@ msgstr "Failed to remove vanity URL. Try again." msgid "Failed to resend code. Try again." msgstr "Failed to resend code. Try again." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Failed to resend verification code. Try again later." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Failed to send message. Hold for options." msgid "Failed to send report. Try again." msgstr "Failed to send report. Try again." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Failed to send verification email. Try again later." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Failed to start" @@ -15551,15 +15381,15 @@ msgstr "Filter by user" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filter everyone" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filter members without roles" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Follow this channel" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Follow to get these announcements in a channel you choose." @@ -15773,7 +15603,7 @@ msgstr "Followed channel {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Followed channels" @@ -15857,11 +15687,6 @@ msgstr "For British eyes only..." msgid "For me" msgstr "For me" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "For this check, you send us a text message instead of receiving one from us." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "For your security, please confirm it's you to continue." @@ -15905,7 +15730,7 @@ msgstr "Force loading skeleton" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Force mature media" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Force move to AFK channel" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Force no {permissionName} permission" @@ -15948,7 +15773,7 @@ msgstr "Force show vanity URL disclaimer" msgid "Force show voice connection" msgstr "Force show voice connection" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Force slowmode active" @@ -16020,7 +15845,7 @@ msgstr "Forward media" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Forward message" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Geo block overlay" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Geo restricted" @@ -16490,12 +16315,6 @@ msgstr "Get an animated avatar and banner, a subscriber badge, the four-digit ta msgid "Get monthly" msgstr "Get monthly" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Get new code" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Gift codes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Gift duration" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Gift inventory" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Gift inventory flow" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Gift not found" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Gift redeemed" @@ -17030,7 +16849,7 @@ msgstr "Group direct message" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hey {displayName}, claim your account to prevent losing access." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hey {displayName}, please verify your email address." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Hide your own screen share?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "High" @@ -17755,11 +17579,6 @@ msgstr "I am a tooltip" msgid "I changed my mind" msgstr "I changed my mind" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "I need another way" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "If this report is about a specific message, report that message instead. msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "If you can't verify by SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "If you cannot use any verification method, contact support for help." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Interface size" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Invalid audio file" @@ -18674,8 +18483,10 @@ msgstr "Invalid JSON. Paste the full response from the URL above." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Join voice call" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Join voice channel" @@ -19613,16 +19424,6 @@ msgstr "Find out more about Visionary" msgid "Leave" msgstr "Leave" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Leave and set aside" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Let screen readers announce new messages as they arrive in the open channel. Notification sounds are unaffected." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Let the community self-moderate" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Library" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Library full ({max} sounds max). Delete one before adding another." @@ -19812,7 +19613,7 @@ msgstr "Library: {count} of {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Lifetime" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Loading..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Loading…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Low" @@ -20416,7 +20217,7 @@ msgstr "Manage community features" msgid "Manage emoji & stickers" msgstr "Manage emoji & stickers" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Manage incoming webhooks that can post messages into this channel." @@ -20514,7 +20315,7 @@ msgstr "Mark all unread inbox channels as read immediately, without asking to co msgid "Mark as read" msgstr "Mark as read" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Mark as redeemed" @@ -20676,14 +20477,14 @@ msgstr "Mature community" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Mature content" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Mature content & content warnings" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maximum lifetime (days)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Maximum protection for family-friendly spaces" @@ -20924,7 +20725,7 @@ msgstr "Media stop" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Member unbanned" msgid "Member updated" msgstr "Member updated" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Member verification" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Member verification level" @@ -21048,7 +20849,7 @@ msgstr "Members are removed when offline unless given a role." msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." @@ -21153,7 +20954,7 @@ msgstr "Mentions of you show up here for {retentionDays} days." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Mentions only" @@ -21292,7 +21093,7 @@ msgstr "Message display settings are only available on desktop." msgid "Message editing" msgstr "Message editing" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Message forwarded" @@ -21341,7 +21142,7 @@ msgstr "Message input buttons" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Message is too long" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Message previews in the DM list" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Message published" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Messages published in #{sourceName} will now appear in #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Messages published in these announcement channels are copied here." @@ -21504,7 +21305,7 @@ msgstr "Messages published in these announcement channels are copied into your c msgid "Messages you can bookmark" msgstr "Messages you can bookmark" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Messaging is temporarily paused in this community." @@ -21733,30 +21534,30 @@ msgstr "Mock expires in 1 day" msgid "Mock expires in 7 days" msgstr "Mock expires in 7 days" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Mock geo block overlay" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Mock gift inventory" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Mock incoming call" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Mock mature content channel gate reason" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Mock mature content media gate reason" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Mock UK geo" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Mock user avatars in various sizes and all status permutations." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Mock variant" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Mocked product flows" @@ -22698,14 +22494,16 @@ msgstr "New community muted" msgid "New direct message" msgstr "New direct message" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "New email" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "New email form" @@ -22816,9 +22614,7 @@ msgstr "Newest first" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Next" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "No" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "No {attachFilesPermission} permission" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "No {sendMessagesPermission} permission" @@ -23005,7 +22801,7 @@ msgstr "No changes to save" msgid "No channels available" msgstr "No channels available" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "No channels found" @@ -23233,11 +23029,6 @@ msgstr "No permissions found" msgid "No personal words yet." msgstr "No personal words yet." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "No phone number" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "No results" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "No results found" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "No users found" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "No verification is required." @@ -23452,7 +23243,7 @@ msgstr "No verification is required." msgid "No verification methods available" msgstr "No verification methods available" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "No webhooks" @@ -23504,7 +23295,7 @@ msgstr "Non-convert" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "None" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "None (normal behaviour)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norwegian" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Not a member long enough" @@ -23798,9 +23589,9 @@ msgstr "Objects" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Off" @@ -23848,7 +23639,7 @@ msgstr "Oldest first" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "On" @@ -23884,11 +23675,6 @@ msgstr "One or more attachments couldn't be read or uploaded. The file may have msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "One quick check" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Only speakers" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Only the community owner can change this setting" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Open emoji in browser" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Open emoji picker" @@ -24382,12 +24168,8 @@ msgstr "Open menu icon" msgid "Open message history threshold" msgstr "Open message history threshold" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Open overlay" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Open popup" @@ -24485,11 +24267,6 @@ msgstr "Open the new app. You're already signed in." msgid "Open the shortcuts list for quick actions." msgstr "Open the shortcuts list for quick actions." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Open the verification email and use the link inside. This window updates after the link opens." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Open voice & video settings" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Open your browser, sign in, then enter the code below to link your account." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Open your messages" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Open your phone's messaging app and create a new text message." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Open your phone's messaging app and start a new text message." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Other reaction…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Phone" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Phone number" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Phone number is required" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Phone number verified" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Phone re-verification required" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Phone step" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Phone verification is not available for this account. Use another method or contact support." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Phone verification required" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Pick the 4-digit number after your username" msgid "Pick the appearance this administrator account should start with." msgstr "Pick the appearance this administrator account should start with." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Pick the method you can complete now." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Picture-in-picture" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Pin" @@ -25471,7 +25176,7 @@ msgstr "Pin group DM" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Pin or unpin any message." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Pin this message to the channel for everyone to see." @@ -26227,18 +25932,18 @@ msgstr "Profile colour" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Profile customisation" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Profile customisation for {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Profile customisation form" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Profile type" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profile updated" @@ -26340,7 +26045,7 @@ msgstr "Prompt for new audio devices" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Raid coordination" msgid "Rate" msgstr "Rate" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Rate limited" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Raw embed JSON" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Remove {userName} from your friends?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Remove all" @@ -27290,7 +26990,7 @@ msgstr "Remove all {emojiNameWithColons} reactions from this message?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Remove all reactions" @@ -27899,20 +27599,10 @@ msgstr "Reported user tag (optional)" msgid "Reposts: <0>{countLabel}" msgstr "Reposts: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Request a new code first." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Request a new reset link" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Request a verification code first." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Requests" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Require 2FA for moderation actions" @@ -27958,7 +27648,7 @@ msgstr "Require OAuth2 code grant" msgid "Require passkey" msgstr "Require passkey" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." @@ -27972,46 +27662,6 @@ msgstr "Required" msgid "Required 2FA for moderation actions" msgstr "Required 2FA for moderation actions" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Required action default tab" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Required action flow" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Required action phone step" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Required action resend loading" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Required action resend outcome" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Required action reverification text" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Required action variant" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Required actions overlay" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Requires a redirect URI and an authorisation code when inviting this bot." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Requires a verified email address and an account that's at least 5 minutes old." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Requires a verified email address." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Requires a verified phone number." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Requires everything in medium, plus being a member of the community for at least 10 minutes." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Resend ({resendSecondsRemaining}s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Resend ({secondsRemaining}s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Resend button loading" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Resend code" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Resend email" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Resend outcome" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Resent" @@ -28518,21 +28152,6 @@ msgstr "Reveal" msgid "Reveal spoiler" msgstr "Reveal spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Reverify your email or verify your phone to continue using {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Reverify your email to continue using {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Reverify your phone number to continue using {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Saturation" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Scrub preview" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Search channels" msgid "Search communities" msgstr "Search communities" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Search countries..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Search countries…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Select your country of residence." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Select…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Send" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Send ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Send another report" msgid "Send button" msgstr "Send button" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Send code" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Send messages" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Send messages disabled" @@ -30151,32 +29759,11 @@ msgstr "Send saved media {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Send the code <0>{0} to <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Send the code to the phone number below." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Send this code" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Send this pin back in time?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Send to" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Send voice message" msgid "Send:" msgstr "Send:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30288,11 +29867,6 @@ msgstr "Serial send" msgid "Serve the token file" msgstr "Serve the token file" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Service error" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30344,7 +29918,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Set custom shortcut for \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Set custom status" @@ -30487,18 +30061,6 @@ msgstr "Set the voice region to {region}" msgid "Set the voice region to automatic" msgstr "Set the voice region to automatic" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Set this check aside" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Set this check aside?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30529,7 +30091,7 @@ msgid "Set your pronouns" msgstr "Set your pronouns" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Set your status" @@ -30797,7 +30359,7 @@ msgid "Shortcuts are paused while recording." msgstr "Shortcuts are paused while recording." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Shorten the message and try again." @@ -30828,7 +30390,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Show a {productName} icon in the system tray or menu bar" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Show a content warning" @@ -31673,7 +31235,7 @@ msgstr "Slowmode · wait {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Slowmode active" @@ -31719,17 +31281,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Slowmode is set to {durationLabel}. Wait before sending another message." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Slowmode remaining" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Slowmode simulation" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Slowmode time remaining" @@ -31808,11 +31370,6 @@ msgstr "Smooth scrolling" msgid "Smoother video" msgstr "Smoother video" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "SMS verification is unavailable right now. Try again later or contact support." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31944,7 +31501,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Something went wrong while preparing this sticker. Try another file or try again in a moment." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Something went wrong while publishing. Try again in a moment." @@ -32010,11 +31567,9 @@ msgstr "Something went wrong. Reload the page or sign in again." msgid "Something went wrong. Try again later." msgstr "Something went wrong. Try again later." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Something went wrong. Try again." @@ -32353,11 +31908,6 @@ msgstr "SSO sign-in timed out. Try again." msgid "Staff controls" msgstr "Staff controls" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Standard messaging rates from your carrier may apply." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32387,8 +31937,6 @@ msgstr "Star animation" msgid "Starred channels" msgstr "Starred channels" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33027,7 +32575,7 @@ msgstr "Subscriber transport:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Subscription" @@ -33052,14 +32600,12 @@ msgstr "Subscription scenarios" msgid "Subtext" msgstr "Subtext" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Success" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Suggested for most communities" @@ -33403,7 +32949,7 @@ msgid "System & welcome" msgstr "System & welcome" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "System announcements from {productName} staff. You can't reply here." @@ -33766,11 +33312,6 @@ msgstr "Text selection" msgid "Text size" msgstr "Text size" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Text us from your phone" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33817,26 +33358,6 @@ msgstr "Thai" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "That code didn't work. Check it and try again." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "That code expired. Request a new code." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "That did not go through. Nothing changed. Try again." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33850,11 +33371,6 @@ msgstr "That doesn't look like a valid colour. Try hex, rgb(), hsl(), or a CSS c msgid "That doesn't look like a valid URL." msgstr "That doesn't look like a valid URL." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "That email is already in use." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34090,11 +33606,6 @@ msgstr "The override denied {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "The page you're looking for doesn't exist or has been moved." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "The phone check is set aside. One email step is left." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34252,7 +33763,7 @@ msgstr "There are no channels available to create an invite for." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." @@ -34274,7 +33785,7 @@ msgstr "There was an error loading the invites. Try again." msgid "There was an error loading the stickers. Try again." msgstr "There was an error loading the stickers. Try again." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "There was an error loading the webhooks for this channel. Try again." @@ -34418,7 +33929,7 @@ msgstr "This channel can publish 10 messages in a row, then one more every 6 min msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "This channel does not support webhooks." @@ -34551,12 +34062,12 @@ msgstr "This connection has not been verified." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "This contains sensitive content." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "This conversation is no longer available." @@ -34659,7 +34170,7 @@ msgid "This group has too many people" msgstr "This group has too many people" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "This group is full. Remove someone before adding more people." @@ -34716,11 +34227,6 @@ msgstr "This is a custom sticker from a community." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "This is an age-restricted channel. Updates can only go to age-restricted channels." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "This is an anti-spam check. Your phone number is not linked to your account." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34736,16 +34242,6 @@ msgstr "This is disabled" msgid "This is how messages appear" msgstr "This is how messages appear" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "This is not available on your account right now. Ask the administrators of this instance to review it." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "This is not available on your account right now. Email {supportEmail} and a person will review it." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "This is not the channel you're looking for." @@ -34793,11 +34289,6 @@ msgstr "This is your last passkey and passkeys are your second factor. Deleting msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34865,7 +34356,7 @@ msgid "This message has already been deleted." msgstr "This message has already been deleted." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "This message has already been published" @@ -34875,20 +34366,10 @@ msgid "This message no longer exists." msgstr "This message no longer exists." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "This nickname will only be visible in this community" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "This number needs text-in verification instead of an SMS from us." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34909,16 +34390,6 @@ msgstr "This participant is deafened" msgid "This participant was deafened by moderators" msgstr "This participant was deafened by moderators" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "This phone number cannot be used. Try another mobile number or contact support." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "This phone number has already been used. Try another number or contact support." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35042,7 +34513,7 @@ msgstr "This user has no roles in this community." msgid "This user is already banned from the community." msgstr "This user is already banned from the community." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "This user is no longer available." @@ -35066,11 +34537,6 @@ msgstr "This user was force-added to this community by a platform administrator. msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "This verification session expired. Return to {productName} and start checkout again." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "This verification session expired. Start again." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35164,11 +34630,6 @@ msgstr "This will sign you out, clear cached files and stored sessions, and rest msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "This window updates automatically after we receive your message." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35308,7 +34769,7 @@ msgid "Title bar" msgstr "Title bar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Title bar platform" @@ -35471,18 +34932,11 @@ msgstr "Tone" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Tone-map HDR images to standard range, reducing peak brightness." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Too many attempts. Wait a bit, then try again." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Too many communities" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Too many requests. Try again later." @@ -36152,8 +35606,10 @@ msgstr "Unable to prepare any emojis for upload. The following errors occurred:" #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36209,7 +35665,7 @@ msgstr "Unavailable" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36246,7 +35702,7 @@ msgstr "Uncategorised" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Unclaimed account" @@ -36722,7 +36178,7 @@ msgid "Unordered" msgstr "Unordered" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Unpin" @@ -36747,7 +36203,7 @@ msgid "Unpin message" msgstr "Unpin message" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Unpin this message?" @@ -36867,7 +36323,7 @@ msgid "Unsaved changes" msgstr "Unsaved changes" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Unsupported audio file." @@ -36916,7 +36372,7 @@ msgid "Until I turn it back on" msgstr "Until I turn it back on" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Unverified email" @@ -36959,12 +36415,7 @@ msgstr "Update {productName} to view this message." msgid "Update app" msgstr "Update app" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Update email" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Update my status" @@ -37307,18 +36758,13 @@ msgstr "Use {url} where the image URL should be inserted." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Use a different email address and verify it with a code." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Use actual" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Use actual premium type" @@ -37336,16 +36782,6 @@ msgstr "Use alternative method" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Use an authenticator app to generate codes for two-factor authentication" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Use an email address you can access. We will send a code there." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Use an email that is different from your current one." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37410,16 +36846,6 @@ msgstr "Use dark theme across the application" msgid "Use default" msgstr "Use default" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Use different email" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Use email" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37524,15 +36950,6 @@ msgstr "Use passkeys for two-factor authentication?" msgid "Use passkeys to sign in without a password" msgstr "Use passkeys to sign in without a password" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Use phone" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Use reverification text" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37731,7 +37148,7 @@ msgstr "User moves channel" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "User not found" @@ -37948,7 +37365,7 @@ msgid "Verification" msgstr "Verification" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Verification & membership barriers" @@ -37971,15 +37388,8 @@ msgstr "Verification code" msgid "Verification code sent" msgstr "Verification code sent" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Verification code sent. Check your new email inbox." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Verification email sent. Check your inbox." @@ -38039,23 +37449,6 @@ msgstr "Verify identity form" msgid "Verify it's you" msgstr "Verify it's you" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Verify phone" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Verify phone number" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Verify phone number form" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38083,22 +37476,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Verify your email before adding an authenticator app." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent colour." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Verify your email before editing this community profile. You can still preview it here." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Verify your email before editing your profile. You can still preview it here." @@ -38114,11 +37507,6 @@ msgstr "Verify your email before sending friend requests." msgid "Verify your email first" msgstr "Verify your email first" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Verify your email or phone to continue using {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38134,18 +37522,13 @@ msgstr "Verify your email to buy gifts." msgid "Verify your email to change your username" msgstr "Verify your email to change your username" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Verify your email to continue using {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Verify your email to edit this community profile" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Verify your email to edit your profile" @@ -38182,13 +37565,6 @@ msgstr "Vermont" msgid "Version" msgstr "Version" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Very high" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38935,20 +38311,11 @@ msgstr "Volume up" msgid "Wait a moment before deleting more messages." msgstr "Wait a moment before deleting more messages." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Wait a moment. This window will close automatically once we receive your message." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Wait here" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38959,12 +38326,12 @@ msgid "Waiting for passkey…" msgstr "Waiting for passkey…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Waiting for slowmode in {forwardChannelDisplayName} to expire." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Waiting for slowmode in one or more selected channels to expire." @@ -39116,16 +38483,6 @@ msgstr "We couldn't read this theme. It may be corrupted or invalid." msgid "We couldn't remove that account. Try again." msgstr "We couldn't remove that account. Try again." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "We couldn't verify this number automatically. Contact support and a person will review your account." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "We don't send verification texts to this country. Try a mobile number from another country, or contact support." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39136,16 +38493,6 @@ msgstr "We found an existing {premiumProductFullName} subscription for this acco msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "We need two verification steps before you continue. We will show one step at a time." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "We recommend saving these codes now so that you don't get locked out of your account." @@ -39168,11 +38515,6 @@ msgstr "We sent a code to {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "We will prefill {prefillEmail} once browser sign-in opens." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "We will send an SMS code when available." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" @@ -39198,8 +38540,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "We'll process this as soon as possible. You'll get an email when your archive is ready." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39213,10 +38555,6 @@ msgstr "We'll send a verification code to your email before you can change your msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "We'll send a verification code to your email before you can view your backup codes." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "We'll send an SMS code when available. Your number isn't linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "We'll verify your current email and then your new email with one-time codes." @@ -39308,7 +38646,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook created" @@ -39332,7 +38670,7 @@ msgstr "Webhook updated" msgid "Webhook URL" msgstr "Webhook URL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooks" @@ -39487,8 +38825,8 @@ msgstr "What you're sharing isn't updating" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "What's happening?" @@ -39968,21 +39306,11 @@ msgstr "You can remove the <0>{readMessageHistoryPermissionLabel} permission msgid "You can sign back in at any time." msgstr "You can sign back in at any time." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "You can still ask the administrators of this instance for a human review at any time." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "You can still email {supportEmail} for a human review at any time." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "You can use links, emoji, and Markdown." @@ -39993,7 +39321,7 @@ msgid "You can't add expressions there" msgstr "You can't add expressions there" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "You can't add new reactions while you're timed out." @@ -40008,7 +39336,7 @@ msgid "You can't befriend yourself" msgstr "You can't befriend yourself" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "You can't change your nickname here" @@ -40095,7 +39423,7 @@ msgstr "You can't send a friend request to yourself." msgid "You can't send messages in this channel." msgstr "You can't send messages in this channel." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "You can't send messages in this community." @@ -40230,7 +39558,7 @@ msgid "You don't have permission to do this to this member." msgstr "You don't have permission to do this to this member." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "You don't have permission to join this voice channel" @@ -40244,7 +39572,7 @@ msgstr "You don't have permission to rename this emoji. The name was reverted to msgid "You have been banned from this community." msgstr "You have been banned from this community." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "You have blocked {username}. Unblock them to send messages." @@ -40263,7 +39591,7 @@ msgid "You have unsaved changes." msgstr "You have unsaved changes." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "You have unsaved changes. Save or reset before leaving." @@ -40271,7 +39599,7 @@ msgstr "You have unsaved changes. Save or reset before leaving." msgid "You haven't authorized any applications to access your account." msgstr "You haven't authorised any applications to access your account." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "You haven't been a member of this community long enough to send messages." @@ -40327,11 +39655,6 @@ msgstr "You must agree to the terms of service to create an account" msgid "You must verify your email before sending a report." msgstr "You must verify your email before sending a report." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "You need access to your current email to change it from here. Use phone verification if available or contact support." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40357,7 +39680,7 @@ msgstr "You need the \"{manageRolesPermissionLabel}\" permission to edit these p msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." @@ -40385,18 +39708,14 @@ msgstr "You need to claim your account before you can create a community." msgid "You need to claim your account before you can start a direct message." msgstr "You need to claim your account before you can start a direct message." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "You need to claim your account to send direct messages." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "You need to claim your account to send messages in this community." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "You need to verify a phone number to send messages in this community." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40416,7 +39735,7 @@ msgstr "You need to verify your email address before you can start a direct mess msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "You need to verify your email before you can purchase {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "You need to verify your email to send messages in this community." @@ -40425,11 +39744,6 @@ msgstr "You need to verify your email to send messages in this community." msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "You stay in {ownedNames}. Owners cannot leave their own community." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40440,21 +39754,6 @@ msgstr "You were deafened by moderators" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "You will be taken to {redirectHostname} after authorising." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "You will still need to finish the email step." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40589,7 +39888,7 @@ msgid "You're going too fast" msgstr "You're going too fast" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "You're going too fast. Wait a moment and try again." @@ -40637,7 +39936,7 @@ msgstr "You're sending messages too quickly" msgid "You're streaming!" msgstr "You're streaming!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." @@ -40765,25 +40064,27 @@ msgstr "Your {storeName} renewal payment failed but <0/> stay active until <1>{g msgid "Your account" msgstr "Your account" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Your account goes back to normal straight away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Your account has been linked successfully. You can now close this tab and return to the app." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Your account is back to normal." +# auto-i18n: reviewed unchanged +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Your account is limited" + +# auto-i18n: reviewed unchanged +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Your account is limited. Check your email for how to lift it." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Your account is too new to send messages in this community." @@ -40801,11 +40102,6 @@ msgstr "Your account requires multi-factor authentication, but no supported meth msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Your account works normally again straight away and nothing is removed. We can ask for this check again later." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40828,13 +40124,8 @@ msgstr "Your card is being checked for localised pricing. This usually takes a m msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Your card is eligible. Redirecting you to the payment page now." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." @@ -40870,21 +40161,6 @@ msgstr "Your device will ask you to save an updated passkey for {name}. It repla msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Your email address has been updated." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Your email could not receive messages. Add a working email so we can keep your account reachable." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Your email couldn't receive messages. Update it to continue using {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Your email has been verified. You can now sign in to your account." @@ -41001,21 +40277,11 @@ msgstr "Your message didn't update" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Your most recent purchase is no longer within the refund window. Contact support for billing issues." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "your new email" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Your new nickname, or leave blank to reset it." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Your number isn't linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Your payment was cancelled. You can now close this tab and return to the app." @@ -41055,11 +40321,6 @@ msgstr "Your purchased gifts" msgid "your region" msgstr "your region" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Your registration needs an extra anti-spam check before you can continue." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/en-US/messages.po b/fluxer_app/src/features/i18n/locales/en-US/messages.po index 9413442f5..900774413 100644 --- a/fluxer_app/src/features/i18n/locales/en-US/messages.po +++ b/fluxer_app/src/features/i18n/locales/en-US/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reaction} other {# reactions}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# reactor} other {# reactors}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# second} other {# seconds}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} at {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Your invite link expires in # second.} other {Your invite link expires in # seconds.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} selected" @@ -2252,7 +2252,7 @@ msgstr "1 minute" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 hours" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 months (1 year)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "2FA backup" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2FA requirement" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 members (typing)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 months" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 hours" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 months" @@ -2575,11 +2575,6 @@ msgstr "a minute" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "A new desktop version is available. Download the installer, then run it to update {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "A new verification code has been sent." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Account data" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Account exists to spam, scam, or abuse the platform." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Account limited" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Account state" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Account too new" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Account verification required" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Add a bot to a community with requested permissions" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Add a comment (optional)" @@ -3054,8 +3052,10 @@ msgstr "Add a topic to this channel" msgid "Add a word…" msgstr "Add a word…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Add a working email" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Add an account to continue." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Add an email and password to your account first." @@ -3424,11 +3424,6 @@ msgstr "Added: {createdDate} • last used: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Additional comments (optional)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Additional verification required" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "All languages" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Already set to cancel" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Also report this message to the {productName} Safety Team" @@ -4713,11 +4708,6 @@ msgstr "Ask before starting calls" msgid "Ask for a passkey after your password when you sign in" msgstr "Ask for a passkey after your password when you sign in" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Automatically remove tracking parameters (like utm_source, fbclid, gclid msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Automatically remove tracking parameters from URLs in messages you send" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Automatically screen messages for explicit content in channels not marked for mature content." @@ -5359,8 +5349,6 @@ msgstr "Away right now" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Back" @@ -6506,11 +6494,6 @@ msgstr "Cameras and virtual capture devices are selected here in {productName}, msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Cameras are off above {voiceChannelCameraUserLimit} participants" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Can't access that email?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Can't upload files here" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Can't upload files here" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Change email" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Change emoji" @@ -7201,7 +7184,7 @@ msgstr "Changed the user limit from {oldCount} to {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Changed the vanity URL from {oldCode} to {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Changed the verification level from {oldLevel} to {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Channel or category" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Channel permission overrides" @@ -7509,8 +7492,6 @@ msgstr "Check your connection and try again." msgid "Check your connection, then try again." msgstr "Check your connection, then try again." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Choose a display in your system picker" msgid "Choose a GIF" msgstr "Choose a GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Choose a method" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Choose a new password." @@ -7680,8 +7656,8 @@ msgstr "Choose an action." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Choose an emoji" @@ -7749,11 +7725,6 @@ msgstr "Choose how your instance works" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Choose one of the methods below to prove domain ownership. You only need to complete one." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Choose one verification method. Either method can clear this check." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Choose what {clientLabel} can do in your community. Uncheck any permissi msgid "Choose what friends see in their active now panel" msgstr "Choose what friends see in their active now panel" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Choose what members must have before they can post or DM community members." @@ -8030,8 +8001,8 @@ msgstr "Cleans up your mic for clear speech." msgid "Clear" msgstr "Clear" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Clear after" @@ -8053,7 +8024,7 @@ msgstr "Clear all attachment mocks" msgid "Clear all token overrides" msgstr "Clear all token overrides" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Clear attachment mocks" @@ -8066,14 +8037,14 @@ msgstr "Clear command" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Clear custom status" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Clear every reaction from this message?" @@ -8124,7 +8095,7 @@ msgstr "Clear search input" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Coal theme" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Commands" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Comments are unavailable while slowmode is on." @@ -8670,11 +8639,11 @@ msgstr "Communities" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Communities and channels where you can't manage webhooks are hidden." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." @@ -8827,7 +8796,7 @@ msgstr "Community name" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Community nickname" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Community profile" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Community profile updated" @@ -8907,7 +8876,7 @@ msgstr "Community unread badge level" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Community updated" @@ -8952,11 +8921,6 @@ msgstr "Comparison" msgid "Complete mature content check" msgstr "Complete mature content check" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Complete one of the verification paths below to continue using {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Complete payment" msgid "Complete the mature content check to unlock mature media." msgstr "Complete the mature content check to unlock mature media." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Complete the required email and phone verification steps below to continue using {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Complete the required verification to continue using {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Configure your profile badge" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Connections reordered" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Consent required" @@ -9349,16 +9304,6 @@ msgstr "Construct an authorization URL with scopes and permissions." msgid "Contact" msgstr "Contact" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Contact support" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Contact the administrators of this instance for help." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Content creator" msgid "Content filter" msgstr "Content filter" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Content filtering" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Content hint" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Content safety gates" @@ -9416,12 +9361,10 @@ msgstr "Context menus can be opened with left-click (on buttons) or right-click #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Control unread indicator behavior for muted channels in channel lists." msgid "Control which chat updates are announced by assistive technology." msgstr "Control which chat updates are announced by assistive technology." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Conversation not found" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Couldn't add tag" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Couldn't add this friend to the group. Please try again." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Couldn't add to group" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Couldn't create a theme link" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Couldn't create invite link" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Couldn't end your grace period" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Couldn't generate an invite link. Please try again." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Couldn't process image" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Couldn't publish this message" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Couldn't rejoin the Visionary community" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Couldn't remove entrance sound" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Couldn't save channel settings" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Couldn't save entrance sound" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Couldn't withdraw application" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Countdown timer" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Country" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Create the administrator account" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Create webhook" @@ -10948,7 +10884,7 @@ msgstr "Custom emoji {emojiName} from a community" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Custom entrance sounds are not enabled on this instance." @@ -11108,7 +11044,7 @@ msgstr "Custom voice processing" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Custom warning text" @@ -11530,11 +11466,6 @@ msgstr "Default search engine" msgid "Default shortcuts" msgstr "Default shortcuts" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Default tab" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Delete this message" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Delete this message? Can't be undone." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Developer mode" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Developer option" @@ -12299,7 +12230,7 @@ msgstr "Direct input" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Display mode" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Display name" @@ -12858,7 +12789,7 @@ msgstr "Do you want to join {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Edit profile local time" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Edit published message?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Edit your messages above or below" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Edit your profile appearance and see a live preview" @@ -13590,10 +13521,8 @@ msgstr "Eligible for a refund until {windowEndsOn}. This will also cancel your s msgid "Email" msgstr "Email" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Email address required." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Email changed" @@ -13616,49 +13547,17 @@ msgstr "Email changed" msgid "Email delivery" msgstr "Email delivery" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Email or phone" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Email or phone re-verification required" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Email re-verification required" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Email unavailable" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Email update is unavailable right now. Try again later or contact support." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Email update required" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Email verification nagbar" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Email verification required" @@ -13675,6 +13574,10 @@ msgstr "Email verified override" msgid "Email verified successfully" msgstr "Email verified successfully" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Embeds" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Embeds suppressed" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Embeds unsuppressed" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Enable /tts speech playback" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Enable 2FA on your account to change this setting" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Enter a valid {theOtherPlatform} template URL or code." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Enter a valid email address." @@ -14298,33 +14199,11 @@ msgstr "Enter a valid email address." msgid "Enter a valid message link." msgstr "Enter a valid message link." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Enter a valid mobile phone number." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Enter a valid phone number" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Enter a valid username ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Enter an email address you can access. We will send a code there." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Enter code" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Enter fullscreen" msgid "Enter gift code…" msgstr "Enter gift code…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Enter new email" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Enter one of your backup codes if you can't use your passkey." msgid "Enter one of your backup codes." msgstr "Enter one of your backup codes." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Enter phone" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Enter the {digitCount}-digit code from your authenticator app or one of msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Enter the {digitCount}-digit code from your authenticator app." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Enter the {digitCount}-digit code sent to {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Enter the code" @@ -14408,11 +14267,6 @@ msgstr "Enter the code before continuing." msgid "Enter the code from your authenticator app." msgstr "Enter the code from your authenticator app." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Enter the code sent to {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Enter the code sent to your current email." @@ -14426,6 +14280,7 @@ msgstr "Enter the code sent to your email address." msgid "Enter the code shown in the app to continue." msgstr "Enter the code shown in the app to continue." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Enter the code we emailed to your new address." @@ -14434,11 +14289,6 @@ msgstr "Enter the code we emailed to your new address." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Enter the email code" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Enter the invite link to join a community." @@ -14452,11 +14302,6 @@ msgstr "Enter the new email you want to use. We'll send a code there next." msgid "Enter the PIN for your security key to continue." msgstr "Enter the PIN for your security key to continue." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Enter the SMS code" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Enter this code in your browser to complete sign-in." @@ -14492,11 +14337,6 @@ msgstr "Enter your name" msgid "Enter your password." msgstr "Enter your password." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Enter your phone number" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Entrance sound" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Entrance sound files must be {limit} or less." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Entrance sound library full" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Entrance sound removed" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Entrance sound saved" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Entrance sounds" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Entrance sounds unavailable" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Expires:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Explicit content filter setting" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Failed to copy to clipboard" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Failed to create webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Failed to load vanity URL. Try again." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Failed to load webhooks" @@ -15190,11 +15030,6 @@ msgstr "Failed to remove vanity URL. Try again." msgid "Failed to resend code. Try again." msgstr "Failed to resend code. Try again." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Failed to resend verification code. Try again later." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Failed to send message. Hold for options." msgid "Failed to send report. Try again." msgstr "Failed to send report. Try again." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Failed to send verification email. Try again later." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Failed to start" @@ -15551,15 +15381,15 @@ msgstr "Filter by user" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filter everyone" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filter members without roles" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Follow this channel" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Follow to get these announcements in a channel you choose." @@ -15773,7 +15603,7 @@ msgstr "Followed channel {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Followed channels" @@ -15857,11 +15687,6 @@ msgstr "For British eyes only..." msgid "For me" msgstr "For me" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "For this check, you send us a text message instead of receiving one from us." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "For your security, please confirm it's you to continue." @@ -15905,7 +15730,7 @@ msgstr "Force loading skeleton" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Force mature media" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Force move to AFK channel" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Force no {permissionName} permission" @@ -15948,7 +15773,7 @@ msgstr "Force show vanity URL disclaimer" msgid "Force show voice connection" msgstr "Force show voice connection" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Force slowmode active" @@ -16020,7 +15845,7 @@ msgstr "Forward media" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Forward message" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Geo block overlay" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Geo restricted" @@ -16490,12 +16315,6 @@ msgstr "Get an animated avatar and banner, a subscriber badge, the four-digit ta msgid "Get monthly" msgstr "Get monthly" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Get new code" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Gift codes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Gift duration" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Gift inventory" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Gift inventory flow" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Gift not found" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Gift redeemed" @@ -17030,7 +16849,7 @@ msgstr "Group direct message" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hey {displayName}, claim your account to prevent losing access." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hey {displayName}, please verify your email address." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Hide your own screen share?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "High" @@ -17755,11 +17579,6 @@ msgstr "I am a tooltip" msgid "I changed my mind" msgstr "I changed my mind" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "I need another way" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "If this report is about a specific message, report that message instead. msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "If you can't verify by SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "If you cannot use any verification method, contact support for help." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Interface size" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Invalid audio file" @@ -18674,8 +18483,10 @@ msgstr "Invalid JSON. Paste the full response from the URL above." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Join voice call" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Join voice channel" @@ -19613,16 +19424,6 @@ msgstr "Learn more about Visionary" msgid "Leave" msgstr "Leave" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Leave and set aside" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Let screen readers announce new messages as they arrive in the open channel. Notification sounds are unaffected." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Let the community self-moderate" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Library" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Library full ({max} sounds max). Delete one before adding another." @@ -19812,7 +19613,7 @@ msgstr "Library: {count} of {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Lifetime" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Loading..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Loading…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Low" @@ -20416,7 +20217,7 @@ msgstr "Manage community features" msgid "Manage emoji & stickers" msgstr "Manage emoji & stickers" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Manage incoming webhooks that can post messages into this channel." @@ -20514,7 +20315,7 @@ msgstr "Mark all unread inbox channels as read immediately, without asking to co msgid "Mark as read" msgstr "Mark as read" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Mark as redeemed" @@ -20676,14 +20477,14 @@ msgstr "Mature community" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Mature content" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Mature content & content warnings" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maximum lifetime (days)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Maximum protection for family-friendly spaces" @@ -20924,7 +20725,7 @@ msgstr "Media stop" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Member unbanned" msgid "Member updated" msgstr "Member updated" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Member verification" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Member verification level" @@ -21048,7 +20849,7 @@ msgstr "Members are removed when offline unless given a role." msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." @@ -21153,7 +20954,7 @@ msgstr "Mentions of you show up here for {retentionDays} days." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Mentions only" @@ -21292,7 +21093,7 @@ msgstr "Message display settings are only available on desktop." msgid "Message editing" msgstr "Message editing" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Message forwarded" @@ -21341,7 +21142,7 @@ msgstr "Message input buttons" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Message is too long" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Message previews in the DM list" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Message published" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Messages published in #{sourceName} will now appear in #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Messages published in these announcement channels are copied here." @@ -21504,7 +21305,7 @@ msgstr "Messages published in these announcement channels are copied into your c msgid "Messages you can bookmark" msgstr "Messages you can bookmark" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Messaging is temporarily paused in this community." @@ -21733,30 +21534,30 @@ msgstr "Mock expires in 1 day" msgid "Mock expires in 7 days" msgstr "Mock expires in 7 days" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Mock geo block overlay" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Mock gift inventory" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Mock incoming call" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Mock mature content channel gate reason" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Mock mature content media gate reason" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Mock UK geo" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Mock user avatars in various sizes and all status permutations." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Mock variant" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Mocked product flows" @@ -22698,14 +22494,16 @@ msgstr "New community muted" msgid "New direct message" msgstr "New direct message" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "New email" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "New email form" @@ -22816,9 +22614,7 @@ msgstr "Newest first" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Next" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "No" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "No {attachFilesPermission} permission" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "No {sendMessagesPermission} permission" @@ -23005,7 +22801,7 @@ msgstr "No changes to save" msgid "No channels available" msgstr "No channels available" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "No channels found" @@ -23233,11 +23029,6 @@ msgstr "No permissions found" msgid "No personal words yet." msgstr "No personal words yet." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "No phone number" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "No results" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "No results found" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "No users found" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "No verification is required." @@ -23452,7 +23243,7 @@ msgstr "No verification is required." msgid "No verification methods available" msgstr "No verification methods available" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "No webhooks" @@ -23504,7 +23295,7 @@ msgstr "Non-convert" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "None" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "None (normal behavior)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norwegian" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Not a member long enough" @@ -23798,9 +23589,9 @@ msgstr "Objects" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Off" @@ -23848,7 +23639,7 @@ msgstr "Oldest first" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "On" @@ -23884,11 +23675,6 @@ msgstr "One or more attachments couldn't be read or uploaded. The file may have msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "One quick check" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Only speakers" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Only the community owner can change this setting" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Open emoji in browser" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Open emoji picker" @@ -24382,12 +24168,8 @@ msgstr "Open menu icon" msgid "Open message history threshold" msgstr "Open message history threshold" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Open overlay" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Open popup" @@ -24485,11 +24267,6 @@ msgstr "Open the new app. You are already signed in." msgid "Open the shortcuts list for quick actions." msgstr "Open the shortcuts list for quick actions." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Open the verification email and use the link inside. This window updates after the link opens." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Open voice & video settings" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Open your browser, sign in, then enter the code below to link your account." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Open your messages" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Open your phone's messaging app and create a new text message." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Open your phone's messaging app and start a new text message." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Other reaction…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Phone" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Phone number" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Phone number is required" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Phone number verified" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Phone re-verification required" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Phone step" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Phone verification is not available for this account. Use another method or contact support." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Phone verification required" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Pick the 4-digit number after your username" msgid "Pick the appearance this administrator account should start with." msgstr "Pick the appearance this administrator account should start with." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Pick the method you can complete now." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Picture-in-picture" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Pin" @@ -25471,7 +25176,7 @@ msgstr "Pin group DM" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Pin or unpin any message." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Pin this message to the channel for everyone to see." @@ -26227,18 +25932,18 @@ msgstr "Profile color" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Profile customization" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Profile customization for {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Profile customization form" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Profile type" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profile updated" @@ -26340,7 +26045,7 @@ msgstr "Prompt for new audio devices" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Raid coordination" msgid "Rate" msgstr "Rate" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Rate limited" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Raw embed JSON" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Remove {userName} from your friends?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Remove all" @@ -27290,7 +26990,7 @@ msgstr "Remove all {emojiNameWithColons} reactions from this message?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Remove all reactions" @@ -27899,20 +27599,10 @@ msgstr "Reported user tag (optional)" msgid "Reposts: <0>{countLabel}" msgstr "Reposts: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Request a new code first." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Request a new reset link" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Request a verification code first." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Requests" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Require 2FA for moderation actions" @@ -27958,7 +27648,7 @@ msgstr "Require OAuth2 code grant" msgid "Require passkey" msgstr "Require passkey" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." @@ -27972,46 +27662,6 @@ msgstr "Required" msgid "Required 2FA for moderation actions" msgstr "Required 2FA for moderation actions" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Required action default tab" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Required action flow" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Required action phone step" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Required action resend loading" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Required action resend outcome" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Required action reverification text" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Required action variant" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Required actions overlay" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Requires a redirect URI and an authorization code when inviting this bot." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Requires a verified email address and an account that's at least 5 minutes old." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Requires a verified email address." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Requires a verified phone number." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Requires everything in medium, plus being a member of the community for at least 10 minutes." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Resend ({resendSecondsRemaining}s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Resend ({secondsRemaining}s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Resend button loading" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Resend code" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Resend email" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Resend outcome" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Resent" @@ -28518,21 +28152,6 @@ msgstr "Reveal" msgid "Reveal spoiler" msgstr "Reveal spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Reverify your email or verify your phone to continue using {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Reverify your email to continue using {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Reverify your phone number to continue using {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Saturation" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Scrub preview" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Search channels" msgid "Search communities" msgstr "Search communities" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Search countries..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Search countries…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Select your country of residence." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Select…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Send" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Send ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Send another report" msgid "Send button" msgstr "Send button" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Send code" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Send messages" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Send messages disabled" @@ -30151,32 +29759,11 @@ msgstr "Send saved media {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Send the code <0>{0} to <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Send the code to the phone number below." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Send this code" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Send this pin back in time?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Send to" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Send voice message" msgid "Send:" msgstr "Send:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Serial send" msgid "Serve the token file" msgstr "Serve the token file" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Service error" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Set custom shortcut for \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Set custom status" @@ -30486,18 +30060,6 @@ msgstr "Set the voice region to {region}" msgid "Set the voice region to automatic" msgstr "Set the voice region to automatic" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Set this check aside" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Set this check aside?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Set your pronouns" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Set your status" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Shortcuts are paused while recording." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Shorten the message and try again." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Show a {productName} icon in the system tray or menu bar" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Show a content warning" @@ -31672,7 +31234,7 @@ msgstr "Slowmode · wait {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Slowmode active" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Slowmode is set to {durationLabel}. Wait before sending another message." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Slowmode remaining" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Slowmode simulation" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Slowmode time remaining" @@ -31807,11 +31369,6 @@ msgstr "Smooth scrolling" msgid "Smoother video" msgstr "Smoother video" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "SMS verification is unavailable right now. Try again later or contact support." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Something went wrong while preparing this sticker. Try another file or try again in a moment." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Something went wrong while publishing. Try again in a moment." @@ -32009,11 +31566,9 @@ msgstr "Something went wrong. Reload the page or sign in again." msgid "Something went wrong. Try again later." msgstr "Something went wrong. Try again later." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Something went wrong. Try again." @@ -32352,11 +31907,6 @@ msgstr "SSO sign-in timed out. Try again." msgid "Staff controls" msgstr "Staff controls" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Standard messaging rates from your carrier may apply." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Star animation" msgid "Starred channels" msgstr "Starred channels" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Subscriber transport:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Subscription" @@ -33051,14 +32599,12 @@ msgstr "Subscription scenarios" msgid "Subtext" msgstr "Subtext" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Success" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Suggested for most communities" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "System & welcome" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "System announcements from {productName} staff. You can't reply here." @@ -33765,11 +33311,6 @@ msgstr "Text selection" msgid "Text size" msgstr "Text size" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Text us from your phone" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Thai" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "That code didn't work. Check it and try again." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "That code expired. Request a new code." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "That did not go through. Nothing changed. Try again." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "That doesn't look like a valid color. Try hex, rgb(), hsl(), or a CSS co msgid "That doesn't look like a valid URL." msgstr "That doesn't look like a valid URL." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "That email is already in use." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "The override denied {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "The page you're looking for doesn't exist or has been moved." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "The phone check is set aside. One email step is left." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "There are no channels available to create an invite for." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." @@ -34273,7 +33784,7 @@ msgstr "There was an error loading the invites. Try again." msgid "There was an error loading the stickers. Try again." msgstr "There was an error loading the stickers. Try again." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "There was an error loading the webhooks for this channel. Try again." @@ -34417,7 +33928,7 @@ msgstr "This channel can publish 10 messages in a row, then one more every 6 min msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "This channel does not support webhooks." @@ -34550,12 +34061,12 @@ msgstr "This connection has not been verified." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "This contains sensitive content." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "This conversation is no longer available." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "This group has too many people" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "This group is full. Remove someone before adding more people." @@ -34715,11 +34226,6 @@ msgstr "This is a custom sticker from a community." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "This is an age-restricted channel. Updates can only go to age-restricted channels." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "This is an anti-spam check. Your phone number is not linked to your account." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "This is disabled" msgid "This is how messages appear" msgstr "This is how messages appear" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "This is not available on your account right now. Ask the administrators of this instance to review it." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "This is not available on your account right now. Email {supportEmail} and a person will review it." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "This is not the channel you're looking for." @@ -34792,11 +34288,6 @@ msgstr "This is your last passkey and passkeys are your second factor. Deleting msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "This message has already been deleted." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "This message has already been published" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "This message no longer exists." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "This nickname will only be visible in this community" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "This number needs text-in verification instead of an SMS from us." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "This participant is deafened" msgid "This participant was deafened by moderators" msgstr "This participant was deafened by moderators" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "This phone number cannot be used. Try another mobile number or contact support." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "This phone number has already been used. Try another number or contact support." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "This user has no roles in this community." msgid "This user is already banned from the community." msgstr "This user is already banned from the community." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "This user is no longer available." @@ -35065,11 +34536,6 @@ msgstr "This user was force-added to this community by a platform administrator. msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "This verification session expired. Return to {productName} and start checkout again." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "This verification session expired. Start again." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "This will sign you out, clear cached files and stored sessions, and rest msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "This window updates automatically after we receive your message." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Title bar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Title bar platform" @@ -35470,18 +34931,11 @@ msgstr "Tone" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Tone-map HDR images to standard range, reducing peak brightness." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Too many attempts. Wait a bit, then try again." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Too many communities" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Too many requests. Try again later." @@ -36151,8 +35605,10 @@ msgstr "Unable to prepare any emojis for upload. The following errors occurred:" #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Unavailable" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Uncategorized" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Unclaimed account" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Unordered" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Unpin" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Unpin message" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Unpin this message?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Unsaved changes" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Unsupported audio file." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Until I turn it back on" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Unverified email" @@ -36958,12 +36414,7 @@ msgstr "Update {productName} to view this message." msgid "Update app" msgstr "Update app" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Update email" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Update my status" @@ -37306,18 +36757,13 @@ msgstr "Use {url} where the image URL should be inserted." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Use a different email address and verify it with a code." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Use actual" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Use actual premium type" @@ -37335,16 +36781,6 @@ msgstr "Use alternative method" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Use an authenticator app to generate codes for two-factor authentication" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Use an email address you can access. We will send a code there." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Use an email that is different from your current one." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Use dark theme across the application" msgid "Use default" msgstr "Use default" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Use different email" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Use email" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Use passkeys for two-factor authentication?" msgid "Use passkeys to sign in without a password" msgstr "Use passkeys to sign in without a password" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Use phone" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Use reverification text" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "User moves channel" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "User not found" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Verification" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Verification & membership barriers" @@ -37970,15 +37387,8 @@ msgstr "Verification code" msgid "Verification code sent" msgstr "Verification code sent" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Verification code sent. Check your new email inbox." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Verification email sent. Check your inbox." @@ -38038,23 +37448,6 @@ msgstr "Verify identity form" msgid "Verify it's you" msgstr "Verify it's you" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Verify phone" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Verify phone number" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Verify phone number form" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Verify your email before adding an authenticator app." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Verify your email before editing this community profile. You can still preview it here." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Verify your email before editing your profile. You can still preview it here." @@ -38113,11 +37506,6 @@ msgstr "Verify your email before sending friend requests." msgid "Verify your email first" msgstr "Verify your email first" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Verify your email or phone to continue using {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Verify your email to buy gifts." msgid "Verify your email to change your username" msgstr "Verify your email to change your username" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Verify your email to continue using {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Verify your email to edit this community profile" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Verify your email to edit your profile" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Version" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Very high" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Volume up" msgid "Wait a moment before deleting more messages." msgstr "Wait a moment before deleting more messages." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Wait a moment. This window will close automatically once we receive your message." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Wait here" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Waiting for passkey…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Waiting for slowmode in {forwardChannelDisplayName} to expire." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Waiting for slowmode in one or more selected channels to expire." @@ -39115,16 +38482,6 @@ msgstr "We couldn't read this theme. It may be corrupted or invalid." msgid "We couldn't remove that account. Try again." msgstr "We couldn't remove that account. Try again." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "We couldn't verify this number automatically. Contact support and a person will review your account." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "We don't send verification texts to this country. Try a mobile number from another country, or contact support." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "We found an existing {premiumProductFullName} subscription for this acco msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "We need two verification steps before you continue. We will show one step at a time." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "We recommend saving these codes now so that you don't get locked out of your account." @@ -39167,11 +38514,6 @@ msgstr "We sent a code to {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "We will prefill {prefillEmail} once browser sign-in opens." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "We will send an SMS code when available." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "We'll process this as soon as possible. You'll get an email when your archive is ready." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "We'll send a verification code to your email before you can change your msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "We'll send a verification code to your email before you can view your backup codes." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "We'll verify your current email and then your new email with one-time codes." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook created" @@ -39331,7 +38669,7 @@ msgstr "Webhook updated" msgid "Webhook URL" msgstr "Webhook URL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooks" @@ -39486,8 +38824,8 @@ msgstr "What you're sharing isn't updating" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "What's happening?" @@ -39967,21 +39305,11 @@ msgstr "You can remove the <0>{readMessageHistoryPermissionLabel} permission msgid "You can sign back in at any time." msgstr "You can sign back in at any time." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "You can still ask the administrators of this instance for a human review at any time." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "You can still email {supportEmail} for a human review at any time." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "You can use links, emoji, and Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "You can't add expressions there" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "You can't add new reactions while you're timed out." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "You can't befriend yourself" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "You can't change your nickname here" @@ -40094,7 +39422,7 @@ msgstr "You can't send a friend request to yourself." msgid "You can't send messages in this channel." msgstr "You can't send messages in this channel." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "You can't send messages in this community." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "You don't have permission to do this to this member." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "You don't have permission to join this voice channel" @@ -40243,7 +39571,7 @@ msgstr "You don't have permission to rename this emoji. The name was reverted to msgid "You have been banned from this community." msgstr "You have been banned from this community." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "You have blocked {username}. Unblock them to send messages." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "You have unsaved changes." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "You have unsaved changes. Save or reset before leaving." @@ -40270,7 +39598,7 @@ msgstr "You have unsaved changes. Save or reset before leaving." msgid "You haven't authorized any applications to access your account." msgstr "You haven't authorized any applications to access your account." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "You haven't been a member of this community long enough to send messages." @@ -40326,11 +39654,6 @@ msgstr "You must agree to the terms of service to create an account" msgid "You must verify your email before sending a report." msgstr "You must verify your email before sending a report." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "You need access to your current email to change it from here. Use phone verification if available or contact support." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "You need the \"{manageRolesPermissionLabel}\" permission to edit these p msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." @@ -40384,18 +39707,14 @@ msgstr "You need to claim your account before you can create a community." msgid "You need to claim your account before you can start a direct message." msgstr "You need to claim your account before you can start a direct message." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "You need to claim your account to send direct messages." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "You need to claim your account to send messages in this community." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "You need to verify a phone number to send messages in this community." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "You need to verify your email address before you can start a direct mess msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "You need to verify your email before you can purchase {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "You need to verify your email to send messages in this community." @@ -40424,11 +39743,6 @@ msgstr "You need to verify your email to send messages in this community." msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "You stay in {ownedNames}. Owners cannot leave their own community." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "You were deafened by moderators" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "You will be taken to {redirectHostname} after authorizing." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "You will still need to finish the email step." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "You're going too fast" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "You're going too fast. Wait a moment and try again." @@ -40636,7 +39935,7 @@ msgstr "You're sending messages too quickly" msgid "You're streaming!" msgstr "You're streaming!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." @@ -40764,25 +40063,25 @@ msgstr "Your {storeName} renewal payment failed but <0/> stay active until <1>{g msgid "Your account" msgstr "Your account" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Your account has been linked successfully. You can now close this tab and return to the app." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Your account is back to normal." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Your account is limited" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Your account is limited. Check your email for how to lift it." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Your account is too new to send messages in this community." @@ -40800,11 +40099,6 @@ msgstr "Your account requires multi-factor authentication, but no supported meth msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Your account works normally again straight away and nothing is removed. We can ask for this check again later." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Your card is being checked for localized pricing. This usually takes a m msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Your card is eligible. Redirecting you to the payment page now." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." @@ -40869,21 +40158,6 @@ msgstr "Your device will ask you to save an updated passkey for {name}. It repla msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Your email address has been updated." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Your email could not receive messages. Add a working email so we can keep your account reachable." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Your email couldn't receive messages. Update it to continue using {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Your email has been verified. You can now sign in to your account." @@ -41000,21 +40274,11 @@ msgstr "Your message didn't update" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Your most recent purchase is no longer within the refund window. Contact support for billing issues." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "your new email" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Your new nickname, or leave blank to reset it." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Your payment was canceled. You can now close this tab and return to the app." @@ -41054,11 +40318,6 @@ msgstr "Your purchased gifts" msgid "your region" msgstr "your region" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Your registration needs an extra anti-spam check before you can continue." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/es-419/messages.po b/fluxer_app/src/features/i18n/locales/es-419/messages.po index 69e59b820..b64b0ddaa 100644 --- a/fluxer_app/src/features/i18n/locales/es-419/messages.po +++ b/fluxer_app/src/features/i18n/locales/es-419/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reacción} other {# reacciones}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# persona que reaccionó} other {# personas que reaccionaron}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# segundo} other {# segundos}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} a las {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Tu enlace de invitación vence en # segundo.} many {Tu enlace de invitación vence en # segundos.} other {Tu enlace de invitación vence en # segundos.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount, plural, one {# seleccionado} other {# seleccionados}}" @@ -2252,7 +2252,7 @@ msgstr "1 minuto" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 horas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 meses (1 año)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Códigos de respaldo de 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Requisito de 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 miembros (escribiendo)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 meses" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 horas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 meses" @@ -2575,11 +2575,6 @@ msgstr "un minuto" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Hay una nueva versión de escritorio disponible. Descarga el instalador y ejecútalo para actualizar {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Se envió un nuevo código de verificación." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Datos de la cuenta" msgid "Account exists to spam, scam, or abuse the platform." msgstr "La cuenta existe para enviar spam, estafar o abusar de la plataforma." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Cuenta limitada" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Estado de la cuenta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Cuenta demasiado nueva" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Se requiere verificación de cuenta" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Agregar un bot a una comunidad con los permisos solicitados" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Agregar un comentario (opcional)" @@ -3054,8 +3052,10 @@ msgstr "Agrega un tema a este canal" msgid "Add a word…" msgstr "Agregar una palabra…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Agrega un correo electrónico que funcione" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Agrega una cuenta para continuar." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Primero, agrega un correo electrónico y una contraseña a tu cuenta." @@ -3424,11 +3424,6 @@ msgstr "Agregado: {createdDate} • última vez usado: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Comentarios adicionales (opcional)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Verificación adicional requerida" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Todos los idiomas" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Cancelación ya programada" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "También reportar este mensaje al equipo de seguridad de {productName}" @@ -4713,11 +4708,6 @@ msgstr "Preguntar antes de iniciar llamadas" msgid "Ask for a passkey after your password when you sign in" msgstr "Solicitar una llave de acceso después de tu contraseña al iniciar sesión" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Pídele a los administradores de esta instancia que revisen tu cuenta. Esta instancia se ejecuta de forma independiente y solo sus administradores pueden cambiar tu cuenta." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Elimina automáticamente los parámetros de seguimiento (como utm_source msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Eliminar automáticamente los parámetros de seguimiento de las URL en los mensajes que envías" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Filtra automáticamente los mensajes con contenido explícito en los canales que no están marcados para contenido para adultos." @@ -5359,8 +5349,6 @@ msgstr "Ausente en este momento" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Atrás" @@ -6506,11 +6494,6 @@ msgstr "Las cámaras y los dispositivos de captura virtual se seleccionan aquí msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Las cámaras están apagadas si hay más de {voiceChannelCameraUserLimit, plural, one {# participante} other {# participantes}}" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "¿No puedes acceder a ese correo electrónico?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "No se pueden subir archivos aquí" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "No se pueden subir archivos aquí" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Cambiar correo electrónico" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Cambiar emoji" @@ -7201,7 +7184,7 @@ msgstr "Se cambió el límite de usuarios de {oldCount} a {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Se cambió la URL personalizada de {oldCode} a {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Se cambió el nivel de verificación de {oldLevel} a {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Canal o categoría" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Permisos específicos del canal" @@ -7509,8 +7492,6 @@ msgstr "Revisa tu conexión e inténtalo de nuevo." msgid "Check your connection, then try again." msgstr "Revisa tu conexión y vuelve a intentarlo." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Elige una pantalla en el selector de tu sistema" msgid "Choose a GIF" msgstr "Elige un GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Elige un método" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Elige una contraseña nueva." @@ -7680,8 +7656,8 @@ msgstr "Elige una acción." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Elige un emoji" @@ -7749,11 +7725,6 @@ msgstr "Elige cómo funciona tu instancia" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Elige uno de los métodos a continuación para verificar la propiedad del dominio. Solo tienes que completar uno." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Elige un método de verificación. Cualquiera de los dos puede completar esta verificación." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Elige qué puede hacer {clientLabel} en tu comunidad. Desmarca los permi msgid "Choose what friends see in their active now panel" msgstr "Elige lo que tus amigos ven en su panel de \"Activo ahora\"" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Elige qué deben tener los miembros antes de que puedan publicar o enviar mensajes directos a los miembros de la comunidad." @@ -8030,8 +8001,8 @@ msgstr "Mejora tu micrófono para que tu voz se escuche con claridad." msgid "Clear" msgstr "Borrar" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Borrar después de" @@ -8053,7 +8024,7 @@ msgstr "Borrar todos los archivos adjuntos de prueba" msgid "Clear all token overrides" msgstr "Borrar todas las personalizaciones de variables" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Borrar simulaciones de adjuntos" @@ -8066,14 +8037,14 @@ msgstr "Borrar comando" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Borrar estado personalizado" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "¿Borrar todas las reacciones de este mensaje?" @@ -8124,7 +8095,7 @@ msgstr "Borrar búsqueda" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Tema carbón" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Comandos" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Los comentarios están desactivados porque uno o más canales seleccionados tienen el modo lento activado. El comentario sería bloqueado por el modo lento justo después del reenvío." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Los comentarios están deshabilitados porque el modo lento está activado en {forwardChannelDisplayName}. El comentario se bloquearía por el modo lento justo después del reenvío." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Los comentarios no están disponibles mientras el modo lento esté activado." @@ -8670,11 +8639,11 @@ msgstr "Comunidades" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Las comunidades y canales donde no puedes administrar webhooks están ocultos." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Las comunidades que aparecen en Descubrir deben analizar los mensajes de todos los miembros. Esta configuración no se puede cambiar mientras Descubrir esté activado." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Las comunidades que aparecen en Descubrir requieren al menos un correo electrónico verificado. No se puede seleccionar \"Ninguno\" mientras Descubrir esté activado." @@ -8827,7 +8796,7 @@ msgstr "Nombre de la comunidad" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Apodo en la comunidad" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Perfil en la comunidad" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Perfil en la comunidad actualizado" @@ -8907,7 +8876,7 @@ msgstr "Nivel de insignias de no leídos de la comunidad" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Comunidad actualizada" @@ -8952,11 +8921,6 @@ msgstr "Comparación" msgid "Complete mature content check" msgstr "Completar verificación de contenido para adultos" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Completa una de las rutas de verificación a continuación para seguir usando {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Completar pago" msgid "Complete the mature content check to unlock mature media." msgstr "Completa la verificación de contenido para adultos para desbloquear contenido para adultos." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Completa los pasos de verificación de correo electrónico y teléfono que se indican a continuación para seguir usando {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Completa la verificación requerida para seguir usando {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Configura tu insignia de perfil" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Conexiones reordenadas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Se requiere consentimiento" @@ -9349,16 +9304,6 @@ msgstr "Crea una URL de autorización con ámbitos y permisos." msgid "Contact" msgstr "Contacto" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Contactar a soporte técnico" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Contacta a los administradores de esta instancia para obtener ayuda." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Creador de contenido" msgid "Content filter" msgstr "Filtro de contenido" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Filtro de contenido" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Indicación del tipo de contenido" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Filtros de seguridad de contenido" @@ -9416,12 +9361,10 @@ msgstr "Los menús contextuales se pueden abrir con un clic izquierdo (en botone #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Controla el comportamiento del indicador de mensajes no leídos para los msgid "Control which chat updates are announced by assistive technology." msgstr "Controla qué actualizaciones de chat anuncia la tecnología de asistencia." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Conversación no encontrada" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "No se pudo agregar la etiqueta" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "No se pudo agregar a este amigo al grupo. Intenta de nuevo." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "No se pudo agregar al grupo" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "No se pudo crear un enlace del tema" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "No se pudo crear el enlace de invitación" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "No se pudo finalizar tu período de gracia" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "No se pudo generar un enlace de invitación. Intenta de nuevo." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "No se pudo procesar la imagen" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "No se pudo publicar este mensaje" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "No pudiste volver a unirte a la comunidad Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "No se pudo eliminar el sonido de entrada" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "No se pudieron guardar la configuración del canal" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "No se pudo guardar el sonido de entrada" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "No se pudo retirar la solicitud" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Temporizador de cuenta regresiva" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "País" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Crear la cuenta de administrador" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "¿Crear el MD de grupo con {addableCount, plural, one {# destinatario restante} other {# destinatarios restantes}} y omitir a los demás?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Crear webhook" @@ -10948,7 +10884,7 @@ msgstr "Emoji personalizado {emojiName} de una comunidad" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Los sonidos de entrada personalizados no están habilitados en esta instancia." @@ -11108,7 +11044,7 @@ msgstr "Procesamiento de voz personalizado" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Texto de advertencia personalizado" @@ -11530,11 +11466,6 @@ msgstr "Motor de búsqueda predeterminado" msgid "Default shortcuts" msgstr "Atajos predeterminados" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Pestaña predeterminada" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Eliminar este mensaje" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "¿Eliminar este mensaje? No se puede deshacer." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "¿Eliminar este mensaje? No se puede deshacer. Este mensaje también se eliminará de cada comunidad que siga este canal." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Modo desarrollador" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Opción de desarrollador" @@ -12299,7 +12230,7 @@ msgstr "Entrada directa" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Modo de visualización" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Nombre visible" @@ -12858,7 +12789,7 @@ msgstr "¿Quieres unirte a {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, soy del futuro. Vine en una máquina del tiempo que tú inventaste. Ahora, necesito tu ayuda para volver a 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Editar hora local del perfil" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "¿Editar mensaje publicado?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Editar tus mensajes de arriba o abajo" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Edita la apariencia de tu perfil y mira una vista previa en vivo" @@ -13590,10 +13521,8 @@ msgstr "Puedes solicitar un reembolso hasta el {windowEndsOn}. Esto también can msgid "Email" msgstr "Correo electrónico" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Se requiere una dirección de correo electrónico." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Correo electrónico cambiado" @@ -13616,49 +13547,17 @@ msgstr "Correo electrónico cambiado" msgid "Email delivery" msgstr "Entrega de correo electrónico" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Correo o teléfono" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Se requiere volver a verificar el correo electrónico o el teléfono" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Se requiere verificar el correo electrónico de nuevo" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Correo electrónico no disponible" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "La actualización del correo electrónico no está disponible en este momento. Intenta de nuevo más tarde o contacta a soporte." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Actualización de correo electrónico requerida" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Envíanos un correo y una persona revisará tu cuenta. Indica que no puedes verificar por SMS y nos encargaremos del resto. Las respuestas llegan por correo electrónico, así que esto no es instantáneo." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Barra de verificación de correo electrónico" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Se requiere verificación de correo electrónico" @@ -13675,6 +13574,10 @@ msgstr "Forzar correo electrónico verificado" msgid "Email verified successfully" msgstr "Correo electrónico verificado con éxito" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Los correos a tu dirección actual no se están entregando. Ingresa un nuevo correo y te enviaremos un código allí." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Contenido incrustado" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Elementos incrustados suprimidos" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Contenido incrustado restaurado" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Activar la reproducción de voz /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Activa la autenticación de dos factores en tu cuenta para cambiar esta configuración" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Ingresa una URL o un código válido de una plantilla de {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Ingresa una dirección de correo electrónico válida." @@ -14298,33 +14199,11 @@ msgstr "Ingresa una dirección de correo electrónico válida." msgid "Enter a valid message link." msgstr "Ingresa un enlace de mensaje válido." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Ingresa un número de teléfono celular válido." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Ingresa un número de teléfono válido" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Ingresa un nombre de usuario válido ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Ingresa un correo electrónico al que tengas acceso. Te enviaremos un código allí." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Ingresa el código" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Entrar a pantalla completa" msgid "Enter gift code…" msgstr "Ingresa el código de regalo…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Ingresa el correo electrónico nuevo" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Ingresa uno de tus códigos de respaldo si no puedes usar tu llave de ac msgid "Enter one of your backup codes." msgstr "Ingresa uno de tus códigos de respaldo." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Ingresa el teléfono" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Ingresa el código de {digitCount} dígitos de tu app de autenticación msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Ingresa el código de {digitCount} dígitos de tu aplicación de autenticación." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Ingresa el código de {digitCount} dígitos que enviamos a {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Ingresa el código de {MFA_CODE_DIGIT_COUNT} dígitos que enviamos a {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Ingresa el código" @@ -14408,11 +14267,6 @@ msgstr "Ingresa el código antes de continuar." msgid "Enter the code from your authenticator app." msgstr "Ingresa el código de tu app de autenticación." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Ingresa el código que enviamos a {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Ingresa el código que enviamos a tu correo actual." @@ -14426,6 +14280,7 @@ msgstr "Ingresa el código que enviamos a tu correo electrónico." msgid "Enter the code shown in the app to continue." msgstr "Ingresa el código que aparece en la app para continuar." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Ingresa el código que enviamos a tu nueva dirección de correo." @@ -14434,11 +14289,6 @@ msgstr "Ingresa el código que enviamos a tu nueva dirección de correo." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Ingresa el código que enviamos a tu correo electrónico para verificarlo. Tu contraseña se establecerá una vez que se confirme el código." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Ingresa el código de correo electrónico" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Ingresa el enlace de invitación para unirte a una comunidad." @@ -14452,11 +14302,6 @@ msgstr "Ingresa el nuevo correo electrónico que quieres usar. Te enviaremos un msgid "Enter the PIN for your security key to continue." msgstr "Ingresa el PIN de tu llave de seguridad para continuar." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Ingresa el código SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Ingresa este código en tu navegador para completar el inicio de sesión." @@ -14492,11 +14337,6 @@ msgstr "Ingresa tu nombre" msgid "Enter your password." msgstr "Ingresa tu contraseña." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Ingresa tu número de teléfono" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Sonido de entrada" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Los archivos de sonido de entrada deben pesar {limit} o menos." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Biblioteca de sonidos de entrada llena" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Sonido de entrada eliminado" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Sonido de entrada guardado" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Sonidos de entrada" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Sonidos de entrada no disponibles" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Vence:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Configuración del filtro de contenido explícito" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "No se pudo copiar al portapapeles" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "No se pudo crear el webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "No se pudo cargar la URL personalizada. Intenta de nuevo." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "No se pudieron cargar los webhooks" @@ -15190,11 +15030,6 @@ msgstr "No se pudo eliminar la URL personalizada. Inténtalo de nuevo." msgid "Failed to resend code. Try again." msgstr "No se pudo reenviar el código. Intenta de nuevo." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "No se pudo reenviar el código de verificación. Intenta de nuevo más tarde." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "No se pudo enviar el mensaje. Mantén presionado para ver las opciones." msgid "Failed to send report. Try again." msgstr "No se pudo enviar el reporte. Intenta de nuevo." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "No se pudo enviar el correo electrónico de verificación. Intenta de nuevo más tarde." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "No se pudo iniciar" @@ -15551,15 +15381,15 @@ msgstr "Filtrar por usuario" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtrar los mensajes de todos" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtrar los mensajes de miembros sin roles" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Seguir este canal" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Sigue para recibir estos anuncios en un canal que elijas." @@ -15773,7 +15603,7 @@ msgstr "Canal seguido {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Canales seguidos" @@ -15857,11 +15687,6 @@ msgstr "Solo para ojos británicos..." msgid "For me" msgstr "Para mí" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Para esta verificación, nos envías un mensaje de texto en lugar de recibir uno nuestro." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Para tu seguridad, confirma que eres tú para continuar." @@ -15905,7 +15730,7 @@ msgstr "Forzar esqueleto de carga" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forzar contenido para adultos" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Forzar traslado al canal de inactividad (AFK)" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Forzar sin el permiso {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Forzar la visualización del aviso de URL personalizada" msgid "Force show voice connection" msgstr "Forzar la visualización de la conexión de voz" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Forzar modo lento activo" @@ -16020,7 +15845,7 @@ msgstr "Reenviar archivo multimedia" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Reenviar mensaje" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Superposición de bloqueo geográfico" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Georrestringido" @@ -16490,12 +16315,6 @@ msgstr "Obtén un avatar y banner animados, una insignia de suscriptor, la etiqu msgid "Get monthly" msgstr "Obtener mensualmente" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Obtener código nuevo" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Códigos de regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Duración del regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventario de regalos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Flujo de inventario de regalos" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Regalo no encontrado" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Regalo canjeado" @@ -17030,7 +16849,7 @@ msgstr "Mensaje directo grupal" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hola, {displayName}: completa el registro de tu cuenta para no perder el acceso." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hola, {displayName}: verifica tu dirección de correo electrónico." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hola {displayName}, no podemos enviar correos a tu dirección. Agrega un correo válido para verificar tu cuenta." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "¿Ocultar tu pantalla compartida?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Alto" @@ -17755,11 +17579,6 @@ msgstr "Soy una ayuda emergente" msgid "I changed my mind" msgstr "Cambié de opinión" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Necesito otra opción" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Si este reporte es sobre un mensaje específico, reporta ese mensaje. Lo msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Si este reporte es sobre mensajes específicos, reporta el mensaje más relevante. Los reportes de mensajes le dan a nuestro equipo de seguridad el contexto más claro, y agregar detalles en los comentarios nos puede ayudar a revisarlo más rápido. Solo continúa reportando al usuario en general si reportar un mensaje no capturaría el problema más amplio." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Si no puedes verificar por SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Si no puedes usar ningún método de verificación, contacta a soporte para obtener ayuda." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Tamaño de la interfaz" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Archivo de audio no válido" @@ -18674,8 +18483,10 @@ msgstr "JSON no válido. Pega la respuesta completa de la URL de arriba." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Unirse a la llamada de voz" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Unirse al canal de voz" @@ -19613,16 +19424,6 @@ msgstr "Más información sobre Visionary" msgid "Leave" msgstr "Salir" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "¿Salir de {count, plural, one {# comunidad} other {# comunidades}} y dejar esta verificación pendiente?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Salir y dejar la verificación pendiente" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Permitir que los lectores de pantalla anuncien los mensajes nuevos a medida que llegan al canal abierto. Los sonidos de notificación no se verán afectados." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Permitir que la comunidad se automodere" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Biblioteca" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Biblioteca llena ({max} sonidos como máximo). Elimina uno antes de añadir otro." @@ -19812,7 +19613,7 @@ msgstr "Biblioteca: {count} de {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "De por vida" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Cargando..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Cargando…" @@ -20261,7 +20062,7 @@ msgstr "Luisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Bajo" @@ -20416,7 +20217,7 @@ msgstr "Administrar funciones de la comunidad" msgid "Manage emoji & stickers" msgstr "Administrar emojis y stickers" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Administra los webhooks entrantes que pueden publicar mensajes en este canal." @@ -20514,7 +20315,7 @@ msgstr "Marcar todos los canales no leídos de la bandeja de entrada como leído msgid "Mark as read" msgstr "Marcar como leído" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Marcar como canjeado" @@ -20676,14 +20477,14 @@ msgstr "Comunidad para adultos" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Contenido para adultos" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Contenido para adultos y advertencias de contenido" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Duración máxima (días)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Máxima protección para espacios familiares" @@ -20924,7 +20725,7 @@ msgstr "Detener reproducción" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Miembro desbaneado" msgid "Member updated" msgstr "Miembro actualizado" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Verificación de miembros" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Nivel de verificación de miembros" @@ -21048,7 +20849,7 @@ msgstr "Los miembros se eliminan cuando están desconectados, a menos que se les msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Los miembros con el permiso \"{pinMessagesPermissionLabel}\" pueden fijar mensajes para todos." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Los miembros con roles pueden omitir estas verificaciones. Para espacios públicos, recomendamos habilitar la verificación." @@ -21153,7 +20954,7 @@ msgstr "Las menciones que recibes aparecen aquí durante {retentionDays, plural, #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Solo menciones" @@ -21292,7 +21093,7 @@ msgstr "La configuración de visualización de mensajes solo está disponible en msgid "Message editing" msgstr "Edición de mensajes" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Mensaje reenviado" @@ -21341,7 +21142,7 @@ msgstr "Botones de entrada de mensajes" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "El mensaje es demasiado largo" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Vistas previas de mensajes en la lista de mensajes directos" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Mensaje publicado" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Los mensajes publicados en #{sourceName} ahora aparecerán en #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Los mensajes publicados en estos canales de anuncios se copian aquí." @@ -21504,7 +21305,7 @@ msgstr "Los mensajes publicados en estos canales de anuncios se copian en tus ca msgid "Messages you can bookmark" msgstr "Mensajes que puedes marcar" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "La mensajería está temporalmente en pausa en esta comunidad." @@ -21733,30 +21534,30 @@ msgstr "Simular vencimiento en 1 día" msgid "Mock expires in 7 days" msgstr "Simular vencimiento en 7 días" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Simular superposición de bloqueo geográfico" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Inventario de regalos de prueba" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simular llamada entrante" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Simular motivo de restricción de acceso a canales para adultos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Simular motivo de restricción de acceso a contenido multimedia para adultos" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Simular ubicación en el Reino Unido" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Avatares de usuario de prueba en varios tamaños y todas las combinaciones de estado." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Variante de prueba" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Flujos de producto simulados" @@ -22698,14 +22494,16 @@ msgstr "Comunidad nueva silenciada" msgid "New direct message" msgstr "Nuevo mensaje directo" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Nuevo correo electrónico" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formulario para indicar un nuevo correo electrónico" @@ -22816,9 +22614,7 @@ msgstr "Más recientes primero" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Siguiente" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "No" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Sin permiso de {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Sin permiso de {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "No hay cambios para guardar" msgid "No channels available" msgstr "No hay canales disponibles" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "No se encontraron canales" @@ -23233,11 +23029,6 @@ msgstr "No se encontraron permisos" msgid "No personal words yet." msgstr "Aún no hay palabras personales." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Sin número de teléfono" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Sin resultados" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "No se encontraron resultados" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "No se encontraron usuarios" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "No se requiere verificación." @@ -23452,7 +23243,7 @@ msgstr "No se requiere verificación." msgid "No verification methods available" msgstr "No hay métodos de verificación disponibles" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "No hay webhooks" @@ -23504,7 +23295,7 @@ msgstr "No convertir" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Ninguna" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Ninguno (comportamiento normal)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Noruego" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "No es miembro desde hace suficiente tiempo" @@ -23798,9 +23589,9 @@ msgstr "Objetos" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Desactivado" @@ -23848,7 +23639,7 @@ msgstr "Más antiguos primero" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Activado" @@ -23884,11 +23675,6 @@ msgstr "No se pudieron leer o cargar uno o más archivos adjuntos. Es posible qu msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Uno o más archivos que intentas subir superan el límite de tamaño máximo de {maxSizeFormatted} por archivo." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Una verificación rápida" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Solo altavoces" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Solo el dueño de la comunidad puede cambiar esta configuración" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Abrir emoji en el navegador" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Abrir selector de emojis" @@ -24382,12 +24168,8 @@ msgstr "Icono para abrir el menú" msgid "Open message history threshold" msgstr "Abrir umbral del historial de mensajes" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Abrir superposición" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Abrir menú desplegable" @@ -24485,11 +24267,6 @@ msgstr "Abre la nueva app. Ya iniciaste sesión." msgid "Open the shortcuts list for quick actions." msgstr "Abrir la lista de atajos para acciones rápidas." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Abre el correo electrónico de verificación y usa el enlace que contiene. Esta ventana se actualizará después de que se abra el enlace." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Abrir configuración de audio y video" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Abre tu navegador, inicia sesión y luego ingresa el código a continuación para vincular tu cuenta." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Abre tus mensajes" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Abre tu antigua app de {PRODUCT_NAME}, selecciona \"Vincular un dispositivo nuevo\" y luego ingresa el código de abajo." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Abre la app de mensajes de tu teléfono y crea un mensaje de texto nuevo." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Abre tu app de mensajería y empieza un mensaje de texto nuevo." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Otra reacción…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Nuestro servicio de verificación de números de teléfono no está disponible en este momento. El problema es nuestro, no de tu número. Espera unos minutos y vuelve a intentarlo con el mismo número." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "Re Pág" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, fraude, enlaces maliciosos o afirmaciones falsas que puedan causar daños en el mundo real." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Teléfono" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Número de teléfono" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Se requiere un número de teléfono" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Número de teléfono verificado" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Se requiere volver a verificar el teléfono" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Paso del teléfono" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "La verificación telefónica no está disponible para esta cuenta. Usa otro método o contacta a soporte." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Se requiere verificación del teléfono" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Elige el número de 4 dígitos después de tu nombre de usuario" msgid "Pick the appearance this administrator account should start with." msgstr "Elige la apariencia con la que debe empezar esta cuenta de administrador." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Elige el método que puedas completar ahora." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Imagen en imagen" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Fijar" @@ -25471,7 +25176,7 @@ msgstr "Fijar MD de grupo" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Fijar o desfijar cualquier mensaje." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Fija este mensaje en el canal para que todos lo vean." @@ -26227,18 +25932,18 @@ msgstr "Color del perfil" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Personalización del perfil" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Personalización del perfil para {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formulario para personalizar el perfil" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Tipo de perfil" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Perfil actualizado" @@ -26340,7 +26045,7 @@ msgstr "Preguntar al detectar nuevos dispositivos de audio" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Coordinación de ataque" msgid "Rate" msgstr "Velocidad" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Límite de solicitudes alcanzado" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "JSON sin procesar del contenido incrustado" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "¿Eliminar a {userName} de tus amigos?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Eliminar todo" @@ -27290,7 +26990,7 @@ msgstr "¿Quitar todas las reacciones {emojiNameWithColons} de este mensaje?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Quitar todas las reacciones" @@ -27899,20 +27599,10 @@ msgstr "Etiqueta del usuario reportado (opcional)" msgid "Reposts: <0>{countLabel}" msgstr "Republicaciones: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Primero, solicita un código nuevo." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Solicitar un nuevo enlace para restablecer la contraseña" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Primero solicita un código de verificación." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Solicitudes" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Requerir 2FA para acciones de moderación" @@ -27958,7 +27648,7 @@ msgstr "Solicitar concesión de código OAuth2" msgid "Require passkey" msgstr "Requerir llave de acceso" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Requerir autenticación de dos factores a los moderadores para que puedan banear, expulsar, aplicar aislamiento temporal o eliminar mensajes." @@ -27972,46 +27662,6 @@ msgstr "Obligatorio" msgid "Required 2FA for moderation actions" msgstr "Se requirió 2FA para las acciones de moderación" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Pestaña predeterminada de acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Flujo de acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Paso de teléfono de acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Reenviando acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Resultado de reenvío de acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Texto de reverificación de acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Variante de acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Superposición de acciones requeridas" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Requiere una URI de redireccionamiento y un código de autorización al invitar a este bot." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Requiere una dirección de correo electrónico verificada y una cuenta con al menos 5 minutos de antigüedad." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Requiere una dirección de correo electrónico verificada." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Requiere un número de teléfono verificado." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Requiere todo lo de nivel medio, además de ser miembro de la comunidad por al menos 10 minutos." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Reenviar ({resendSecondsRemaining} s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Reenviar ({secondsRemaining} s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Cargando botón de reenviar" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Reenviar código" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Reenviar correo" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Resultado del reenvío" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Reenviado" @@ -28518,21 +28152,6 @@ msgstr "Mostrar" msgid "Reveal spoiler" msgstr "Mostrar spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Vuelve a verificar tu correo electrónico o verifica tu teléfono para seguir usando {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Vuelve a verificar tu correo electrónico para seguir usando {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Vuelve a verificar tu número de teléfono para seguir usando {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Saturación" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Vista previa al recorrer el video" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Buscar canales" msgid "Search communities" msgstr "Buscar comunidades" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Buscar países..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Buscar países…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Selecciona tu país de residencia." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Selecciona…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Enviar" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Enviar ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Enviar otro reporte" msgid "Send button" msgstr "Botón de enviar" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Enviar código" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Enviar mensajes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Envío de mensajes deshabilitado" @@ -30151,32 +29759,11 @@ msgstr "Enviar contenido multimedia guardado {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Enviar mensajes con síntesis de voz mediante /tts. Los miembros que tengan activada la síntesis de voz los oirán en voz alta." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Enviar el código <0>{0} a <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Envía el código al número de teléfono de abajo." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Enviar este código" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "¿Enviar este mensaje fijado al pasado?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Enviar a" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Enviar mensaje de voz" msgid "Send:" msgstr "Enviar:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Enviar un SMS a este número de teléfono es demasiado costoso para {PRODUCT_NAME}, por lo que necesitamos que nos envíes un SMS tú. Sabemos que esto no es lo ideal. También puedes pedir a los administradores de esta instancia que eliminen este requisito de tu cuenta." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Enviar un SMS a este número de teléfono es demasiado costoso para {PRODUCT_NAME}, por lo que necesitamos que nos envíes un SMS tú. Sabemos que esto no es lo ideal. También puedes contactar a <0>{SUPPORT_EMAIL} para que eliminemos este requisito de tu cuenta." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Enviar en serie" msgid "Serve the token file" msgstr "Proporciona el archivo de token" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Error del servicio" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Establecer atajo personalizado para \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Establecer estado personalizado" @@ -30486,18 +30060,6 @@ msgstr "Se estableció la región de voz en {region}" msgid "Set the voice region to automatic" msgstr "Se estableció la región de voz en automática" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Dejar esta verificación pendiente" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "¿Dejar esta verificación pendiente?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Elige tus pronombres" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Establece tu estado" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Los atajos se pausan durante la grabación." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Acorta el mensaje e inténtalo de nuevo." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Mostrar un ícono de {productName} en la bandeja del sistema o en la barra de menú" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Mostrar una advertencia de contenido" @@ -31672,7 +31234,7 @@ msgstr "Modo lento · espera {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Modo lento activado" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "El modo lento está configurado en {durationLabel}. Espera antes de enviar otro mensaje." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Tiempo restante del modo lento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulación de modo lento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Tiempo restante del modo lento" @@ -31807,11 +31369,6 @@ msgstr "Desplazamiento suave" msgid "Smoother video" msgstr "Video más fluido" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "La verificación por SMS no está disponible en este momento. Intenta de nuevo más tarde o contacta a soporte." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Algo salió mal al preparar este sticker. Prueba con otro archivo o vuelve a intentarlo en un momento." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Algo salió mal al publicar. Intenta de nuevo en un momento." @@ -32009,11 +31566,9 @@ msgstr "Algo salió mal. Vuelve a cargar la página o inicia sesión de nuevo." msgid "Something went wrong. Try again later." msgstr "Algo salió mal. Intenta de nuevo más tarde." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Algo salió mal. Intenta de nuevo." @@ -32352,11 +31907,6 @@ msgstr "Se agotó el tiempo de espera del inicio de sesión único (SSO). Intent msgid "Staff controls" msgstr "Controles de personal" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Pueden aplicarse las tarifas de mensajería estándar de tu operador." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Animación de estrella" msgid "Starred channels" msgstr "Canales favoritos" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Transporte del suscriptor:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Suscripción" @@ -33051,14 +32599,12 @@ msgstr "Escenarios de suscripción" msgid "Subtext" msgstr "Subtexto" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Éxito" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Sugerido para la mayoría de las comunidades" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Sistema y bienvenida" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Anuncios del personal de {productName}. No puedes responder aquí." @@ -33765,11 +33311,6 @@ msgstr "Selección de texto" msgid "Text size" msgstr "Tamaño del texto" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Envíanos un mensaje de texto desde tu teléfono" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Tailandés" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Gracias por ayudarnos a mantener {productName} seguro. Revisaremos tu reporte lo antes posible." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Ese código no funcionó. Revísalo e inténtalo de nuevo." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Ese código caducó. Solicita un código nuevo." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "El proceso no se completó. Es posible que ya hayas salido de algunas comunidades y tu cuenta sigue bloqueada. Presiona \"Dejar esta verificación pendiente\" de nuevo para finalizar." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "No se pudo completar. Nada cambió. Intenta de nuevo." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "No parece un color válido. Prueba con hexadecimal, rgb(), hsl() o un no msgid "That doesn't look like a valid URL." msgstr "Parece que no es una URL válida." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Ese correo electrónico ya está en uso." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Los permisos específicos denegaban {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "La página que buscas no existe o se movió." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "La verificación del teléfono ha quedado pendiente. Falta un paso por correo electrónico." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "No hay canales disponibles para crear una invitación." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "No hay roles para asignar en esta comunidad en este momento, pero puedes crear un rol nuevo en <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "No hay webhooks configurados para este canal. Crea un webhook para permitir que las aplicaciones externas publiquen mensajes." @@ -34273,7 +33784,7 @@ msgstr "Hubo un error al cargar las invitaciones. Intenta de nuevo." msgid "There was an error loading the stickers. Try again." msgstr "Hubo un error al cargar los stickers. Intenta de nuevo." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Hubo un error al cargar los webhooks de este canal. Intenta de nuevo." @@ -34417,7 +33928,7 @@ msgstr "Este canal puede publicar 10 mensajes seguidos y luego uno más cada 6 m msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Este canal puede publicar 10 mensajes seguidos, y luego uno más cada 6 minutos. Intenta de nuevo en unos minutos." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Este canal no admite webhooks." @@ -34550,12 +34061,12 @@ msgstr "Esta conexión no se ha verificado." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Esto contiene contenido delicado." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Esta conversación ya no está disponible." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Este grupo tiene demasiadas personas" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Este grupo está lleno. Elimina a alguien antes de agregar a más personas." @@ -34715,11 +34226,6 @@ msgstr "Este es un sticker personalizado de una comunidad." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Este es un canal con restricciones de edad. Las actualizaciones solo pueden enviarse a canales con restricciones de edad." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Esta es una verificación antispam. Tu número de teléfono no está vinculado a tu cuenta." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Esto está deshabilitado" msgid "This is how messages appear" msgstr "Así se ven los mensajes" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Esto no está disponible en tu cuenta en este momento. Pide a los administradores de esta instancia que lo revisen." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Esto no está disponible en tu cuenta en este momento. Envía un correo a {supportEmail} y una persona lo revisará." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Este no es el canal que buscas." @@ -34792,11 +34288,6 @@ msgstr "Esta es tu última llave de acceso y las llaves de acceso son tu segundo msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Esta es tu última llave de acceso. Una vez que la elimines, no podrás usar una llave de acceso como segundo factor." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Este no es un número de celular, por lo que no puede recibir nuestros SMS. Prueba con un número de celular o contacta a soporte si crees que es un error." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Este mensaje ya se eliminó." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Este mensaje ya se publicó" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Este mensaje ya no existe." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Este apodo solo será visible en esta comunidad" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Este número se verifica enviándonos un mensaje de texto. Vuelve atrás e inicia la verificación telefónica de nuevo para obtener el código y el número al que enviarlo." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Para verificar este número, debes enviarnos un SMS en lugar de recibir uno nuestro." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Este participante tiene el sonido desactivado" msgid "This participant was deafened by moderators" msgstr "Los moderadores desactivaron el sonido de este participante" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "No se puede usar este número de teléfono. Prueba con otro número de celular o contacta a soporte." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Este número de teléfono ya ha sido utilizado. Prueba con otro número o contacta a soporte." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Este usuario no tiene roles en esta comunidad." msgid "This user is already banned from the community." msgstr "Este usuario ya está baneado de la comunidad." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Este usuario ya no está disponible." @@ -35065,11 +34536,6 @@ msgstr "Un administrador de la plataforma forzó la incorporación de este usuar msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Esta sesión de verificación caducó. Vuelve a {productName} e inicia el proceso de pago de nuevo." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Esta sesión de verificación caducó. Vuelve a empezar." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Esto cerrará tu sesión, borrará los archivos en caché y las sesiones msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Esto confiará en todos los enlaces externos y omitirá la advertencia para cada dominio. Tus dominios de confianza existentes serán reemplazados. Esto es menos seguro." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Esta ventana se actualiza automáticamente después de que recibamos tu mensaje." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Barra de título" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Plataforma de la barra de título" @@ -35470,18 +34931,11 @@ msgstr "Mapeo de tonos" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Mapear el tono de las imágenes HDR al rango estándar, reduciendo el brillo máximo." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Demasiados intentos. Espera un poco y vuelve a intentarlo." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Demasiadas comunidades" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Demasiadas solicitudes. Intenta de nuevo más tarde." @@ -36151,8 +35605,10 @@ msgstr "No se pudieron preparar los emojis para subir. Ocurrieron los siguientes #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "No disponible" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Sin categoría" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Cuenta con registro pendiente" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Sin numerar" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Desfijar" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Desfijar mensaje" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "¿Desfijar este mensaje?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Cambios sin guardar" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Archivo de audio no compatible." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Hasta que lo vuelva a activar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Correo electrónico sin verificar" @@ -36958,12 +36414,7 @@ msgstr "Actualiza {productName} para ver este mensaje." msgid "Update app" msgstr "Actualizar la app" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Actualizar correo electrónico" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Actualizar mi estado" @@ -37306,18 +36757,13 @@ msgstr "Usa {url} donde se deba insertar la URL de la imagen." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Usa una ventana específica para establecer una fecha de corte del historial de mensajes para los miembros que no tienen el permiso {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Usa una dirección de correo electrónico diferente y verifícala con un código." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Usar real" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Usar el tipo premium actual" @@ -37335,16 +36781,6 @@ msgstr "Usar otro método" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Usa una aplicación de autenticación para generar códigos de autenticación de dos factores" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Usa una dirección de correo electrónico a la que tengas acceso. Te enviaremos un código allí." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Usa un correo electrónico diferente al actual." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Usar tema oscuro en toda la aplicación" msgid "Use default" msgstr "Usar predeterminado" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Usar otro correo electrónico" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Usar correo electrónico" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "¿Usar llaves de acceso para la autenticación de dos factores?" msgid "Use passkeys to sign in without a password" msgstr "Usa llaves de acceso para iniciar sesión sin contraseña" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Usar teléfono" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Usar texto de reverificación" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "El usuario cambia de canal" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Usuario no encontrado" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Verificación" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Verificación y requisitos de acceso a comunidades" @@ -37970,15 +37387,8 @@ msgstr "Código de verificación" msgid "Verification code sent" msgstr "Código de verificación enviado" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Código de verificación enviado. Revisa la bandeja de entrada de tu nuevo correo." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Correo electrónico de verificación enviado. Revisa tu bandeja de entrada." @@ -38038,23 +37448,6 @@ msgstr "Formulario de verificación de identidad" msgid "Verify it's you" msgstr "Verifica que eres tú" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Verificar teléfono" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Verificar número de teléfono" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formulario para verificar el número de teléfono" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Verifica tu correo electrónico antes de agregar una aplicación de autenticación." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Verifica tu correo electrónico antes de cambiar tu apodo de la comunidad, avatar, banner, biografía, pronombres o color de énfasis." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Verifica tu correo electrónico antes de cambiar tu nombre de usuario, nombre visible, avatar, banner, biografía, pronombres, zona horaria o la privacidad de tu insignia de {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Verifica tu correo electrónico antes de editar este perfil de la comunidad. Aún puedes previsualizarlo aquí." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Verifica tu correo electrónico antes de editar tu perfil. Aún puedes previsualizarlo aquí." @@ -38113,11 +37506,6 @@ msgstr "Verifica tu correo electrónico antes de enviar solicitudes de amistad." msgid "Verify your email first" msgstr "Verifica tu correo electrónico primero" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Verifica tu correo electrónico o teléfono para seguir usando {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Verifica tu correo electrónico para comprar regalos." msgid "Verify your email to change your username" msgstr "Verifica tu correo para cambiar tu nombre de usuario" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Verifica tu correo electrónico para seguir usando {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Verifica tu correo electrónico para editar este perfil de la comunidad" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Verifica tu correo para editar tu perfil" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Versión" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Muy alto" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Subir volumen" msgid "Wait a moment before deleting more messages." msgstr "Espera un momento antes de eliminar más mensajes." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Espera un momento. Esta ventana se cerrará automáticamente cuando recibamos tu mensaje." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Tiempo de espera entre mensajes. Los miembros con el permiso \"{bypassSlowmodePermissionLabel}\" pueden omitirlo." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Espera aquí" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Esperando la llave de acceso…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Esperando que el modo lento en {forwardChannelDisplayName} expire." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Esperando que el modo lento en uno o más canales seleccionados expire." @@ -39115,16 +38482,6 @@ msgstr "No pudimos leer este tema. Puede que esté dañado o no sea válido." msgid "We couldn't remove that account. Try again." msgstr "No pudimos eliminar esa cuenta. Intenta de nuevo." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "No pudimos verificar este número automáticamente. Ponte en contacto con soporte y una persona revisará tu cuenta." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "No enviamos mensajes de verificación a este país. Prueba con un número de celular de otro país o contacta a soporte." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Encontramos una suscripción a {premiumProductFullName} existente para e msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Bajamos el precio de {premiumProductName} en Brasil. Ahora cuesta {monthlyPrice} al mes o {yearlyPrice} al año." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Necesitamos un paso de verificación antes de que continúes. Esto ayuda a proteger las cuentas y a mantener el spam fuera de {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Necesitamos dos pasos de verificación antes de que puedas continuar. Te mostraremos un paso a la vez." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Te recomendamos guardar estos códigos ahora para que no pierdas el acceso a tu cuenta." @@ -39167,11 +38514,6 @@ msgstr "Enviamos un código a {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Vamos a rellenar automáticamente {prefillEmail} cuando se abra el inicio de sesión en el navegador." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Te enviaremos un código por SMS cuando esté disponible." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Nos encantaría darte más de una vida de {PREMIUM_PRODUCT_NAME}, pero eso rompería el continuo espacio-tiempo. ¿Mejor le envías el regalo a un amigo?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Lo procesaremos lo antes posible. Recibirás un correo electrónico cuando tu archivo esté listo." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Restauraremos tu correo electrónico anterior, cerraremos las sesiones antiguas, eliminaremos los números de teléfono, desactivaremos la autenticación multifactor y protegeremos tu cuenta con una nueva contraseña." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Restauraremos tu correo anterior, cerraremos sesión en las sesiones antiguas, deshabilitaremos la MFA y aseguraremos tu cuenta con una nueva contraseña." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Te enviaremos un código de verificación a tu correo electrónico antes msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Te enviaremos un código de verificación a tu correo electrónico antes de que puedas ver tus códigos de respaldo." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Enviaremos un código SMS cuando esté disponible. Tu número no está vinculado a tu cuenta. Solo guardamos un marcador cifrado, sin ID de usuario, por tiempo limitado." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Verificaremos tu correo electrónico actual y luego el nuevo con códigos de un solo uso." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook creado" @@ -39331,7 +38669,7 @@ msgstr "Webhook actualizado" msgid "Webhook URL" msgstr "URL del webhook" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooks" @@ -39486,8 +38824,8 @@ msgstr "Lo que estás compartiendo no se está actualizando" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "¿Qué pasa?" @@ -39967,21 +39305,11 @@ msgstr "Puedes quitar el permiso <0>{readMessageHistoryPermissionLabel} del msgid "You can sign back in at any time." msgstr "Puedes volver a iniciar sesión en cualquier momento." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Puedes pedirles una revisión humana a los administradores de esta instancia en cualquier momento." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Aún puedes crear una cuenta o iniciar sesión. Si las invitaciones se vuelven a habilitar más tarde, puedes usar este mismo enlace para unirte." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Aún puedes enviarnos un correo a {supportEmail} para una revisión humana en cualquier momento." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Puedes usar enlaces, emojis y Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "No puedes agregar expresiones ahí" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "No puedes agregar reacciones nuevas mientras estés en aislamiento temporal." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "No puedes ser tu propio amigo" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "No puedes cambiar tu apodo aquí" @@ -40094,7 +39422,7 @@ msgstr "No puedes enviarte una solicitud de amistad a ti mismo." msgid "You can't send messages in this channel." msgstr "No puedes enviar mensajes en este canal." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "No puedes enviar mensajes en esta comunidad." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "No tienes permiso para hacer esto con este miembro." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "No tienes permiso para unirte a este canal de voz" @@ -40243,7 +39571,7 @@ msgstr "No tienes permiso para cambiar el nombre de este emoji. El nombre se res msgid "You have been banned from this community." msgstr "Te han baneado de esta comunidad." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Bloqueaste a {username}. Desbloquéalo para enviarle mensajes." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Tienes cambios sin guardar." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Tienes cambios sin guardar. Guarda o restablece antes de salir." @@ -40270,7 +39598,7 @@ msgstr "Tienes cambios sin guardar. Guarda o restablece antes de salir." msgid "You haven't authorized any applications to access your account." msgstr "No autorizaste ninguna aplicación para acceder a tu cuenta." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "No has sido miembro de esta comunidad el tiempo suficiente para enviar mensajes." @@ -40326,11 +39654,6 @@ msgstr "Debes aceptar los Términos del servicio para crear una cuenta" msgid "You must verify your email before sending a report." msgstr "Debes verificar tu correo electrónico antes de enviar un reporte." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Necesitas acceso a tu correo electrónico actual para cambiarlo desde aquí. Usa la verificación por teléfono si está disponible o contacta a soporte." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Necesitas el permiso \"{manageRolesPermissionLabel}\" para editar estos msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Necesitas el permiso \"{manageRolesPermissionLabel}\" para editar estos permisos." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Necesitas el permiso \"{manageWebhooksPermissionLabel}\" para ver y editar los webhooks de este canal." @@ -40384,18 +39707,14 @@ msgstr "Debes completar el registro de tu cuenta antes de poder crear una comuni msgid "You need to claim your account before you can start a direct message." msgstr "Debes completar el registro de tu cuenta antes de poder iniciar una conversación por mensaje directo." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Debes completar el registro de tu cuenta para enviar mensajes directos." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Debes completar el registro de tu cuenta para enviar mensajes en esta comunidad." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Necesitas verificar un número de teléfono para enviar mensajes en esta comunidad." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Debes verificar tu dirección de correo electrónico antes de poder inic msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Debes verificar tu correo electrónico antes de poder comprar {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Necesitas verificar tu correo electrónico para enviar mensajes en esta comunidad." @@ -40424,11 +39743,6 @@ msgstr "Necesitas verificar tu correo electrónico para enviar mensajes en esta msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Tú o alguien a quien estás agregando ya tiene el número máximo de chats grupales abiertos. Sal de uno y vuelve a intentarlo." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Te quedas en {ownedNames}. Los propietarios no pueden abandonar su propia comunidad." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Los moderadores desactivaron tu sonido" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Se te redirigirá a {redirectHostname} después de autorizar." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Saldrás de {count, plural, one {# comunidad a la que se aplica esta verificación} other {# comunidades a las que se aplica esta verificación}} y tu cuenta volverá a funcionar con normalidad." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Saldrás de {guildNames}. Nada de lo que publicaste se elimina y puedes volver a unirte más tarde." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Aún necesitarás completar el paso del correo electrónico." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Vas demasiado rápido" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Vas demasiado rápido. Espera un momento e inténtalo de nuevo." @@ -40636,7 +39935,7 @@ msgstr "Estás enviando mensajes muy rápido" msgid "You're streaming!" msgstr "¡Estás transmitiendo!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Estás en aislamiento temporal. No puedes enviar mensajes, reaccionar ni conectarte a canales de voz hasta que termine." @@ -40764,25 +40063,25 @@ msgstr "Tu pago de renovación en {storeName} falló, pero los <0/> siguen activ msgid "Your account" msgstr "Tu cuenta" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Tu cuenta vuelve a la normalidad de inmediato y no necesitarás un número de teléfono ahora. Esta no es una exención permanente y podemos volver a solicitar esta verificación más adelante." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Tu cuenta se vinculó correctamente. Ahora puedes cerrar esta pestaña y volver a la aplicación." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Tu cuenta volvió a la normalidad." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Tu cuenta tiene limitaciones" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Tu cuenta está limitada. Revisa tu correo electrónico para saber cómo levantarla." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Aún no has completado el registro de tu cuenta. Sin un correo electrónico y una contraseña, no podrás iniciar sesión desde otros dispositivos y podrías perder el acceso. Completa el registro ahora para proteger tu cuenta." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Tu cuenta es demasiado nueva para enviar mensajes en esta comunidad." @@ -40800,11 +40099,6 @@ msgstr "Tu cuenta requiere autenticación multifactor, pero no hay métodos comp msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Tu cuenta ya no estará protegida por autenticación de dos factores al iniciar sesión con tu contraseña. También perderás los permisos elevados en servidores que requieren autenticación de dos factores." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Tu cuenta vuelve a funcionar con normalidad de inmediato y no se elimina nada. Podemos solicitar esta verificación más tarde." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Estamos comprobando si tu tarjeta cumple los requisitos para acceder a p msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Tu tarjeta cumple los requisitos. Te estamos redirigiendo a la página de pago." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Tu operador dice que este número no está en servicio. Verifícalo e inténtalo de nuevo, o contacta a soporte si es correcto." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Tus cambios llegan a todas las comunidades que siguen este canal, lo que puede tardar un minuto. Cada mensaje publicado permite 3 ediciones rápidas, luego 1 cada 20 minutos." @@ -40869,21 +40158,6 @@ msgstr "Tu dispositivo te pedirá que guardes una llave de acceso actualizada pa msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Tu dispositivo te pedirá que guardes una llave de acceso actualizada para {name}. Usa el mismo teléfono o llave de seguridad que acabas de usar." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Tu dirección de correo electrónico se actualizó." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Tu correo electrónico no pudo recibir mensajes. Agrega una dirección que funcione para que podamos contactarte." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Tu correo electrónico no pudo recibir mensajes. Actualízalo para seguir usando {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Tu correo electrónico ha sido verificado. Ahora puedes iniciar sesión en tu cuenta." @@ -41000,21 +40274,11 @@ msgstr "No se pudo actualizar tu mensaje" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Tu compra más reciente ya no está dentro del período de reembolso. Contacta a soporte técnico para problemas de facturación." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "tu nuevo correo electrónico" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Tu nuevo apodo, o déjalo en blanco para restablecerlo." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Tu número no está vinculado a tu cuenta. Solo conservamos un marcador cifrado, sin ID de usuario, por tiempo limitado." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Se canceló tu pago. Ahora puedes cerrar esta pestaña y volver a la aplicación." @@ -41054,11 +40318,6 @@ msgstr "Tus regalos comprados" msgid "your region" msgstr "tu región" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Tu registro necesita una verificación antispam adicional antes de que puedas continuar." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/es-ES/messages.po b/fluxer_app/src/features/i18n/locales/es-ES/messages.po index 635eed093..d450b5cdb 100644 --- a/fluxer_app/src/features/i18n/locales/es-ES/messages.po +++ b/fluxer_app/src/features/i18n/locales/es-ES/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reacción} other {# reacciones}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# persona que reaccionó} other {# personas que reaccionaron}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# segundo} other {# segundos}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} a las {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Tu enlace de invitación caduca en # segundo.} many {Tu enlace de invitación caduca en # segundos.} other {Tu enlace de invitación caduca en # segundos.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount, plural, one {# seleccionado} other {# seleccionados}}" @@ -2252,7 +2252,7 @@ msgstr "1 minuto" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 horas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 meses (1 año)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Códigos de respaldo de 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Requisito de 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 miembros (escribiendo)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 meses" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 horas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 meses" @@ -2575,11 +2575,6 @@ msgstr "un minuto" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Hay una nueva versión de escritorio disponible. Descarga el instalador y ejecútalo para actualizar {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Se ha enviado un nuevo código de verificación." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Datos de la cuenta" msgid "Account exists to spam, scam, or abuse the platform." msgstr "La cuenta existe para enviar spam, estafar o abusar de la plataforma." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Cuenta limitada" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Estado de la cuenta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Cuenta demasiado nueva" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Verificación de cuenta necesaria" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Añadir un bot a una comunidad con los permisos solicitados" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Añadir un comentario (opcional)" @@ -3054,8 +3052,10 @@ msgstr "Añadir un tema a este canal" msgid "Add a word…" msgstr "Añadir una palabra…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Añade un correo electrónico que funcione" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Añade una cuenta para continuar." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Añade primero un correo electrónico y una contraseña a tu cuenta." @@ -3424,11 +3424,6 @@ msgstr "Añadido: {createdDate} • Últ. uso: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Comentarios adicionales (opcional)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Verificación adicional necesaria" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Todos los idiomas" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Cancelación ya programada" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "También denunciar este mensaje al equipo de seguridad de {productName}" @@ -4713,11 +4708,6 @@ msgstr "Preguntar antes de iniciar llamadas" msgid "Ask for a passkey after your password when you sign in" msgstr "Solicitar una clave de acceso después de tu contraseña al iniciar sesión" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Pide a los administradores de esta instancia que revisen tu cuenta. Esta instancia funciona de forma independiente y solo sus administradores pueden modificar tu cuenta." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Elimina automáticamente los parámetros de seguimiento (como utm_source msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Eliminar automáticamente los parámetros de seguimiento de las URL en los mensajes que envías" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Filtra automáticamente los mensajes con contenido explícito en los canales no marcados como contenido para adultos." @@ -5359,8 +5349,6 @@ msgstr "Ausente ahora mismo" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Atrás" @@ -6506,11 +6494,6 @@ msgstr "Las cámaras y los dispositivos de captura virtual se seleccionan aquí msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Las cámaras están desactivadas si hay más de {voiceChannelCameraUserLimit, plural, one {# participante} other {# participantes}}" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "¿No puedes acceder a ese correo electrónico?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "No se pueden subir archivos aquí" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "No se pueden subir archivos aquí" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Cambiar correo electrónico" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Cambiar emoji" @@ -7201,7 +7184,7 @@ msgstr "Se ha cambiado el límite de usuarios de {oldCount} a {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Se cambió la URL personalizada de {oldCode} a {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Se cambió el nivel de verificación de {oldLevel} a {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Canal o categoría" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Permisos específicos del canal" @@ -7509,8 +7492,6 @@ msgstr "Comprueba tu conexión y vuelve a intentarlo." msgid "Check your connection, then try again." msgstr "Comprueba tu conexión y vuelve a intentarlo." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Elige una pantalla en el selector de tu sistema" msgid "Choose a GIF" msgstr "Elige un GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Elige un método" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Elige una nueva contraseña." @@ -7680,8 +7656,8 @@ msgstr "Elige una acción." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Elige un emoji" @@ -7749,11 +7725,6 @@ msgstr "Elige cómo funciona tu instancia" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Elige uno de los métodos siguientes para verificar la propiedad del dominio. Solo tienes que completar uno." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Elige un método de verificación. Cualquiera de los dos puede superar esta comprobación." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Elige qué puede hacer {clientLabel} en tu comunidad. Desmarca los permi msgid "Choose what friends see in their active now panel" msgstr "Elige lo que ven tus amigos en su panel de actividad actual" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Elige qué deben tener los miembros antes de que puedan publicar o enviar mensajes directos a los miembros de la comunidad." @@ -8030,8 +8001,8 @@ msgstr "Mejora el micrófono para que la voz se escuche con claridad." msgid "Clear" msgstr "Borrar" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Borrar después de" @@ -8053,7 +8024,7 @@ msgstr "Borrar todos los archivos adjuntos de prueba" msgid "Clear all token overrides" msgstr "Borrar todas las personalizaciones de variables" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Borrar simulaciones de adjuntos" @@ -8066,14 +8037,14 @@ msgstr "Borrar comando" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Borrar estado personalizado" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "¿Borrar todas las reacciones de este mensaje?" @@ -8124,7 +8095,7 @@ msgstr "Borrar búsqueda" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Tema carbón" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Comandos" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Los comentarios están desactivados porque uno o varios de los canales seleccionados tienen el modo lento activado. El comentario se bloquearía por el modo lento justo después del reenvío." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Los comentarios están deshabilitados porque el modo lento está activado en {forwardChannelDisplayName}. El comentario se bloquearía por el modo lento justo después del reenvío." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Los comentarios no están disponibles mientras el modo lento esté activado." @@ -8670,11 +8639,11 @@ msgstr "Comunidades" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Las comunidades y canales donde no puedes administrar webhooks están ocultos." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Las comunidades que aparecen en Descubrir deben analizar los mensajes de todos los miembros. Este ajuste no se puede cambiar mientras Descubrir esté activado." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Las comunidades que aparecen en Descubrir requieren al menos un correo electrónico verificado. No se puede seleccionar Ninguno mientras Descubrir esté activado." @@ -8827,7 +8796,7 @@ msgstr "Nombre de la comunidad" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Apodo en la comunidad" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Perfil en la comunidad" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Perfil en la comunidad actualizado" @@ -8907,7 +8876,7 @@ msgstr "Nivel de insignias de no leídos de la comunidad" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Comunidad actualizada" @@ -8952,11 +8921,6 @@ msgstr "Comparación" msgid "Complete mature content check" msgstr "Completar verificación de contenido para adultos" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Completa una de las rutas de verificación a continuación para seguir usando {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Completar pago" msgid "Complete the mature content check to unlock mature media." msgstr "Completa la verificación de contenido para adultos para desbloquear el contenido para adultos." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Completa los pasos de verificación de correo electrónico y teléfono que se indican a continuación para seguir usando {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Completa la verificación requerida para seguir usando {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Configura tu insignia de perfil" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Conexiones reordenadas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Se requiere consentimiento" @@ -9349,16 +9304,6 @@ msgstr "Crea una URL de autorización con ámbitos y permisos." msgid "Contact" msgstr "Contacto" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Contactar con soporte" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Contacta con los administradores de esta instancia para obtener ayuda." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Creador de contenido" msgid "Content filter" msgstr "Filtro de contenido" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Filtro de contenido" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Indicación del tipo de contenido" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Controles de seguridad del contenido" @@ -9416,12 +9361,10 @@ msgstr "Los menús contextuales se pueden abrir con un clic izquierdo (en botone #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Controla el comportamiento del indicador de mensajes no leídos para los msgid "Control which chat updates are announced by assistive technology." msgstr "Controla qué actualizaciones del chat anuncia la tecnología de asistencia." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Conversación no encontrada" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "No se pudo añadir la etiqueta" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "No se ha podido añadir a este amigo al grupo. Inténtalo de nuevo." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "No se pudo añadir al grupo" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "No se ha podido crear un enlace del tema" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "No se pudo crear el enlace de invitación" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "No se ha podido finalizar tu período de gracia" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "No se ha podido generar un enlace de invitación. Inténtalo de nuevo." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "No se pudo procesar la imagen" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "No se ha podido publicar este mensaje" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "No has podido volver a unirte a la comunidad Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "No se pudo eliminar el sonido de entrada" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "No se pudieron guardar los ajustes del canal" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "No se pudo guardar el sonido de entrada" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "No se pudo retirar la solicitud" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Temporizador de cuenta atrás" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "País" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Crear la cuenta de administrador" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "¿Crear el MD de grupo con {addableCount, plural, one {# destinatario restante} other {# destinatarios restantes}} y omitir a los demás?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Crear webhook" @@ -10948,7 +10884,7 @@ msgstr "Emoji personalizado {emojiName} de una comunidad" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Los sonidos de entrada personalizados no están activados en esta instancia." @@ -11108,7 +11044,7 @@ msgstr "Procesamiento de voz personalizado" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Texto de advertencia personalizado" @@ -11530,11 +11466,6 @@ msgstr "Motor de búsqueda predeterminado" msgid "Default shortcuts" msgstr "Atajos predeterminados" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Pestaña predeterminada" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Eliminar este mensaje" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "¿Eliminar este mensaje? No se puede deshacer." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "¿Eliminar este mensaje? No se puede deshacer. Este mensaje también se eliminará de todas las comunidades que sigan este canal." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Modo de desarrollador" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Opción de desarrollador" @@ -12299,7 +12230,7 @@ msgstr "Entrada directa" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Modo de visualización" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Nombre visible" @@ -12858,7 +12789,7 @@ msgstr "¿Quieres unirte a {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, soy del futuro. Vine aquí en una máquina del tiempo que tú inventaste. Ahora, necesito tu ayuda para volver al año 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Editar hora local del perfil" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "¿Editar mensaje publicado?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Editar tus mensajes de arriba o de abajo" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Edita el aspecto de tu perfil y mira una previsualización en vivo" @@ -13590,10 +13521,8 @@ msgstr "Puedes solicitar un reembolso hasta el {windowEndsOn}. Esto también can msgid "Email" msgstr "Correo electrónico" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Se requiere una dirección de correo electrónico." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Correo electrónico cambiado" @@ -13616,49 +13547,17 @@ msgstr "Correo electrónico cambiado" msgid "Email delivery" msgstr "Entrega de correo electrónico" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Correo electrónico o teléfono" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Es necesario volver a verificar el correo electrónico o el teléfono" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Es necesario volver a verificar el correo electrónico" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Correo electrónico no disponible" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "La actualización del correo electrónico no está disponible en este momento. Inténtalo de nuevo más tarde o contacta con el soporte." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Actualización de correo electrónico necesaria" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Envíanos un correo y una persona revisará tu cuenta. Indica que no puedes verificar por SMS y nos encargaremos del resto. Las respuestas llegan por correo electrónico, así que no es instantáneo." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Barra de notificación de verificación de correo electrónico" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Verificación de correo electrónico requerida" @@ -13675,6 +13574,10 @@ msgstr "Forzar correo electrónico verificado" msgid "Email verified successfully" msgstr "Correo electrónico verificado correctamente" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Los correos a tu dirección actual no se están entregando. Introduce un nuevo correo y te enviaremos un código ahí." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Contenido incrustado" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Elementos incrustados suprimidos" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Contenido incrustado restaurado" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Activar la reproducción de voz de /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Activa la autenticación de dos factores en tu cuenta para cambiar este ajuste" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Introduce una URL o código de plantilla de {theOtherPlatform} válido." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Introduce una dirección de correo electrónico válida." @@ -14298,33 +14199,11 @@ msgstr "Introduce una dirección de correo electrónico válida." msgid "Enter a valid message link." msgstr "Introduce un enlace de mensaje válido." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Introduce un número de teléfono móvil válido." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Introduce un número de teléfono válido" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Introduce un nombre de usuario válido ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Introduce una dirección de correo electrónico a la que tengas acceso. Te enviaremos un código allí." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Introducir código" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Entrar en pantalla completa" msgid "Enter gift code…" msgstr "Introduce el código de regalo…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Introduce el nuevo correo electrónico" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Introduce uno de tus códigos de respaldo si no puedes usar tu clave de msgid "Enter one of your backup codes." msgstr "Introduce uno de tus códigos de respaldo." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Introduce el número de teléfono" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Introduce el código de {digitCount} dígitos de tu aplicación de auten msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Introduce el código de {digitCount} dígitos de tu aplicación de autenticación." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Introduce el código de {digitCount} dígitos enviado a {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Introduce el código de {MFA_CODE_DIGIT_COUNT} dígitos que te hemos enviado a {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Introduce el código" @@ -14408,11 +14267,6 @@ msgstr "Introduce el código antes de continuar." msgid "Enter the code from your authenticator app." msgstr "Introduce el código de tu aplicación de autenticación." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Introduce el código enviado a {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Introduce el código enviado a tu correo electrónico actual." @@ -14426,6 +14280,7 @@ msgstr "Introduce el código enviado a tu correo electrónico." msgid "Enter the code shown in the app to continue." msgstr "Introduce el código que aparece en la aplicación para continuar." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Introduce el código que te hemos enviado por correo electrónico a tu nueva dirección." @@ -14434,11 +14289,6 @@ msgstr "Introduce el código que te hemos enviado por correo electrónico a tu n msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Introduce el código que te hemos enviado a tu correo electrónico para verificarlo. Tu contraseña se establecerá una vez que se confirme el código." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Introduce el código de correo electrónico" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Introduce el enlace de invitación para unirte a una comunidad." @@ -14452,11 +14302,6 @@ msgstr "Introduce el nuevo correo electrónico que quieres usar. Te enviaremos u msgid "Enter the PIN for your security key to continue." msgstr "Introduce el PIN de tu llave de seguridad para continuar." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Introduce el código SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Introduce este código en tu navegador para completar el inicio de sesión." @@ -14492,11 +14337,6 @@ msgstr "Introduce tu nombre" msgid "Enter your password." msgstr "Introduce tu contraseña." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Introduce tu número de teléfono" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Sonido de entrada" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Los archivos de sonido de entrada deben ser de {limit} o menos." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Biblioteca de sonidos de entrada llena" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Sonido de entrada eliminado" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Sonido de entrada guardado" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Sonidos de entrada" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Sonidos de entrada no disponibles" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Caduca:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Ajuste del filtro de contenido explícito" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "No se pudo copiar al portapapeles" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "No se pudo crear el webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "No se pudo cargar la URL personalizada. Inténtalo de nuevo." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "No se pudieron cargar los webhooks" @@ -15190,11 +15030,6 @@ msgstr "No se pudo eliminar la URL personalizada. Inténtalo de nuevo." msgid "Failed to resend code. Try again." msgstr "No se ha podido reenviar el código. Inténtalo de nuevo." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "No se pudo reenviar el código de verificación. Inténtalo de nuevo más tarde." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "No se pudo enviar el mensaje. Mantén pulsado para ver las opciones." msgid "Failed to send report. Try again." msgstr "No se ha podido enviar la denuncia. Inténtalo de nuevo." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "No se ha podido enviar el correo de verificación. Inténtalo de nuevo más tarde." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Error al iniciar" @@ -15551,15 +15381,15 @@ msgstr "Filtrar por usuario" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtrar los mensajes de todos" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtrar los mensajes de miembros sin roles" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Seguir este canal" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Sigue para recibir estos anuncios en un canal que elijas." @@ -15773,7 +15603,7 @@ msgstr "Canal seguido {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Canales seguidos" @@ -15857,11 +15687,6 @@ msgstr "Solo para ojos británicos..." msgid "For me" msgstr "Para mí" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Para esta verificación, nos envías un mensaje de texto en lugar de recibir uno nuestro." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Para tu seguridad, confirma que eres tú para continuar." @@ -15905,7 +15730,7 @@ msgstr "Forzar esqueleto de carga" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forzar contenido para adultos" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Forzar traslado al canal de inactividad (AFK)" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Forzar la ausencia del permiso {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Forzar la visualización del aviso de URL personalizada" msgid "Force show voice connection" msgstr "Forzar la visualización de la conexión de voz" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Forzar modo lento activo" @@ -16020,7 +15845,7 @@ msgstr "Reenviar contenido multimedia" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Reenviar mensaje" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Superposición de bloqueo geográfico" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Restringido geográficamente" @@ -16490,12 +16315,6 @@ msgstr "Consigue un avatar y banner animados, una insignia de suscriptor, la eti msgid "Get monthly" msgstr "Obtener mensualmente" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Obtener nuevo código" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Códigos de regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Duración del regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventario de regalos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Flujo de inventario de regalos" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Regalo no encontrado" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Regalo canjeado" @@ -17030,7 +16849,7 @@ msgstr "Mensaje directo de grupo" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hola, {displayName}: completa el registro de tu cuenta para no perder el acceso." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hola, {displayName}: verifica tu dirección de correo electrónico." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hola {displayName}, no podemos entregar el correo en tu dirección. Añade un correo válido para verificar tu cuenta." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "¿Ocultar tu pantalla compartida?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Alto" @@ -17755,11 +17579,6 @@ msgstr "Soy una ayuda emergente" msgid "I changed my mind" msgstr "He cambiado de opinión" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Necesito otra opción" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Si esta denuncia se refiere a un mensaje específico, denuncia ese mensa msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Si esta denuncia se refiere a mensajes específicos, denuncia el mensaje más relevante en su lugar. Las denuncias de mensajes proporcionan a nuestro equipo de seguridad un contexto más claro, y añadir detalles en los comentarios puede ayudarnos a revisarlas más rápido. Solo continúa denunciando al usuario en su conjunto si denunciar un mensaje no permite reflejar el problema más amplio." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Si no puedes verificar por SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Si no puedes usar ningún método de verificación, contacta con soporte para obtener ayuda." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Tamaño de la interfaz" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Archivo de audio no válido" @@ -18674,8 +18483,10 @@ msgstr "JSON no válido. Pega la respuesta completa de la URL de arriba." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Unirse a la llamada de voz" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Unirse al canal de voz" @@ -19613,16 +19424,6 @@ msgstr "Más información sobre Visionary" msgid "Leave" msgstr "Salir" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "¿Salir de {count, plural, one {# comunidad} other {# comunidades}} y dejar esta verificación pendiente?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Salir y dejar la verificación pendiente" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Permitir que los lectores de pantalla anuncien los mensajes nuevos a medida que llegan al canal abierto. Los sonidos de notificación no se verán afectados." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Permitir que la comunidad se automodere" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Biblioteca" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Biblioteca llena ({max} sonidos como máximo). Elimina uno antes de añadir otro." @@ -19812,7 +19613,7 @@ msgstr "Biblioteca: {count} de {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "De por vida" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Cargando..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Cargando…" @@ -20261,7 +20062,7 @@ msgstr "Luisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Bajo" @@ -20416,7 +20217,7 @@ msgstr "Gestionar funciones de la comunidad" msgid "Manage emoji & stickers" msgstr "Gestionar emojis y pegatinas" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Gestiona los webhooks entrantes que pueden publicar mensajes en este canal." @@ -20514,7 +20315,7 @@ msgstr "Marcar todos los canales no leídos de la bandeja de entrada como leído msgid "Mark as read" msgstr "Marcar como leído" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Marcar como canjeado" @@ -20676,14 +20477,14 @@ msgstr "Comunidad para adultos" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Contenido para adultos" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Contenido para adultos y advertencias de contenido" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Duración máxima (días)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Máxima protección para espacios familiares" @@ -20924,7 +20725,7 @@ msgstr "Detener reproducción" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Miembro desbaneado" msgid "Member updated" msgstr "Miembro actualizado" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Verificación de miembros" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Nivel de verificación de miembros" @@ -21048,7 +20849,7 @@ msgstr "Los miembros se eliminan al desconectarse a menos que se les asigne un r msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Los miembros con el permiso \"{pinMessagesPermissionLabel}\" pueden fijar mensajes para todos." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Los miembros con roles pueden omitir estas comprobaciones. Para espacios públicos, recomendamos activar la verificación." @@ -21153,7 +20954,7 @@ msgstr "Las menciones que recibes aparecen aquí durante {retentionDays, plural, #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Solo menciones" @@ -21292,7 +21093,7 @@ msgstr "Los ajustes de visualización de mensajes solo están disponibles en la msgid "Message editing" msgstr "Edición de mensajes" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Mensaje reenviado" @@ -21341,7 +21142,7 @@ msgstr "Botones de entrada de mensajes" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "El mensaje es demasiado largo" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Vistas previas de mensajes en la lista de mensajes directos" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Mensaje publicado" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Los mensajes publicados en #{sourceName} ahora aparecerán en #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Los mensajes publicados en estos canales de anuncios se copian aquí." @@ -21504,7 +21305,7 @@ msgstr "Los mensajes publicados en estos canales de anuncios se copian en tus ca msgid "Messages you can bookmark" msgstr "Mensajes que puedes marcar" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "La mensajería está temporalmente en pausa en esta comunidad." @@ -21733,30 +21534,30 @@ msgstr "Simular caducidad en 1 día" msgid "Mock expires in 7 days" msgstr "Simular caducidad en 7 días" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Superposición de bloqueo geográfico de prueba" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Simular inventario de regalos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simular llamada entrante" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Simular motivo de restricción de acceso a canales para adultos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Simular motivo de restricción de acceso a contenido multimedia para adultos" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Simular ubicación en el Reino Unido" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Avatares de usuario de prueba en varios tamaños y todas las combinaciones de estado." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Variante de prueba" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Flujos de producto simulados" @@ -22698,14 +22494,16 @@ msgstr "Comunidad nueva silenciada" msgid "New direct message" msgstr "Nuevo mensaje directo" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Nuevo correo electrónico" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formulario para indicar un nuevo correo electrónico" @@ -22816,9 +22614,7 @@ msgstr "Más recientes primero" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Siguiente" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "No" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Sin permiso de {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Sin permiso de {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "No hay cambios que guardar" msgid "No channels available" msgstr "No hay canales disponibles" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "No se encontraron canales" @@ -23233,11 +23029,6 @@ msgstr "No se encontraron permisos" msgid "No personal words yet." msgstr "Aún no hay palabras personales." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Sin número de teléfono" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Sin resultados" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "No se encontraron resultados" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "No se encontraron usuarios" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "No se requiere verificación." @@ -23452,7 +23243,7 @@ msgstr "No se requiere verificación." msgid "No verification methods available" msgstr "No hay métodos de verificación disponibles" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Ningún webhook" @@ -23504,7 +23295,7 @@ msgstr "No convertir" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Ninguna" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Ninguno (comportamiento normal)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Noruego" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "No es miembro desde hace suficiente tiempo" @@ -23798,9 +23589,9 @@ msgstr "Objetos" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Desactivado" @@ -23848,7 +23639,7 @@ msgstr "Más antiguos primero" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Activado" @@ -23884,11 +23675,6 @@ msgstr "No se pudieron leer o subir uno o más archivos adjuntos. Es posible que msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Uno o varios de los archivos que intentas subir superan el límite de tamaño máximo de {maxSizeFormatted} por archivo." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Una comprobación rápida" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Solo altavoces" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Solo el propietario de la comunidad puede cambiar este ajuste" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Abrir emoji en el navegador" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Abrir selector de emojis" @@ -24382,12 +24168,8 @@ msgstr "Icono para abrir el menú" msgid "Open message history threshold" msgstr "Abrir umbral del historial de mensajes" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Abrir superposición" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Abrir menú emergente" @@ -24485,11 +24267,6 @@ msgstr "Abre la nueva app. Ya has iniciado sesión." msgid "Open the shortcuts list for quick actions." msgstr "Abre la lista de atajos para acciones rápidas." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Abre el correo de verificación y usa el enlace que contiene. Esta ventana se actualizará después de que se abra el enlace." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Abrir ajustes de audio y vídeo" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Abre tu navegador, inicia sesión y, a continuación, introduce el código de abajo para vincular tu cuenta." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Abre tus mensajes" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Abre tu antigua app de {PRODUCT_NAME}, selecciona \"Vincular un dispositivo nuevo\" y luego introduce el código de abajo." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Abre la aplicación de mensajería de tu teléfono y crea un mensaje de texto nuevo." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Abre la aplicación de mensajería de tu teléfono e inicia un nuevo mensaje de texto." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Otra reacción…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Nuestro servicio de comprobación de números de teléfono no está disponible en este momento. El problema es nuestro, no de tu número. Espera unos minutos y vuelve a intentarlo con el mismo número." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "Re Pág" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, fraude, enlaces maliciosos o afirmaciones falsas que puedan causar daños en el mundo real." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Teléfono" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Número de teléfono" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Se requiere un número de teléfono" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Número de teléfono verificado" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Es necesario volver a verificar el teléfono" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Paso del teléfono" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "La verificación telefónica no está disponible para esta cuenta. Usa otro método o contacta con soporte." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Verificación de teléfono necesaria" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Elige el número de 4 dígitos que va después de tu nombre de usuario" msgid "Pick the appearance this administrator account should start with." msgstr "Elige el aspecto con el que debe empezar esta cuenta de administrador." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Elige el método que puedas completar ahora." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Imagen en imagen" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Fijar" @@ -25471,7 +25176,7 @@ msgstr "Fijar MD de grupo" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Fijar o desfijar cualquier mensaje." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Fija este mensaje en el canal para que todos lo vean." @@ -26227,18 +25932,18 @@ msgstr "Color del perfil" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Personalización del perfil" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Personalización del perfil para {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formulario de personalización del perfil" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Tipo de perfil" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Perfil actualizado" @@ -26340,7 +26045,7 @@ msgstr "Preguntar al detectar nuevos dispositivos de audio" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Coordinación de raids" msgid "Rate" msgstr "Velocidad" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Límite de solicitudes alcanzado" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "JSON sin procesar del contenido incrustado" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "¿Eliminar a {userName} de tus amigos?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Eliminar todo" @@ -27290,7 +26990,7 @@ msgstr "¿Quitar todas las reacciones {emojiNameWithColons} de este mensaje?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Eliminar todas las reacciones" @@ -27899,20 +27599,10 @@ msgstr "Etiqueta del usuario denunciado (opcional)" msgid "Reposts: <0>{countLabel}" msgstr "Republicaciones: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Primero, solicita un código nuevo." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Solicitar un nuevo enlace para restablecer la contraseña" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Solicita primero un código de verificación." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Solicitudes" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Requerir 2FA para acciones de moderación" @@ -27958,7 +27648,7 @@ msgstr "Solicitar concesión de código OAuth2" msgid "Require passkey" msgstr "Requerir clave de acceso" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Requerir autenticación de dos factores a los moderadores para que puedan banear, expulsar, aplicar aislamiento temporal o eliminar mensajes." @@ -27972,46 +27662,6 @@ msgstr "Obligatorio" msgid "Required 2FA for moderation actions" msgstr "Se empezó a requerir 2FA para las acciones de moderación" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Pestaña predeterminada de acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Flujo de acción requerido" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Paso de teléfono de acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Cargando reenvío de acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Resultado de reenvío de acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Texto de reverificación de acción obligatoria" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Variante de acción requerida" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Superposición de acciones requeridas" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Requiere una URI de redirección y un código de autorización al invitar a este bot." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Requiere una dirección de correo electrónico verificada y una cuenta con al menos 5 minutos de antigüedad." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Requiere una dirección de correo electrónico verificada." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Requiere un número de teléfono verificado." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Requiere todo lo de nivel medio, además de ser miembro de la comunidad durante al menos 10 minutos." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Reenviar ({resendSecondsRemaining} s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Reenviar ({secondsRemaining} s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Cargando botón de reenvío" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Reenviar código" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Reenviar correo" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Resultado del reenvío" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Reenviado" @@ -28518,21 +28152,6 @@ msgstr "Mostrar" msgid "Reveal spoiler" msgstr "Mostrar spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Vuelve a verificar tu correo electrónico o verifica tu teléfono para seguir usando {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Vuelve a verificar tu correo electrónico para seguir usando {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Vuelve a verificar tu número de teléfono para seguir usando {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Saturación" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Vista previa al recorrer el vídeo" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Buscar canales" msgid "Search communities" msgstr "Buscar comunidades" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Buscar países..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Buscar países…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Selecciona tu país de residencia." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Seleccionar…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Enviar" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Enviar ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Enviar otra denuncia" msgid "Send button" msgstr "Botón de enviar" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Enviar código" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Enviar mensajes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Envío de mensajes deshabilitado" @@ -30151,32 +29759,11 @@ msgstr "Enviar contenido multimedia guardado {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Enviar mensajes con síntesis de voz mediante /tts. Los miembros que tengan activada la síntesis de voz los oirán en voz alta." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Envía el código <0>{0} a <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Envía el código al número de teléfono de abajo." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Enviar este código" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "¿Enviar este mensaje fijado al pasado?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Enviar a" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Enviar mensaje de voz" msgid "Send:" msgstr "Enviar:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Enviar un SMS a este número de teléfono es demasiado caro para {PRODUCT_NAME}, así que necesitamos que nos envíes un SMS tú. Sabemos que no es lo ideal. También puedes pedir a los administradores de esta instancia que eliminen este requisito de tu cuenta." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Enviar un SMS a este número de teléfono es demasiado caro para {PRODUCT_NAME}, así que necesitamos que nos envíes un SMS tú. Sabemos que no es lo ideal. También puedes contactar con <0>{SUPPORT_EMAIL} para que eliminemos este requisito de tu cuenta." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Enviar en serie" msgid "Serve the token file" msgstr "Proporcionar el archivo de token" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Error del servicio" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Establecer atajo personalizado para \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Establecer estado personalizado" @@ -30486,18 +30060,6 @@ msgstr "Se estableció la región de voz en {region}" msgid "Set the voice region to automatic" msgstr "Se estableció la región de voz en automático" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Dejar esta verificación pendiente" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "¿Dejar esta verificación pendiente?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Establece tus pronombres" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Establece tu estado" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Los atajos se pausan durante la grabación." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Acorta el mensaje y vuelve a intentarlo." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Mostrar un icono de {productName} en la bandeja del sistema o en la barra de menú" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Mostrar una advertencia de contenido" @@ -31672,7 +31234,7 @@ msgstr "Modo lento · espera {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Modo lento activo" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "El modo lento está configurado en {durationLabel}. Espera antes de enviar otro mensaje." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Tiempo restante del modo lento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulación de modo lento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Tiempo restante del modo lento" @@ -31807,11 +31369,6 @@ msgstr "Desplazamiento suave" msgid "Smoother video" msgstr "Vídeo más fluido" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "La verificación por SMS no está disponible en este momento. Inténtalo de nuevo más tarde o contacta con el soporte técnico." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Algo salió mal al preparar esta pegatina. Prueba con otro archivo o inténtalo de nuevo en un momento." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Ha ocurrido un error al publicar. Inténtalo de nuevo en un momento." @@ -32009,11 +31566,9 @@ msgstr "Algo ha ido mal. Vuelve a cargar la página o inicia sesión de nuevo." msgid "Something went wrong. Try again later." msgstr "Ha ocurrido un error. Inténtalo de nuevo más tarde." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Ha ocurrido un error. Inténtalo de nuevo." @@ -32352,11 +31907,6 @@ msgstr "Se agotó el tiempo de espera del inicio de sesión único (SSO). Intén msgid "Staff controls" msgstr "Controles de personal" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Pueden aplicarse las tarifas de mensajería estándar de tu operador." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Animación de estrellas" msgid "Starred channels" msgstr "Canales favoritos" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Transporte del suscriptor:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Suscripción" @@ -33051,14 +32599,12 @@ msgstr "Escenarios de suscripción" msgid "Subtext" msgstr "Subtexto" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Éxito" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Sugerido para la mayoría de comunidades" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Sistema y bienvenida" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Anuncios del personal de {productName}. No puedes responder aquí." @@ -33765,11 +33311,6 @@ msgstr "Selección de texto" msgid "Text size" msgstr "Tamaño del texto" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Envíanos un mensaje desde tu teléfono" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Tailandés" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Gracias por ayudarnos a mantener {productName} seguro. Revisaremos tu denuncia lo antes posible." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Ese código no funcionó. Compruébalo e inténtalo de nuevo." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Ese código ha caducado. Solicita un código nuevo." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "El proceso no se ha completado. Es posible que ya hayas salido de algunas comunidades y tu cuenta sigue bloqueada. Pulsa \"Dejar esta verificación pendiente\" de nuevo para finalizar." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "No se ha podido completar. Nada ha cambiado. Inténtalo de nuevo." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "No parece un color válido. Prueba con un código hexadecimal, rgb(), hs msgid "That doesn't look like a valid URL." msgstr "No parece una URL válida." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Ese correo electrónico ya está en uso." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "La anulación denegaba {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "La página que buscas no existe o se ha movido." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "La verificación del teléfono ha quedado pendiente. Falta un paso por correo electrónico." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "No hay canales disponibles para crear una invitación." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "No hay roles para asignar en esta comunidad en este momento, pero puedes crear un nuevo rol en <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "No hay webhooks configurados para este canal. Crea un webhook para permitir que las aplicaciones externas publiquen mensajes." @@ -34273,7 +33784,7 @@ msgstr "Ha habido un error al cargar las invitaciones. Inténtalo de nuevo." msgid "There was an error loading the stickers. Try again." msgstr "Ha habido un error al cargar las pegatinas. Inténtalo de nuevo." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Ha habido un error al cargar los webhooks de este canal. Inténtalo de nuevo." @@ -34417,7 +33928,7 @@ msgstr "Este canal puede publicar 10 mensajes seguidos y uno más cada 6 minutos msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Este canal puede publicar 10 mensajes seguidos y, después, uno más cada 6 minutos. Vuelve a intentarlo en unos minutos." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Este canal no admite webhooks." @@ -34550,12 +34061,12 @@ msgstr "Esta conexión no se ha verificado." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Esto contiene contenido sensible." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Esta conversación ya no está disponible." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Este grupo tiene demasiada gente" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Este grupo está lleno. Elimina a alguien antes de añadir a más personas." @@ -34715,11 +34226,6 @@ msgstr "Esta es una pegatina personalizada de una comunidad." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Este es un canal con restricciones de edad. Las actualizaciones solo pueden enviarse a canales con restricciones de edad." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Esta es una comprobación antispam. Tu número de teléfono no está vinculado a tu cuenta." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Esto está deshabilitado" msgid "This is how messages appear" msgstr "Así se muestran los mensajes" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Esto no está disponible en tu cuenta en este momento. Pide a los administradores de esta instancia que lo revisen." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "En este momento no está disponible en tu cuenta. Envía un correo electrónico a {supportEmail} y una persona lo revisará." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Este no es el canal que buscas." @@ -34792,11 +34288,6 @@ msgstr "Esta es tu última clave de acceso y las claves de acceso son tu segundo msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Esta es tu última clave de acceso. Una vez que la elimines, no podrás usar una clave de acceso como segundo factor." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Este número no es de un móvil, por lo que no puede recibir nuestros SMS. Prueba con un número de móvil o ponte en contacto con soporte si crees que esto es un error." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Este mensaje ya se ha eliminado." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Este mensaje ya se ha publicado" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Este mensaje ya no existe." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Este apodo solo será visible en esta comunidad" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Este número se verifica enviándonos un mensaje de texto. Vuelve atrás e inicia la verificación telefónica de nuevo para obtener el código y el número al que enviarlo." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Para verificar este número, debes enviarnos un SMS en lugar de recibir uno nuestro." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Este participante tiene el sonido desactivado" msgid "This participant was deafened by moderators" msgstr "Los moderadores desactivaron el sonido de este participante" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "No se puede usar este número de teléfono. Prueba con otro número de móvil o contacta con soporte." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Este número de teléfono ya se ha usado. Prueba con otro número o contacta con el equipo de soporte." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Este usuario no tiene ningún rol en esta comunidad." msgid "This user is already banned from the community." msgstr "Este usuario ya está baneado de la comunidad." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Este usuario ya no está disponible." @@ -35065,11 +34536,6 @@ msgstr "Un administrador de la plataforma forzó la incorporación de este usuar msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "La sesión de verificación ha caducado. Vuelve a {productName} y reinicia el proceso de compra." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "La sesión de verificación ha caducado. Vuelve a empezar." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Esto cerrará tu sesión, borrará los archivos en caché y las sesiones msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Esto hará que se confíe en todos los enlaces externos y se omita la advertencia para cada dominio. Tus dominios de confianza existentes serán reemplazados. Esto es menos seguro." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Esta ventana se actualiza automáticamente cuando recibimos tu mensaje." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Barra de título" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Plataforma de la barra de título" @@ -35470,18 +34931,11 @@ msgstr "Mapeo de tonos" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Mapea el tono de las imágenes HDR al rango estándar, reduciendo el brillo máximo." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Demasiados intentos. Espera un poco y vuelve a intentarlo." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Demasiadas comunidades" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Demasiadas solicitudes. Inténtalo de nuevo más tarde." @@ -36151,8 +35605,10 @@ msgstr "No se han podido preparar los emojis para subirlos. Han ocurrido los sig #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "No disponible" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Sin categoría" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Cuenta con registro pendiente" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Sin numerar" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Desfijar" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Desfijar mensaje" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "¿Desfijar este mensaje?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Cambios sin guardar" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Archivo de audio no compatible." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Hasta que lo vuelva a activar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Correo electrónico sin verificar" @@ -36958,12 +36414,7 @@ msgstr "Actualiza {productName} para ver este mensaje." msgid "Update app" msgstr "Actualizar la aplicación" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Actualizar correo electrónico" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Actualizar mi estado" @@ -37306,18 +36757,13 @@ msgstr "Usa {url} donde se deba insertar la URL de la imagen." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Usa una ventana específica para establecer una fecha de corte del historial de mensajes para los miembros que no tienen el permiso {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Usa una dirección de correo electrónico diferente y verifícala con un código." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Usar real" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Usar tipo premium real" @@ -37335,16 +36781,6 @@ msgstr "Usar método alternativo" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Usa una aplicación de autenticación para generar códigos de autenticación de dos factores" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Usa una dirección de correo electrónico a la que tengas acceso. Te enviaremos un código allí." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Usa un correo electrónico diferente al actual." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Usar tema oscuro en toda la aplicación" msgid "Use default" msgstr "Usar predeterminado" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Usar un correo electrónico diferente" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Usar correo electrónico" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "¿Usar claves de acceso para la autenticación de dos factores?" msgid "Use passkeys to sign in without a password" msgstr "Usa claves de acceso para iniciar sesión sin contraseña" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Usar teléfono" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Usar texto de reverificación" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "El usuario cambia de canal" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Usuario no encontrado" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Verificación" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Verificación y requisitos de acceso a comunidades" @@ -37970,15 +37387,8 @@ msgstr "Código de verificación" msgid "Verification code sent" msgstr "Código de verificación enviado" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Código de verificación enviado. Revisa la bandeja de entrada de tu nuevo correo." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Correo electrónico de verificación enviado. Revisa tu bandeja de entrada." @@ -38038,23 +37448,6 @@ msgstr "Formulario de verificación de identidad" msgid "Verify it's you" msgstr "Verifica que eres tú" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Verificar teléfono" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Verificar número de teléfono" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formulario de verificación del número de teléfono" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Verifica tu correo electrónico antes de añadir una aplicación de autenticación." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Verifica tu correo electrónico antes de cambiar tu apodo de comunidad, avatar, banner, biografía, pronombres o color de énfasis." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Verifica tu correo electrónico antes de cambiar tu nombre de usuario, nombre visible, avatar, banner, biografía, pronombres, zona horaria o la privacidad de la insignia de {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Verifica tu correo electrónico antes de editar este perfil de comunidad. Aún puedes previsualizarlo aquí." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Verifica tu correo electrónico antes de editar tu perfil. Puedes previsualizarlo aquí." @@ -38113,11 +37506,6 @@ msgstr "Verifica tu correo electrónico antes de enviar solicitudes de amistad." msgid "Verify your email first" msgstr "Verifica tu correo electrónico primero" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Verifica tu correo electrónico o teléfono para seguir usando {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Verifica tu correo electrónico para comprar regalos." msgid "Verify your email to change your username" msgstr "Verifica tu correo para cambiar tu nombre de usuario" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Verifica tu correo electrónico para seguir usando {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Verifica tu correo para editar este perfil de la comunidad" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Verifica tu correo para editar tu perfil" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Versión" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Muy alto" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Subir volumen" msgid "Wait a moment before deleting more messages." msgstr "Espera un momento antes de eliminar más mensajes." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Espera un momento. Esta ventana se cerrará automáticamente cuando recibamos tu mensaje." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Tiempo de espera entre mensajes. Los miembros con el permiso \"{bypassSlowmodePermissionLabel}\" pueden omitirlo." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Espera aquí" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Esperando la clave de acceso…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Esperando a que el modo lento en {forwardChannelDisplayName} expire." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Esperando a que el modo lento caduque en uno o más canales seleccionados." @@ -39115,16 +38482,6 @@ msgstr "No hemos podido leer este tema. Puede que esté dañado o no sea válido msgid "We couldn't remove that account. Try again." msgstr "No hemos podido eliminar esa cuenta. Inténtalo de nuevo." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "No hemos podido verificar este número automáticamente. Ponte en contacto con soporte y una persona revisará tu cuenta." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "No enviamos mensajes de verificación a este país. Prueba con un número de móvil de otro país o ponte en contacto con soporte." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Hemos encontrado una suscripción a {premiumProductFullName} para esta c msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Hemos bajado el precio de {premiumProductName} en Brasil. Ahora cuesta {monthlyPrice} al mes o {yearlyPrice} al año." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Necesitamos un paso de verificación antes de que puedas continuar. Esto ayuda a proteger las cuentas y a mantener el spam fuera de {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Necesitamos dos pasos de verificación antes de que puedas continuar. Te mostraremos un paso cada vez." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Te recomendamos guardar estos códigos ahora para no quedarte fuera de tu cuenta." @@ -39167,11 +38514,6 @@ msgstr "Hemos enviado un código a {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Rellenaremos automáticamente {prefillEmail} cuando se abra el inicio de sesión en el navegador." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Enviaremos un código SMS cuando esté disponible." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Nos encantaría darte más de una vida de {PREMIUM_PRODUCT_NAME}, pero eso rompería el continuo espacio-tiempo. ¿Mejor le envías el regalo a un amigo?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Lo procesaremos lo antes posible. Recibirás un correo electrónico cuando tu archivo esté listo." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Restauraremos tu correo electrónico anterior, cerraremos las sesiones antiguas, eliminaremos los números de teléfono, desactivaremos la autenticación multifactor y protegeremos tu cuenta con una nueva contraseña." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Restauraremos tu correo anterior, cerraremos las sesiones antiguas, deshabilitaremos la autenticación multifactor y aseguraremos tu cuenta con una nueva contraseña." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Te enviaremos un código de verificación a tu correo electrónico antes msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Te enviaremos un código de verificación a tu correo electrónico antes de que puedas ver tus códigos de respaldo." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Enviaremos un código SMS cuando esté disponible. Tu número no se vinculará a tu cuenta. Solo guardamos un marcador cifrado, sin ID de usuario, durante un tiempo limitado." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Verificaremos tu correo electrónico actual y, después, el nuevo con códigos de un solo uso." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook creado" @@ -39331,7 +38669,7 @@ msgstr "Webhook actualizado" msgid "Webhook URL" msgstr "URL del webhook" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooks" @@ -39486,8 +38824,8 @@ msgstr "Lo que estás compartiendo no se actualiza" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "¿Qué tal?" @@ -39967,21 +39305,11 @@ msgstr "Puedes eliminar el permiso <0>{readMessageHistoryPermissionLabel} de msgid "You can sign back in at any time." msgstr "Puedes volver a iniciar sesión en cualquier momento." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Puedes pedir una revisión humana a los administradores de esta instancia en cualquier momento." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Puedes crear una cuenta o iniciar sesión. Si las invitaciones se vuelven a habilitar más tarde, puedes usar este mismo enlace para unirte." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Aún puedes enviarnos un correo electrónico a {supportEmail} para una revisión humana en cualquier momento." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Puedes usar enlaces, emojis y Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "No puedes añadir expresiones ahí" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "No puedes añadir reacciones nuevas mientras estés en aislamiento temporal." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "No puedes ser tu propio amigo" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "No puedes cambiar tu apodo aquí" @@ -40094,7 +39422,7 @@ msgstr "No puedes enviarte una solicitud de amistad a ti mismo." msgid "You can't send messages in this channel." msgstr "No puedes enviar mensajes en este canal." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "No puedes enviar mensajes en esta comunidad." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "No tienes permiso para hacer esto a este miembro." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "No tienes permiso para unirte a este canal de voz" @@ -40243,7 +39571,7 @@ msgstr "No tienes permiso para cambiar el nombre de este emoji. El nombre se ha msgid "You have been banned from this community." msgstr "Te han baneado de esta comunidad." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Has bloqueado a {username}. Desbloquéale para enviarle mensajes." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Tienes cambios sin guardar." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Tienes cambios sin guardar. Guarda o restablece antes de salir." @@ -40270,7 +39598,7 @@ msgstr "Tienes cambios sin guardar. Guarda o restablece antes de salir." msgid "You haven't authorized any applications to access your account." msgstr "No has autorizado ninguna aplicación para acceder a tu cuenta." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "No llevas el tiempo suficiente en esta comunidad para enviar mensajes." @@ -40326,11 +39654,6 @@ msgstr "Debes aceptar las Condiciones del servicio para crear una cuenta" msgid "You must verify your email before sending a report." msgstr "Debes verificar tu correo electrónico antes de enviar una denuncia." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Necesitas acceder a tu correo electrónico actual para cambiarlo desde aquí. Usa la verificación por teléfono si está disponible o contacta con soporte." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Necesitas el permiso \"{manageRolesPermissionLabel}\" para editar estos msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Necesitas el permiso \"{manageRolesPermissionLabel}\" para editar estos permisos." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Necesitas el permiso \"{manageWebhooksPermissionLabel}\" para ver y editar los webhooks de este canal." @@ -40384,18 +39707,14 @@ msgstr "Debes completar el registro de tu cuenta antes de poder crear una comuni msgid "You need to claim your account before you can start a direct message." msgstr "Debes completar el registro de tu cuenta antes de poder iniciar una conversación por mensaje directo." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Debes completar el registro de tu cuenta para enviar mensajes directos." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Debes completar el registro de tu cuenta para enviar mensajes en esta comunidad." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Tienes que verificar un número de teléfono para enviar mensajes en esta comunidad." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Debes verificar tu dirección de correo electrónico antes de poder inic msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Tienes que verificar tu correo electrónico antes de poder comprar {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Tienes que verificar tu correo electrónico para enviar mensajes en esta comunidad." @@ -40424,11 +39743,6 @@ msgstr "Tienes que verificar tu correo electrónico para enviar mensajes en esta msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Tú o alguien a quien estás añadiendo ya tiene el número máximo de MD de grupo abiertos. Sal de uno e inténtalo de nuevo." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Permaneces en {ownedNames}. Los propietarios no pueden abandonar su propia comunidad." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Los moderadores desactivaron tu sonido" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Se te redirigirá a {redirectHostname} después de la autorización." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Saldrás de {count, plural, one {# comunidad a la que se aplica esta verificación} other {# comunidades a las que se aplica esta verificación}} y tu cuenta volverá a funcionar con normalidad." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Saldrás de {guildNames}. Nada de lo que publicaste se elimina y puedes volver a unirte más tarde." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Todavía tendrás que completar el paso del correo electrónico." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Vas demasiado rápido" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Vas demasiado rápido. Espera un momento y vuelve a intentarlo." @@ -40636,7 +39935,7 @@ msgstr "Estás enviando mensajes demasiado rápido" msgid "You're streaming!" msgstr "¡Estás transmitiendo!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Estás en aislamiento temporal. No puedes enviar mensajes, reaccionar ni conectarte a canales de voz hasta que termine." @@ -40764,25 +40063,25 @@ msgstr "El pago de renovación en {storeName} ha fallado, pero las <0/> siguen a msgid "Your account" msgstr "Tu cuenta" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Tu cuenta volverá a la normalidad de inmediato y no necesitarás un número de teléfono. Esto no es una exención permanente y podemos volver a solicitar esta verificación más adelante." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Tu cuenta se ha vinculado correctamente. Ya puedes cerrar esta pestaña y volver a la aplicación." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Tu cuenta vuelve a la normalidad." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Tu cuenta tiene limitaciones" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Tu cuenta está limitada. Revisa tu correo electrónico para saber cómo levantarla." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Aún no has completado el registro de tu cuenta. Sin un correo electrónico y una contraseña, no podrás iniciar sesión desde otros dispositivos y podrías perder el acceso. Completa el registro ahora para proteger tu cuenta." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Tu cuenta es demasiado nueva para enviar mensajes en esta comunidad." @@ -40800,11 +40099,6 @@ msgstr "Tu cuenta requiere autenticación multifactor, pero no hay métodos comp msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Tu cuenta ya no estará protegida por la autenticación de dos factores al iniciar sesión con tu contraseña. También perderás los permisos elevados en las comunidades que requieren autenticación de dos factores." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Tu cuenta vuelve a funcionar con normalidad al instante y no se elimina nada. Podemos volver a solicitar esta comprobación más adelante." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Estamos comprobando si tu tarjeta cumple los requisitos para acceder a p msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Tu tarjeta cumple los requisitos. Te estamos redirigiendo a la página de pago." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Tu operador indica que este número no está en servicio. Compruébalo y vuelve a intentarlo, o ponte en contacto con soporte si es correcto." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Tus cambios llegarán a todas las comunidades que siguen este canal y pueden tardar un minuto. Cada mensaje publicado permite 3 ediciones rápidas, y luego 1 cada 20 minutos." @@ -40869,21 +40158,6 @@ msgstr "Tu dispositivo te pedirá que guardes una clave de acceso actualizada pa msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Tu dispositivo te pedirá que guardes una clave de acceso actualizada para {name}. Usa el mismo teléfono o llave de seguridad que acabas de utilizar." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Tu dirección de correo electrónico se ha actualizado." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Tu correo electrónico no pudo recibir mensajes. Añade una dirección que funcione para que podamos contactar contigo." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Tu correo electrónico no pudo recibir mensajes. Actualízalo para seguir usando {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Tu correo electrónico ha sido verificado. Ya puedes iniciar sesión en tu cuenta." @@ -41000,21 +40274,11 @@ msgstr "No se ha podido actualizar tu mensaje" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Tu compra más reciente ya no está dentro del plazo de reembolso. Contacta con soporte para problemas de facturación." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "tu nuevo correo electrónico" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Tu nuevo apodo, o déjalo en blanco para restablecerlo." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Tu número no está vinculado a tu cuenta. Guardamos solo un marcador cifrado, sin ID de usuario, durante un tiempo limitado." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Se ha cancelado tu pago. Ya puedes cerrar esta pestaña y volver a la aplicación." @@ -41054,11 +40318,6 @@ msgstr "Tus regalos comprados" msgid "your region" msgstr "tu región" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Tu registro necesita una comprobación antispam adicional antes de que puedas continuar." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/fi/messages.po b/fluxer_app/src/features/i18n/locales/fi/messages.po index dacbe075d..b7b88721a 100644 --- a/fluxer_app/src/features/i18n/locales/fi/messages.po +++ b/fluxer_app/src/features/i18n/locales/fi/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reaktio} other {# reaktiota}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# reagoija} other {# reagoijaa}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# sekunti} other {# sekuntia}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} klo {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Kutsulinkkisi vanhenee # sekunnin kuluttua.} other {Kutsulinkkisi vanhenee # sekunnin kuluttua.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} valittu" @@ -2252,7 +2252,7 @@ msgstr "1 minuutti" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 tuntia" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 kuukautta (1 vuosi)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "2FA-varakoodit" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2FA-vaatimus" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 jäsentä (kirjoittaa)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 kuukautta" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 tuntia" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 kuukautta" @@ -2575,11 +2575,6 @@ msgstr "minuutti" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Uusi työpöytäversio on saatavilla. Lataa asennusohjelma ja suorita se, niin {productName} päivittyy." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Uusi vahvistuskoodi on lähetetty." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Tilitiedot" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Tili on olemassa roskapostitusta, huijausta tai alustan väärinkäyttöä varten." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Tili rajoitettu" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Tilin tila" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Tili on liian uusi" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Tili vaatii vahvistuksen" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Lisätä botin yhteisöön pyydetyillä käyttöoikeuksilla" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Lisää kommentti (valinnainen)" @@ -3054,8 +3052,10 @@ msgstr "Lisää aihe tälle kanavalle" msgid "Add a word…" msgstr "Lisää sana…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Lisää toimiva sähköpostiosoite" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Lisää tili jatkaaksesi." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Lisää ensin sähköpostiosoite ja salasana tilillesi." @@ -3424,11 +3424,6 @@ msgstr "Lisätty: {createdDate} • viimeksi käytetty: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Lisäkommentit (valinnainen)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Lisävahvistus vaaditaan" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Kaikki kielet" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Peruutus on jo ajoitettu" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Ilmoita tämä viesti myös {productName}-turvatiimille" @@ -4713,11 +4708,6 @@ msgstr "Kysy ennen puheluiden aloittamista" msgid "Ask for a passkey after your password when you sign in" msgstr "Pyydä pääsyavainta salasanasi jälkeen kirjautuessasi" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Pyydä tämän instanssin ylläpitäjiä tarkistamaan tilisi. Tämä instanssi toimii itsenäisesti, ja vain sen ylläpitäjät voivat muuttaa tiliäsi." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Poista seurantaparametrit (kuten utm_source, fbclid, gclid) automaattise msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Poista seurantaparametrit automaattisesti lähettämiesi viestien URL-osoitteista" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Tarkista viestit automaattisesti sopimattoman sisällön varalta kanavilla, joita ei ole merkitty aikuisille tarkoitetuksi sisällöksi." @@ -5359,8 +5349,6 @@ msgstr "Poissa juuri nyt" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Takaisin" @@ -6506,11 +6494,6 @@ msgstr "Kamerat ja virtuaaliset tallennuslaitteet valitaan täällä {productNam msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Kamerat ovat pois päältä, jos osallistujia on yli {voiceChannelCameraUserLimit}" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Etkö pääse kyseiseen sähköpostiin?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Tiedostoja ei voi lähettää tähän" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Tiedostoja ei voi lähettää tähän" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Vaihda sähköpostiosoite" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Vaihda emoji" @@ -7201,7 +7184,7 @@ msgstr "Muutettiin käyttäjäraja arvosta {oldCount} arvoon {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Muutettiin mukautettu URL-osoite muodosta {oldCode} muotoon {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Muutettiin vahvistustasoa tasolta {oldLevel} tasolle {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kanava tai kategoria" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Kanavan käyttöoikeuksien ohitukset" @@ -7509,8 +7492,6 @@ msgstr "Tarkista verkkoyhteytesi ja yritä uudelleen." msgid "Check your connection, then try again." msgstr "Tarkista yhteytesi ja yritä uudelleen." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Valitse näyttö järjestelmän valitsimesta" msgid "Choose a GIF" msgstr "Valitse GIF-kuva" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Valitse menetelmä" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Valitse uusi salasana." @@ -7680,8 +7656,8 @@ msgstr "Valitse toiminto." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Valitse emoji" @@ -7749,11 +7725,6 @@ msgstr "Valitse, miten instanssisi toimii" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Valitse yksi alla olevista tavoista todistaaksesi verkkotunnuksen omistajuuden. Sinun tarvitsee suorittaa vain yksi." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Valitse todennusmenetelmä. Kumpi tahansa menetelmä kelpaa tähän tarkistukseen." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Valitse, mitä {clientLabel} voi tehdä yhteisössäsi. Poista valinta k msgid "Choose what friends see in their active now panel" msgstr "Valitse, mitä kaverit näkevät Aktiiviset nyt -paneelissaan" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Valitse, mitä jäsenillä on oltava, ennen kuin he voivat julkaista tai lähettää yksityisviestejä yhteisön jäsenille." @@ -8030,8 +8001,8 @@ msgstr "Siistii mikrofonin ääntä, jotta puhe kuuluu selkeästi." msgid "Clear" msgstr "Tyhjennä" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Tyhjennä ajan kuluttua" @@ -8053,7 +8024,7 @@ msgstr "Tyhjennä kaikki liitteiden mallit" msgid "Clear all token overrides" msgstr "Tyhjennä kaikki tunnusten ohitukset" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Tyhjennä liitteiden mallit" @@ -8066,14 +8037,14 @@ msgstr "Tyhjennä komento" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Tyhjennä oma tila" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Poistetaanko kaikki reaktiot tästä viestistä?" @@ -8124,7 +8095,7 @@ msgstr "Tyhjennä hakukenttä" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Hiiliteema" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Komennot" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Kommentointi on poistettu käytöstä, koska yhdellä tai useammalla valitulla kanavalla on hidas tila päällä. Hidas tila estäisi kommentin heti edelleenlähetyksen jälkeen." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Kommentointi on poistettu käytöstä, koska kanavalla {forwardChannelDisplayName} on hidas tila päällä. Hidas tila estäisi kommentin heti edelleenlähetyksen jälkeen." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Kommentit eivät ole käytettävissä, kun hidas tila on päällä." @@ -8670,11 +8639,11 @@ msgstr "Yhteisöt" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Yhteisöt ja kanavat, joissa et voi hallita webhookeja, on piilotettu." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Löydä-osiossa listattujen yhteisöjen on tarkistettava kaikkien jäsenten viestit. Tätä asetusta ei voi muuttaa, kun Löydä-osio on käytössä." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Löydä-osiossa listatut yhteisöt edellyttävät vähintään sähköpostin vahvistamista. Vaihtoehtoa \"Ei mitään\" ei voi valita, kun Löydä-osio on käytössä." @@ -8827,7 +8796,7 @@ msgstr "Yhteisön nimi" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Yhteisön lempinimi" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Yhteisöprofiili" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Yhteisöprofiili päivitetty" @@ -8907,7 +8876,7 @@ msgstr "Yhteisön lukemattomien viestien merkin taso" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Yhteisö päivitetty" @@ -8952,11 +8921,6 @@ msgstr "Vertailu" msgid "Complete mature content check" msgstr "Suorita aikuisille tarkoitetun sisällön tarkistus" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Tee jokin alla olevista vahvistuksista, jotta voit jatkaa {productName}-palvelun käyttöä." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Suorita maksu" msgid "Complete the mature content check to unlock mature media." msgstr "Suorita aikuisille tarkoitetun sisällön tarkistus, niin aikuisille tarkoitettu media avautuu." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Suorita alla olevat sähköpostin ja puhelimen vahvistusvaiheet, jotta voit jatkaa {productName}-palvelun käyttöä." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Suorita vaadittu vahvistus, jotta voit jatkaa {productName}-palvelun käyttöä." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Määritä profiilimerkkisi" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Yhteydet järjestetty uudelleen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Suostumus vaaditaan" @@ -9349,16 +9304,6 @@ msgstr "Muodosta valtuutus-URL laajuuksilla ja käyttöoikeuksilla." msgid "Contact" msgstr "Yhteystieto" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Ota yhteyttä tukeen" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Pyydä apua tämän instanssin ylläpitäjiltä." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Sisällöntuottaja" msgid "Content filter" msgstr "Sisällönsuodatin" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Sisällön suodatus" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Sisältötyypin vihje" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Sisällön turvaportit" @@ -9416,12 +9361,10 @@ msgstr "Pikavalikot voi avata vasemmalla napsautuksella (painikkeissa) tai oikea #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Hallitse mykistettyjen kanavien lukemattomien viestien ilmaisimia kanava msgid "Control which chat updates are announced by assistive technology." msgstr "Hallitse, mitkä chat-päivitykset ilmoitetaan avustavalla teknologialla." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Keskustelua ei löydy" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Tunnisteen lisääminen epäonnistui" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Kaveria ei voitu lisätä ryhmään. Yritä uudelleen." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Lisääminen ryhmään epäonnistui" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Teemalinkin luominen epäonnistui" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Kutsulinkin luominen epäonnistui" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Armonaikaa ei voitu päättää" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Kutsulinkin luominen epäonnistui. Yritä uudelleen." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Kuvan käsittely epäonnistui" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Tämän viestin julkaiseminen epäonnistui" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Visionary-yhteisöön liittyminen uudelleen epäonnistui" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Sisääntuloäänen poistaminen epäonnistui" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Kanavan asetuksia ei voitu tallentaa" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Sisääntuloääntä ei voitu tallentaa" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Hakemuksen peruminen epäonnistui" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Ajastin" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Maa" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Luo pääkäyttäjätili" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Luodaanko ryhmäkeskustelu {addableCount, plural, one {# jäljellä olevan vastaanottajan} other {# jäljellä olevan vastaanottajan}} kanssa ja ohitetaan muut?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Luo webhook" @@ -10948,7 +10884,7 @@ msgstr "Mukautettu emoji {emojiName} yhteisöstä" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Mukautetut sisääntuloäänet eivät ole käytössä tässä instanssissa." @@ -11108,7 +11044,7 @@ msgstr "Mukautettu äänenkäsittely" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Mukautettu varoitusteksti" @@ -11530,11 +11466,6 @@ msgstr "Oletushakukone" msgid "Default shortcuts" msgstr "Oletuspikanäppäimet" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Oletusvälilehti" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Poista tämä viesti" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Poistetaanko tämä viesti? Toimintoa ei voi kumota." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Poistetaanko tämä viesti? Tätä ei voi peruuttaa. Viesti poistetaan myös jokaisesta yhteisöstä, joka seuraa tätä kanavaa." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Kehittäjätila" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Kehittäjäasetus" @@ -12299,7 +12230,7 @@ msgstr "Suora syöte" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Näyttötila" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Näyttönimi" @@ -12858,7 +12789,7 @@ msgstr "Haluatko liittyä yhteisöön {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, tulin tulevaisuudesta. Saavuin tänne aikakoneella, jonka sinä keksit. Nyt tarvitsen apuasi päästäkseni takaisin vuoteen 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Muokkaa profiilin paikallista aikaa" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Muokataanko julkaistua viestiä?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Muokkaa viestejäsi yllä tai alla" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Muokkaa profiilisi ulkoasua ja katso esikatselua reaaliajassa" @@ -13590,10 +13521,8 @@ msgstr "Oikeutettu hyvitykseen {windowEndsOn} asti. Tämä peruuttaa myös tilau msgid "Email" msgstr "Sähköposti" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Sähköpostiosoite vaaditaan." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Sähköpostiosoite vaihdettu" @@ -13616,49 +13547,17 @@ msgstr "Sähköpostiosoite vaihdettu" msgid "Email delivery" msgstr "Sähköpostin lähetys" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Sähköposti tai puhelin" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Sähköpostin tai puhelinnumeron uudelleenvahvistus vaaditaan" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Sähköpostin uudelleenvahvistus vaaditaan" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Sähköposti ei ole saatavilla" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Sähköpostin päivitys ei ole käytettävissä juuri nyt. Yritä myöhemmin uudelleen tai ota yhteyttä tukeen." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Sähköpostin päivitys vaaditaan" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Lähetä meille sähköpostia, niin ihminen tarkistaa tilisi. Kerro, ettet voi vahvistaa tekstiviestillä, niin hoidamme loput. Vastaukset tulevat sähköpostitse, joten vastaus ei tule heti." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Sähköpostivahvistuksen ilmoituspalkki" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Sähköpostin vahvistus vaaditaan" @@ -13675,6 +13574,10 @@ msgstr "Sähköpostin vahvistuksen ohitus" msgid "Email verified successfully" msgstr "Sähköposti vahvistettu" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Sähköpostit nykyiseen osoitteeseesi eivät toimita. Anna uusi sähköpostiosoite, niin lähetämme sinne koodin." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Upotukset" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Upotukset piilotettu" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Upotukset näkyvät taas" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Ota /tts-puhetoisto käyttöön" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Ota kaksivaiheinen todennus käyttöön tililläsi muuttaaksesi tätä asetusta" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Anna kelvollinen {theOtherPlatform}-mallin URL-osoite tai koodi." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Anna kelvollinen sähköpostiosoite." @@ -14298,33 +14199,11 @@ msgstr "Anna kelvollinen sähköpostiosoite." msgid "Enter a valid message link." msgstr "Anna kelvollinen viestilinkki." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Anna kelvollinen matkapuhelinnumero." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Anna kelvollinen puhelinnumero" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Anna kelvollinen käyttäjänimi ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Anna sähköpostiosoite, johon pääset käsiksi. Lähetämme sinne koodin." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Syötä koodi" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Siirry koko näyttöön" msgid "Enter gift code…" msgstr "Anna lahjakoodi…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Anna uusi sähköpostiosoite" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Syötä jokin varakoodeistasi, jos et voi käyttää pääsyavaintasi." msgid "Enter one of your backup codes." msgstr "Syötä jokin varakoodeistasi." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Syötä puhelinnumero" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Anna {digitCount}-numeroinen koodi todennussovelluksestasi tai jokin var msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Syötä todennussovelluksesi {digitCount}-numeroinen koodi." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Anna numeroon {phoneNumber} lähetetty {digitCount}-numeroinen koodi." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Anna {MFA_CODE_DIGIT_COUNT}-numeroinen koodi, joka lähetettiin numeroon {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Anna koodi" @@ -14408,11 +14267,6 @@ msgstr "Syötä koodi ennen jatkamista." msgid "Enter the code from your authenticator app." msgstr "Syötä koodi todennussovelluksestasi." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Anna osoitteeseen {emailAddress} lähetetty koodi." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Anna nykyiseen sähköpostiisi lähetetty koodi." @@ -14426,6 +14280,7 @@ msgstr "Anna sähköpostiisi lähetetty koodi." msgid "Enter the code shown in the app to continue." msgstr "Jatka syöttämällä sovelluksessa näkyvä koodi." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Anna uuteen osoitteeseesi lähettämämme koodi." @@ -14434,11 +14289,6 @@ msgstr "Anna uuteen osoitteeseesi lähettämämme koodi." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Vahvista sähköpostiosoitteesi antamalla siihen lähettämämme koodi. Salasanasi asetetaan, kun koodi on vahvistettu." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Anna sähköpostikoodi" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Liity yhteisöön antamalla kutsulinkki." @@ -14452,11 +14302,6 @@ msgstr "Anna uusi sähköpostiosoite. Lähetämme sinne koodin seuraavaksi." msgid "Enter the PIN for your security key to continue." msgstr "Syötä turva-avaimesi PIN-koodi jatkaaksesi." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Anna tekstiviestikoodi" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Kirjoita tämä koodi selaimeesi kirjautumisen viimeistelemiseksi." @@ -14492,11 +14337,6 @@ msgstr "Kirjoita nimesi" msgid "Enter your password." msgstr "Anna salasanasi." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Anna puhelinnumerosi" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Sisääntuloääni" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Sisääntuloäänen tiedoston koon on oltava enintään {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Sisääntuloäänikirjasto täynnä" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Sisääntuloääni poistettu" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Sisääntuloääni tallennettu" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Sisääntuloäänet" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Sisääntuloäänet eivät ole käytettävissä" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Vanhenee:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Arkaluonteisen sisällön suodattimen asetus" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Kopiointi leikepöydälle epäonnistui" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Webhookin luominen epäonnistui" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Mukautetun URL-osoitteen lataus epäonnistui. Yritä uudelleen." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Webhookien lataus epäonnistui" @@ -15190,11 +15030,6 @@ msgstr "Mukautetun URL-osoitteen poistaminen epäonnistui. Yritä uudelleen." msgid "Failed to resend code. Try again." msgstr "Koodin uudelleenlähetys epäonnistui. Yritä uudelleen." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Vahvistuskoodin uudelleenlähetys epäonnistui. Yritä myöhemmin uudelleen." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Viestin lähetys epäonnistui. Paina pitkään nähdäksesi vaihtoehdot. msgid "Failed to send report. Try again." msgstr "Raportin lähettäminen epäonnistui. Yritä uudelleen." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Vahvistussähköpostin lähetys epäonnistui. Yritä myöhemmin uudelleen." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Käynnistys epäonnistui" @@ -15551,15 +15381,15 @@ msgstr "Suodata käyttäjän mukaan" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Suodata kaikki" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Suodata jäsenet, joilla ei ole roolia" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Seuraa tätä kanavaa" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Seuraa saadaksesi nämä ilmoitukset valitsemassasi kanavassa." @@ -15773,7 +15603,7 @@ msgstr "Seurattu kanava {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Seuratut kanavat" @@ -15857,11 +15687,6 @@ msgstr "Vain brittiläisille silmille..." msgid "For me" msgstr "Minulle" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Tässä tarkistuksessa lähetät meille tekstiviestin sen sijaan, että saisit sen meiltä." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Vahvista turvallisuussyistä henkilöllisyytesi, jotta voit jatkaa." @@ -15905,7 +15730,7 @@ msgstr "Pakota latausluuranko" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Pakota aikuisille tarkoitettu media" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Pakota siirto AFK-kanavalle" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Pakota {permissionName}-käyttöoikeuden puuttuminen" @@ -15948,7 +15773,7 @@ msgstr "Pakota mukautetun URL-osoitteen vastuuvapauslausekkeen näyttäminen" msgid "Force show voice connection" msgstr "Näytä aina puheyhteys" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Pakota hidas tila käyttöön" @@ -16020,7 +15845,7 @@ msgstr "Välitä media" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Välitä viesti" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Maantieteellisen eston peittokuva" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Maarajoitettu" @@ -16490,12 +16315,6 @@ msgstr "Hanki animoitu avatar ja banneri, tilaajamerkki, haluamasi nelinumeroine msgid "Get monthly" msgstr "Hanki kuukausittain" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Pyydä uusi koodi" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Lahjakoodit" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Lahjan kesto" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Lahjavarasto" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Lahjavaraston kulku" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Lahjaa ei löydy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Lahja lunastettu" @@ -17030,7 +16849,7 @@ msgstr "Ryhmäkeskustelu" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hei {displayName}, viimeistele tilisi rekisteröinti, jotta et menetä käyttöoikeuttasi." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hei {displayName}, vahvista sähköpostiosoitteesi." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hei {displayName}, emme voi toimittaa sähköpostia osoitteeseesi. Lisää toimiva sähköpostiosoite tilisi vahvistamiseksi." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Piilotetaanko oma näytönjako?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Korkea" @@ -17755,11 +17579,6 @@ msgstr "Olen työkaluvihje" msgid "I changed my mind" msgstr "Muutin mieleni" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Tarvitsen toisen tavan" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Jos ilmoitus koskee tiettyä viestiä, ilmoita siitä viestistä. Viesti msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Jos tämä ilmoitus koskee tiettyjä viestejä, ilmoita mieluummin niistä tärkeimmästä. Viesti-ilmoitukset antavat turvallisuustiimillemme selkeimmän kontekstin, ja lisätietojen lisääminen kommentteihin voi auttaa meitä käsittelemään sen nopeammin. Jatka käyttäjästä ilmoittamista kokonaisuutena vain, jos viestistä ilmoittaminen ei kattaisi laajempaa ongelmaa." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Jos et voi vahvistaa tekstiviestillä" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Jos et voi käyttää mitään vahvistustapaa, ota yhteyttä tukeen." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Käyttöliittymän koko" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Virheellinen äänitiedosto" @@ -18674,8 +18483,10 @@ msgstr "Virheellinen JSON. Liitä koko vastaus yllä olevasta URL-osoitteesta." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Liity äänipuheluun" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Liity äänikanavalle" @@ -19613,16 +19424,6 @@ msgstr "Lue lisää Visionääristä" msgid "Leave" msgstr "Poistu" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Poistutaanko {count, plural, one {# yhteisöstä} other {# yhteisöstä}} ja jätetään tämä tarkistus sivuun?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Poistu ja siirrä sivuun" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Anna ruudunlukijoiden ilmoittaa uusista viesteistä niiden saapuessa avoinna olevalle kanavalle. Ilmoitusääniin tämä ei vaikuta." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Anna yhteisön valvoa itse itseään" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Kirjasto" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Kirjasto täynnä (enintään {max} ääntä). Poista yksi ennen uuden lisäämistä." @@ -19812,7 +19613,7 @@ msgstr "Kirjasto: {count}/{max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Elinikäinen" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Ladataan..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Ladataan…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Matala" @@ -20416,7 +20217,7 @@ msgstr "Hallinnoi yhteisön ominaisuuksia" msgid "Manage emoji & stickers" msgstr "Hallinnoi emojeita ja tarroja" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Hallinnoi saapuvia webhookeja, jotka voivat lähettää viestejä tälle kanavalle." @@ -20514,7 +20315,7 @@ msgstr "Merkitse kaikki lukemattomat saapuneet-kanavat luetuiksi heti kysymätt msgid "Mark as read" msgstr "Merkitse luetuksi" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Merkitse lunastetuksi" @@ -20676,14 +20477,14 @@ msgstr "Aikuisille tarkoitettu yhteisö" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Aikuisille tarkoitettu sisältö" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Aikuisille tarkoitettu sisältö ja sisältövaroitukset" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Suurin käyttöikä (päivää)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Paras suoja perheystävällisille tiloille" @@ -20924,7 +20725,7 @@ msgstr "Pysäytä toisto" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Jäsenen porttikielto poistettu" msgid "Member updated" msgstr "Jäsenen tiedot päivitetty" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Jäsenen vahvistus" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Jäsenen vahvistustaso" @@ -21048,7 +20849,7 @@ msgstr "Jäsenet poistetaan, kun he ovat offline-tilassa, ellei heille ole annet msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Jäsenet, joilla on oikeus \"{pinMessagesPermissionLabel}\", voivat kiinnittää viestejä kaikkien nähtäville." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Jäsenet, joilla on rooli, voivat ohittaa nämä tarkistukset. Julkisissa tiloissa suosittelemme ottamaan vahvistuksen käyttöön." @@ -21153,7 +20954,7 @@ msgstr "Maininnat sinusta näkyvät täällä {retentionDays} päivän ajan." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Vain maininnat" @@ -21292,7 +21093,7 @@ msgstr "Viestien näyttöasetukset ovat käytettävissä vain työpöytäsovellu msgid "Message editing" msgstr "Viestin muokkaus" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Viesti välitetty" @@ -21341,7 +21142,7 @@ msgstr "Viestinsyötön painikkeet" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Viesti on liian pitkä" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Viestien esikatselut yksityisviestiluettelossa" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Viesti julkaistu" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Viestit, jotka julkaistaan kanavalla #{sourceName}, näkyvät nyt kanavalla #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Tähän kopioidaan näissä ilmoituskanavissa julkaistut viestit." @@ -21504,7 +21305,7 @@ msgstr "Viestit, jotka julkaistaan näissä ilmoituskanavissa, kopioidaan kanavi msgid "Messages you can bookmark" msgstr "Viestit, jotka voit kirjanmerkätä" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Viestintä on tilapäisesti keskeytetty tässä yhteisössä." @@ -21733,30 +21534,30 @@ msgstr "Malli vanhenee 1 päivän kuluttua" msgid "Mock expires in 7 days" msgstr "Malli vanhenee 7 päivän kuluttua" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Simuloi maantieteellisen eston peittokuva" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Simuloi lahjavarasto" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simuloi saapuva puhelu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Simuloi aikuisille tarkoitetun sisällön kanavaportin syy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Simuloi aikuisille tarkoitetun sisällön mediaportin syy" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Simuloi Ison-Britannian sijainti" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Käyttäjien testiavatarit eri kokoisina ja kaikilla tilayhdistelmillä." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Testiversio" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Simuloidut tuotepolut" @@ -22698,14 +22494,16 @@ msgstr "Uusi yhteisö mykistetty" msgid "New direct message" msgstr "Uusi yksityisviesti" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Uusi sähköpostiosoite" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Uuden sähköpostiosoitteen lomake" @@ -22816,9 +22614,7 @@ msgstr "Uusimmat ensin" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Seuraava" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Ei" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Ei {attachFilesPermission}-käyttöoikeutta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Ei {sendMessagesPermission}-käyttöoikeutta" @@ -23005,7 +22801,7 @@ msgstr "Ei tallennettavia muutoksia" msgid "No channels available" msgstr "Ei kanavia saatavilla" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Kanavia ei löytynyt" @@ -23233,11 +23029,6 @@ msgstr "Käyttöoikeuksia ei löytynyt" msgid "No personal words yet." msgstr "Ei vielä henkilökohtaisia sanoja." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Ei puhelinnumeroa" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Ei tuloksia" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Ei tuloksia" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Käyttäjiä ei löytynyt" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Vahvistusta ei tarvita." @@ -23452,7 +23243,7 @@ msgstr "Vahvistusta ei tarvita." msgid "No verification methods available" msgstr "Vahvistustapoja ei ole saatavilla" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Ei webhookeja" @@ -23504,7 +23295,7 @@ msgstr "Ei muunnosta" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Ei mitään" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Ei mitään (normaali toiminta)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "norja" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Ei ollut jäsenenä tarpeeksi kauan" @@ -23798,9 +23589,9 @@ msgstr "Esineet" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Pois päältä" @@ -23848,7 +23639,7 @@ msgstr "Vanhimmat ensin" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Päällä" @@ -23884,11 +23675,6 @@ msgstr "Yhtä tai useampaa liitettä ei voitu lukea tai ladata. Tiedosto on ehk msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Yksi tai useampi tiedostoista, joita yrität ladata, ylittää tiedostokohtaisen enimmäiskoon {maxSizeFormatted}." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Pikainen tarkistus" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Vain kaiuttimet" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Vain yhteisön omistaja voi muuttaa tätä asetusta" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Avaa emoji selaimessa" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Avaa emojivalitsin" @@ -24382,12 +24168,8 @@ msgstr "Avaa valikko -kuvake" msgid "Open message history threshold" msgstr "Avaa viestihistorian raja-asetukset" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Avaa peittokuva" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Avaa valintaluettelo" @@ -24485,11 +24267,6 @@ msgstr "Avaa uusi sovellus. Olet jo kirjautuneena sisään." msgid "Open the shortcuts list for quick actions." msgstr "Avaa pikanäppäinluettelo nopeita toimintoja varten." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Avaa vahvistussähköposti ja käytä siinä olevaa linkkiä. Tämä ikkuna päivittyy linkin avaamisen jälkeen." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Avaa ääni- ja videoasetukset" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Avaa selaimesi, kirjaudu sisään ja syötä sitten alla oleva koodi tilisi yhdistämiseksi." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Avaa viestisi" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Avaa vanha {PRODUCT_NAME}-sovelluksesi, valitse \"Linkitä uusi laite\" ja syötä sitten alla oleva koodi." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Avaa puhelimen viestisovellus ja luo uusi tekstiviesti." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Avaa puhelimen viestisovellus ja aloita uusi tekstiviesti." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Muu reaktio…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Puhelinnumeron tarkistuksemme ei ole juuri nyt käytettävissä. Tämä on meidän vikamme, ei numerosi. Odota muutama minuutti ja yritä samaa numeroa uudelleen." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Tietojenkalastelu, petokset, haitalliset linkit tai väärät väittämät, jotka todennäköisesti aiheuttavat todellista haittaa." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Puhelin" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Puhelinnumero" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Puhelinnumero vaaditaan" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Puhelinnumero vahvistettu" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Puhelinnumeron uudelleenvahvistus vaaditaan" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Puhelinvaihe" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Puhelinnumeron vahvistus ei ole käytettävissä tällä tilillä. Käytä toista menetelmää tai ota yhteyttä tukeen." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Puhelinnumeron vahvistus vaaditaan" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Valitse 4-numeroinen luku käyttäjänimesi jälkeen" msgid "Pick the appearance this administrator account should start with." msgstr "Valitse ulkoasu, jolla tämä pääkäyttäjätili aloittaa." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Valitse menetelmä, jonka voit suorittaa nyt." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Kuva kuvassa" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Kiinnitä" @@ -25471,7 +25176,7 @@ msgstr "Kiinnitä ryhmäkeskustelu" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Kiinnitä tai poista kiinnitys mistä tahansa viestistä." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Kiinnitä tämä viesti kanavalle kaikkien nähtäväksi." @@ -26227,18 +25932,18 @@ msgstr "Profiilin väri" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Profiilin muokkaus" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Profiilin muokkaus yhteisössä {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Profiilin muokkauslomake" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Profiilityyppi" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profiili päivitetty" @@ -26340,7 +26045,7 @@ msgstr "Kysy, kun uusi äänilaite yhdistetään" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Hyökkäyksen koordinointi" msgid "Rate" msgstr "Nopeus" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Nopeusrajoitettu" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Upotuksen raaka JSON" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Poistetaanko käyttäjä {userName} kavereistasi?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Poista kaikki" @@ -27290,7 +26990,7 @@ msgstr "Poistetaanko kaikki {emojiNameWithColons}-reaktiot tästä viestistä?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Poista kaikki reaktiot" @@ -27899,20 +27599,10 @@ msgstr "Ilmoitetun käyttäjän tunniste (valinnainen)" msgid "Reposts: <0>{countLabel}" msgstr "Uudelleenjulkaisut: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Pyydä ensin uusi koodi." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Pyydä uusi palautuslinkki" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Pyydä ensin vahvistuskoodi." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Pyynnöt" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Vaadi 2FA moderointitoimiin" @@ -27958,7 +27648,7 @@ msgstr "Vaadi OAuth2-koodivaltuutus" msgid "Require passkey" msgstr "Vaadi pääsyavain" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Vaadi moderaattoreilta kaksivaiheinen todennus, ennen kuin he voivat antaa porttikiellon, poistaa jäseniä yhteisöstä, antaa jäähyn tai poistaa viestejä." @@ -27972,46 +27662,6 @@ msgstr "Pakollinen" msgid "Required 2FA for moderation actions" msgstr "Vaadittu 2FA moderointitoiminnoille" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Pakollisen toiminnon oletusvälilehti" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Pakollisen toiminnon kulku" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Pakollisen toiminnon puhelinvaihe" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Pakollisen toiminnon uudelleenlähetys latautuu" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Pakollisen toiminnon uudelleenlähetyksen tulos" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Pakollisen toiminnon uudelleenvahvistusteksti" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Pakollisen toiminnon variantti" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Pakollisten toimintojen peittokuva" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Vaatii uudelleenohjaus-URI:n ja valtuutuskoodin, kun tämä botti kutsutaan." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Edellyttää vahvistettua sähköpostiosoitetta ja vähintään 5 minuuttia vanhaa tiliä." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Edellyttää vahvistettua sähköpostiosoitetta." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Edellyttää vahvistettua puhelinnumeroa." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Edellyttää kaiken saman kuin keskitaso ja lisäksi vähintään 10 minuutin jäsenyyttä yhteisössä." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Lähetä uudelleen ({resendSecondsRemaining} s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Lähetä uudelleen ({secondsRemaining} s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Lähetä uudelleen -painike latautuu" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Lähetä koodi uudelleen" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Lähetä sähköposti uudelleen" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Uudelleenlähetyksen tulos" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Lähetetty uudelleen" @@ -28518,21 +28152,6 @@ msgstr "Näytä" msgid "Reveal spoiler" msgstr "Näytä spoileri" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Vahvista sähköpostiosoitteesi uudelleen tai vahvista puhelinnumerosi, jotta voit jatkaa {productName}-palvelun käyttöä." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Vahvista sähköpostiosoitteesi uudelleen, jotta voit jatkaa {productName}-palvelun käyttöä." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Vahvista puhelinnumerosi uudelleen, jotta voit jatkaa {productName}-palvelun käyttöä." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Kylläisyys" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Kelauksen esikatselu" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Hae kanavia" msgid "Search communities" msgstr "Hae yhteisöjä" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Hae maita..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Hae maita…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Valitse asuinmaasi." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Valitse…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Lähetä" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Lähetä ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Lähetä toinen ilmoitus" msgid "Send button" msgstr "Lähetä-painike" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Lähetä koodi" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Lähetä viestejä" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Viestien lähetys estetty" @@ -30151,32 +29759,11 @@ msgstr "Lähetä tallennettu media {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Lähetä tekstistä puheeksi -viestejä /tts-komennolla. Jäsenet, jotka ovat ottaneet tekstistä puheeksi -toiminnon käyttöön, kuulevat ne ääneen luettuina." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Lähetä koodi <0>{0} numeroon <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Lähetä koodi alla olevaan puhelinnumeroon." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Lähetä tämä koodi" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Lähetetäänkö tämä kiinnitys takaisin menneisyyteen?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Lähetä numeroon" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Lähetä ääniviesti" msgid "Send:" msgstr "Lähetys:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Tekstiviestin lähettäminen tähän puhelinnumeroon on liian kallista {PRODUCT_NAME}-palvelulle, joten pyydämme sinua lähettämään meille tekstiviestin sen sijaan. Tiedämme, ettei tämä ole ihanteellista. Voit myös pyytää tämän instanssin ylläpitäjiä poistamaan tämän vaatimuksen tililtäsi." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Tekstiviestin lähettäminen tähän puhelinnumeroon on liian kallista {PRODUCT_NAME}-palvelulle, joten pyydämme sinua lähettämään meille tekstiviestin sen sijaan. Tiedämme, ettei tämä ole ihanteellista. Voit myös ottaa yhteyttä osoitteeseen <0>{SUPPORT_EMAIL}, jotta voimme poistaa tämän vaatimuksen tililtäsi." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Sarjalähetys" msgid "Serve the token file" msgstr "Julkaise tunnustiedosto" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Palveluvirhe" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Aseta mukautettu pikanäppäin kohteelle \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Aseta mukautettu tila" @@ -30486,18 +30060,6 @@ msgstr "Puhealueeksi asetettiin {region}" msgid "Set the voice region to automatic" msgstr "Puhealueeksi asetettiin automaattinen" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Siirrä tämä tarkistus sivuun" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Siirretäänkö tämä tarkistus sivuun?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Aseta pronominisi" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Aseta tilasi" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Pikanäppäimet eivät ole käytössä näppäinyhdistelmän tallennuksen aikana." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Lyhennä viestiä ja yritä uudelleen." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Näytä {productName}-kuvake ilmaisinalueella tai valikkorivillä" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Näytä sisältövaroitus" @@ -31672,7 +31234,7 @@ msgstr "Hidas tila · odota {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Hidas tila käytössä" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Hitaan tilan viive on {durationLabel}. Odota ennen kuin lähetät uuden viestin." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Hitaan tilan aikaa jäljellä" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Hitaan tilan simulointi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Hitaan tilan jäljellä oleva aika" @@ -31807,11 +31369,6 @@ msgstr "Tasainen vieritys" msgid "Smoother video" msgstr "Sujuvampi video" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Tekstiviestivahvistus ei ole käytettävissä juuri nyt. Yritä myöhemmin uudelleen tai ota yhteyttä tukeen." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Jokin meni pieleen tarraa valmisteltaessa. Kokeile toista tiedostoa tai yritä hetken kuluttua uudelleen." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Jokin meni vikaan julkaisussa. Yritä uudelleen hetken kuluttua." @@ -32009,11 +31566,9 @@ msgstr "Jokin meni pieleen. Lataa sivu uudelleen tai kirjaudu uudelleen sisään msgid "Something went wrong. Try again later." msgstr "Jokin meni pieleen. Yritä myöhemmin uudelleen." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Jokin meni pieleen. Yritä uudelleen." @@ -32352,11 +31907,6 @@ msgstr "SSO-kirjautuminen aikakatkaistiin. Yritä uudelleen." msgid "Staff controls" msgstr "Henkilöstön toiminnot" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Operaattorisi normaalit viestihinnat saattavat olla voimassa." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Tähtianimaatio" msgid "Starred channels" msgstr "Tähdellä merkityt kanavat" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Tilaajan siirto:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Tilaus" @@ -33051,14 +32599,12 @@ msgstr "Tilausskenaariot" msgid "Subtext" msgstr "Lisäteksti" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Onnistui" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Suositellaan useimmille yhteisöille" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Järjestelmä- ja tervetuloviestit" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "{productName}-henkilökunnan järjestelmäilmoituksia. Tähän ei voi vastata." @@ -33765,11 +33311,6 @@ msgstr "Tekstin valinta" msgid "Text size" msgstr "Tekstin koko" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Lähetä meille tekstiviesti puhelimestasi" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "thai" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Kiitos, että autat pitämään palvelun {productName} turvallisena. Tarkistamme ilmoituksesi mahdollisimman pian." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Koodi ei toiminut. Tarkista se ja yritä uudelleen." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Koodi vanhentui. Pyydä uusi koodi." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Tämä ei valmistunut. Olet ehkä jo poistunut joistakin yhteisöistä, ja tilisi on edelleen lukittu. Viimeistele painamalla \"Siirrä tämä tarkistus sivuun\" uudelleen." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Tämä ei mennyt läpi. Mikään ei muuttunut. Yritä uudelleen." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Tuo ei näytä kelvolliselta väriltä. Kokeile heksakoodia, rgb()- tai msgid "That doesn't look like a valid URL." msgstr "Tuo ei näytä kelvolliselta URL-osoitteelta." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Sähköpostiosoite on jo käytössä." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Käyttöoikeusasetus esti oikeudet {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Etsimääsi sivua ei löydy tai se on siirretty." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Puhelinnumeron vahvistus siirrettiin sivuun. Yksi sähköpostivaihe on jäljellä." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Ei kanavia, joihin voisi luoda kutsun." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Tässä yhteisössä ei ole tällä hetkellä annettavia rooleja, mutta voit luoda uuden roolin kohdassa <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Tälle kanavalle ei ole määritetty webhookeja. Luo webhook, jotta ulkoiset sovellukset voivat lähettää viestejä." @@ -34273,7 +33784,7 @@ msgstr "Kutsujen lataamisessa tapahtui virhe. Yritä uudelleen." msgid "There was an error loading the stickers. Try again." msgstr "Tarrojen lataamisessa tapahtui virhe. Yritä uudelleen." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Tämän kanavan webhookien lataamisessa tapahtui virhe. Yritä uudelleen." @@ -34417,7 +33928,7 @@ msgstr "Tämä kanava voi julkaista 10 viestiä peräkkäin, ja sen jälkeen yhd msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Tähän kanavaan voi julkaista 10 viestiä peräkkäin, ja sen jälkeen yhden viestin 6 minuutin välein. Yritä uudelleen muutaman minuutin kuluttua." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Tämä kanava ei tue webhookeja." @@ -34550,12 +34061,12 @@ msgstr "Yhteyttä ei ole vahvistettu." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Sisältää arkaluonteista sisältöä." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Tämä keskustelu ei ole enää saatavilla." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Tässä ryhmässä on liikaa ihmisiä" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Tämä ryhmä on täynnä. Poista joku ennen kuin lisäät lisää ihmisiä." @@ -34715,11 +34226,6 @@ msgstr "Tämä on mukautettu tarra yhteisöstä." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Tämä on ikärajoitettu kanava. Päivitykset voivat mennä vain ikärajoitettuihin kanaviin." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Tämä on roskapostin estotarkistus. Puhelinnumeroasi ei linkitetä tiliisi." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Tämä on poistettu käytöstä" msgid "This is how messages appear" msgstr "Näin viestit näkyvät" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Tämä ei ole tällä hetkellä käytettävissä tililläsi. Pyydä tämän instanssin ylläpitäjiä tarkistamaan se." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Tämä ei ole tällä hetkellä käytettävissä tililläsi. Lähetä sähköpostia osoitteeseen {supportEmail}, niin henkilö tarkistaa asian." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Tämä ei ole etsimäsi kanava." @@ -34792,11 +34288,6 @@ msgstr "Tämä on viimeinen pääsyavaimesi, ja pääsyavaimet ovat tilisi toine msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Tämä on viimeinen pääsyavaimesi. Kun se on poistettu, et voi enää käyttää pääsyavainta toisena vaiheena." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Tämä ei ole matkapuhelinnumero, joten se ei voi vastaanottaa tekstiviestiämme. Kokeile matkapuhelinnumeroa tai ota yhteyttä tukeen, jos uskot tämän olevan virhe." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Tämä viesti on jo poistettu." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Tämä viesti on jo julkaistu" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Tätä viestiä ei enää ole." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Tämä lempinimi näkyy vain tässä yhteisössä" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Tämä numero vahvistetaan lähettämällä meille tekstiviesti. Palaa takaisin ja aloita puhelinnumeron vahvistus uudelleen, niin saat koodin ja numeron, johon viesti lähetetään." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Tämä numero vahvistetaan lähettämällä meille tekstiviesti, ei meiltä tulevalla tekstiviestillä." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Tämän osallistujan äänet on mykistetty" msgid "This participant was deafened by moderators" msgstr "Moderaattorit mykistivät tämän osallistujan äänet" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Tätä puhelinnumeroa ei voi käyttää. Kokeile toista matkapuhelinnumeroa tai ota yhteyttä tukeen." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Tätä puhelinnumeroa on jo käytetty. Kokeile toista numeroa tai ota yhteyttä tukeen." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Tällä käyttäjällä ei ole rooleja tässä yhteisössä." msgid "This user is already banned from the community." msgstr "Tämä käyttäjä on jo porttikiellossa tässä yhteisössä." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Tämä käyttäjä ei ole enää saatavilla." @@ -35065,11 +34536,6 @@ msgstr "Alustan ylläpitäjä lisäsi tämän käyttäjän pakolla tähän yhtei msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Vahvistusistunto vanhentui. Palaa sovellukseen {productName} ja siirry uudelleen kassalle." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Tämä vahvistusistunto vanhentui. Aloita alusta." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Tämä kirjaa sinut ulos, poistaa välimuistitiedostot ja tallennetut is msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Tämä merkitsee kaikki ulkoiset linkit luotetuiksi ja ohittaa varoituksen jokaisella verkkotunnuksella. Nykyiset luotetut verkkotunnuksesi korvataan. Tämä on vähemmän turvallista." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Tämä ikkuna päivittyy automaattisesti, kun olemme vastaanottaneet viestisi." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Otsikkorivi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Otsikkorivin alusta" @@ -35470,18 +34931,11 @@ msgstr "Sävy" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Sovita HDR-kuvat vakiokirkkausalueelle, mikä laskee huippukirkkautta." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Liian monta yritystä. Odota hetki ja yritä sitten uudelleen." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Liian monta yhteisöä" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Liian monta pyyntöä. Yritä uudelleen myöhemmin." @@ -36151,8 +35605,10 @@ msgstr "Yhtäkään emojia ei voitu valmistella lähetettäväksi. Seuraavat vir #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Ei käytettävissä" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Luokittelematon" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Lunastamaton tili" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Järjestämätön" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Irrota kiinnitys" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Poista viestin kiinnitys" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Poistetaanko viestin kiinnitys?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Tallentamattomia muutoksia" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Äänitiedostoa ei tueta." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Kunnes laitan sen takaisin päälle" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Vahvistamaton sähköposti" @@ -36958,12 +36414,7 @@ msgstr "Päivitä {productName}, jotta voit tarkastella tätä viestiä." msgid "Update app" msgstr "Päivitä sovellus" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Päivitä sähköpostiosoite" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Päivitä tilani" @@ -37306,18 +36757,13 @@ msgstr "Käytä {url}-merkintää siihen kohtaan, johon kuvan URL-osoite lisät msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Määritä erillisessä ikkunassa viestihistorian raja-aika jäsenille, joilla ei ole {readMessageHistoryPermissionLabel} -käyttöoikeutta." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Käytä toista sähköpostiosoitetta ja vahvista se koodilla." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Käytä oikeaa" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Käytä todellista premium-tyyppiä" @@ -37335,16 +36781,6 @@ msgstr "Käytä toista maksutapaa" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Käytä todennussovellusta luodaksesi koodeja kaksivaiheiseen todennukseen" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Käytä sähköpostiosoitetta, johon pääset käsiksi. Lähetämme sinne koodin." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Käytä eri sähköpostiosoitetta kuin nykyinen." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Käytä tummaa teemaa koko sovelluksessa" msgid "Use default" msgstr "Käytä oletusta" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Käytä toista sähköpostia" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Käytä sähköpostia" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Käytetäänkö pääsyavaimia kaksivaiheisessa todennuksessa?" msgid "Use passkeys to sign in without a password" msgstr "Käytä pääsyavaimia kirjautuaksesi sisään ilman salasanaa" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Käytä puhelinta" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Käytä uudelleenvahvistustekstiä" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Käyttäjä siirretään toiselle kanavalle" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Käyttäjää ei löydy" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Vahvistus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Vahvistus- ja jäsenyysrajoitukset" @@ -37970,15 +37387,8 @@ msgstr "Vahvistuskoodi" msgid "Verification code sent" msgstr "Vahvistuskoodi lähetetty" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Vahvistuskoodi lähetetty. Tarkista uuden sähköpostiosoitteesi saapuneet-kansio." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Vahvistussähköposti lähetetty. Tarkista saapuneet-kansiosi." @@ -38038,23 +37448,6 @@ msgstr "Vahvista henkilöllisyys -lomake" msgid "Verify it's you" msgstr "Vahvista henkilöllisyytesi" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Vahvista puhelinnumero" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Vahvista puhelinnumero" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Vahvista puhelinnumero -lomake" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Vahvista sähköpostiosoitteesi ennen todennussovelluksen lisäämistä." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Vahvista sähköpostiosoitteesi ennen kuin vaihdat yhteisön lempinimeäsi, avataria, banneria, kuvaustasi, pronomineja tai korostusväriä." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Vahvista sähköpostiosoitteesi ennen kuin vaihdat käyttäjänimeäsi, näyttönimeäsi, avataria, banneria, kuvaustasi, pronomineja, aikavyöhykettä tai {premiumProductName}-merkin yksityisyyttä." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Vahvista sähköpostiosoitteesi ennen yhteisöprofiilin muokkaamista. Voit esikatsella sitä täällä." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Vahvista sähköpostiosoitteesi ennen profiilin muokkaamista. Voit esikatsella sitä täällä." @@ -38113,11 +37506,6 @@ msgstr "Vahvista sähköpostiosoitteesi ennen kaveripyyntöjen lähettämistä." msgid "Verify your email first" msgstr "Vahvista sähköpostiosoitteesi ensin" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Vahvista sähköpostiosoitteesi tai puhelinnumerosi jatkaaksesi {productName}-palvelun käyttöä." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Vahvista sähköpostisi ostaaksesi lahjoja." msgid "Verify your email to change your username" msgstr "Vahvista sähköpostiosoitteesi vaihtaaksesi käyttäjänimesi" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Vahvista sähköpostiosoitteesi jatkaaksesi {productName}-palvelun käyttöä." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Vahvista sähköpostiosoitteesi muokataksesi yhteisöprofiilia" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Vahvista sähköpostiosoitteesi muokataksesi profiiliasi" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Versio" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Erittäin korkea" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Suurenna äänenvoimakkuutta" msgid "Wait a moment before deleting more messages." msgstr "Odota hetki ennen kuin poistat lisää viestejä." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Odota hetki. Tämä ikkuna sulkeutuu automaattisesti, kun olemme vastaanottaneet viestisi." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Viive viestien välillä. Jäsenet, joilla on oikeus \"{bypassSlowmodePermissionLabel}\", voivat ohittaa sen." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Odota tässä" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Odotetaan pääsyavainta…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Odotetaan hitaan tilan päättymistä kanavalla {forwardChannelDisplayName}." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Odotetaan hitaan tilan päättymistä yhdessä tai useammassa valitussa kanavassa." @@ -39115,16 +38482,6 @@ msgstr "Teemaa ei voitu lukea. Se voi olla vioittunut tai virheellinen." msgid "We couldn't remove that account. Try again." msgstr "Tilin poistaminen ei onnistunut. Yritä uudelleen." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Emme voineet vahvistaa tätä numeroa automaattisesti. Ota yhteyttä tukeen, niin henkilö tarkistaa tilisi." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Emme lähetä vahvistustekstiviestejä tähän maahan. Kokeile toisesta maasta olevaa mobiilinumeroa tai ota yhteyttä tukeen." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Tälle tilille löytyi olemassa oleva {premiumProductFullName}-tilaus. V msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Laskimme tuotteen {premiumProductName} hintaa Brasiliassa. Se on nyt {monthlyPrice} kuukaudessa tai {yearlyPrice} vuodessa." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Tarvitsemme yhden vahvistusvaiheen, ennen kuin voit jatkaa. Tämä auttaa suojaamaan tilejä ja pitämään roskapostin poissa palvelusta {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Tarvitsemme kaksi vahvistusvaihetta, ennen kuin voit jatkaa. Näytämme yhden vaiheen kerrallaan." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Suosittelemme tallentamaan nämä koodit nyt, jotta et lukkiudu ulos tililtäsi." @@ -39167,11 +38514,6 @@ msgstr "Lähetimme koodin osoitteeseen {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Esitäytämme sähköpostiosoitteen {prefillEmail}, kun kirjautuminen avautuu selaimessa." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Lähetämme tekstiviestikoodin, kun se on saatavilla." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Antaisimme sinulle mielellämme enemmän kuin elinikäisen {PREMIUM_PRODUCT_NAME}-tilauksen, mutta se rikkoisi aika-avaruusjatkumon. Lähetetäänkö lahja kaverille sen sijaan?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Käsittelemme tämän mahdollisimman pian. Saat sähköpostin, kun arkistosi on valmis." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Palautamme edellisen sähköpostiosoitteesi, kirjaamme vanhat istunnot ulos, poistamme puhelinnumerot, poistamme monivaiheisen todennuksen käytöstä ja turvaamme tilisi uudella salasanalla." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Palautamme aiemman sähköpostiosoitteesi, kirjaamme ulos vanhat istunnot, poistamme käytöstä monivaiheisen tunnistautumisen ja suojaamme tilisi uudella salasanalla." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Lähetämme vahvistuskoodin sähköpostiisi, ennen kuin voit vaihtaa sal msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Lähetämme vahvistuskoodin sähköpostiisi, ennen kuin voit tarkastella varakoodejasi." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Lähetämme tekstiviestikoodin, kun se on saatavilla. Numerosi ei ole linkitetty tiliisi. Säilytämme vain salatun merkinnän ilman käyttäjätunnusta rajoitetun ajan." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Vahvistamme nykyisen ja uuden sähköpostiosoitteesi kertakäyttökoodeilla." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook luotu" @@ -39331,7 +38669,7 @@ msgstr "Webhook päivitetty" msgid "Webhook URL" msgstr "Webhook-URL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhookit" @@ -39486,8 +38824,8 @@ msgstr "Jakamasi sisältö ei päivity" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Mitä kuuluu?" @@ -39967,21 +39305,11 @@ msgstr "Voit poistaa <0>{readMessageHistoryPermissionLabel}-käyttöoikeuden msgid "You can sign back in at any time." msgstr "Voit kirjautua takaisin milloin tahansa." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Voit milloin tahansa pyytää tämän instanssin ylläpitäjiltä ihmisen tekemää tarkistusta." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Voit silti luoda tilin tai kirjautua sisään. Jos kutsut otetaan myöhemmin uudelleen käyttöön, voit liittyä samalla linkillä." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Voit silti pyytää ihmisen tekemää tarkistusta lähettämällä sähköpostia osoitteeseen {supportEmail} milloin tahansa." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Voit käyttää linkkejä, emojeita ja Markdownia." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Et voi lisätä ilmaisuja sinne" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Et voi lisätä uusia reaktioita jäähyn aikana." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Et voi ystävystyä itsesi kanssa" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Et voi vaihtaa lempinimeäsi täällä" @@ -40094,7 +39422,7 @@ msgstr "Et voi lähettää itsellesi kaveripyyntöä." msgid "You can't send messages in this channel." msgstr "Et voi lähettää viestejä tällä kanavalla." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Et voi lähettää viestejä tässä yhteisössä." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Sinulla ei ole oikeutta tehdä tätä tälle jäsenelle." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Sinulla ei ole oikeutta liittyä tälle äänikanavalle" @@ -40243,7 +39571,7 @@ msgstr "Sinulla ei ole oikeutta nimetä tätä emojia uudelleen. Nimi palautetti msgid "You have been banned from this community." msgstr "Sinut on porttikielletty tästä yhteisöstä." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Olet estänyt käyttäjän {username}. Poista esto lähettääksesi viestejä." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Sinulla on tallentamattomia muutoksia." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Sinulla on tallentamattomia muutoksia. Tallenna tai palauta ennen poistumista." @@ -40270,7 +39598,7 @@ msgstr "Sinulla on tallentamattomia muutoksia. Tallenna tai palauta ennen poistu msgid "You haven't authorized any applications to access your account." msgstr "Et ole valtuuttanut yhtään sovellusta käyttämään tiliäsi." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Et ole ollut tämän yhteisön jäsen tarpeeksi kauan lähettääksesi viestejä." @@ -40326,11 +39654,6 @@ msgstr "Sinun on hyväksyttävä käyttöehdot tilin luomiseksi" msgid "You must verify your email before sending a report." msgstr "Sinun on vahvistettava sähköpostiosoitteesi ennen ilmoituksen lähettämistä." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Jotta voit vaihtaa sähköpostiosoitteesi täältä, tarvitset pääsyn nykyiseen sähköpostiisi. Käytä puhelinvarmennusta, jos se on saatavilla, tai ota yhteyttä tukeen." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Tarvitset \"{manageRolesPermissionLabel}\" -käyttöoikeuden muokatakses msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Tarvitset \"{manageRolesPermissionLabel}\" -käyttöoikeuden muokataksesi näitä käyttöoikeuksia." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Tarvitset \"{manageWebhooksPermissionLabel}\" -käyttöoikeuden nähdäksesi ja muokataksesi tämän kanavan webhookeja." @@ -40384,18 +39707,14 @@ msgstr "Sinun on viimeisteltävä tilisi rekisteröinti, ennen kuin voit luoda y msgid "You need to claim your account before you can start a direct message." msgstr "Sinun on viimeisteltävä tilisi rekisteröinti, ennen kuin voit aloittaa yksityisviestin." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Sinun on viimeisteltävä tilisi rekisteröinti, jotta voit lähettää yksityisviestejä." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Sinun on viimeisteltävä tilisi rekisteröinti, jotta voit lähettää viestejä tässä yhteisössä." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Sinun on vahvistettava puhelinnumero lähettääksesi viestejä tässä yhteisössä." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Sinun on vahvistettava sähköpostiosoitteesi, ennen kuin voit aloittaa msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Sinun on vahvistettava sähköpostiosoitteesi, ennen kuin voit ostaa tuotteen {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Sinun on vahvistettava sähköpostiosoitteesi lähettääksesi viestejä tässä yhteisössä." @@ -40424,11 +39743,6 @@ msgstr "Sinun on vahvistettava sähköpostiosoitteesi lähettääksesi viestejä msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Sinulla tai jollakulla lisäämistäsi henkilöistä on jo avoinna suurin sallittu määrä ryhmäkeskusteluja. Poistu yhdestä ja yritä uudelleen." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Pysyt yhteisöissä {ownedNames}. Omistajat eivät voi poistua omasta yhteisöstään." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Moderaattorit mykistivät äänesi" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Sinut ohjataan osoitteeseen {redirectHostname} valtuutuksen jälkeen." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Poistut {count, plural, one {# yhteisöstä, jota tämä tarkistus koskee} other {# yhteisöstä, joita tämä tarkistus koskee}}, ja tilisi toimii taas normaalisti." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Poistut yhteisöistä {guildNames}. Mitään julkaisemaasi ei poisteta, ja voit liittyä uudelleen myöhemmin." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Sinun täytyy vielä suorittaa sähköpostivaihe." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Toimit liian nopeasti" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Toimit liian nopeasti. Odota hetki ja yritä uudelleen." @@ -40636,7 +39935,7 @@ msgstr "Lähetät viestejä liian nopeasti" msgid "You're streaming!" msgstr "Striimaat!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Sinulla on jäähy. Viestit, reaktiot ja puhe ovat keskeytettyinä, kunnes jäähy päättyy." @@ -40764,25 +40063,25 @@ msgstr "{storeName}-uusimismaksusi epäonnistui, mutta <0/> pysyvät voimassa <1 msgid "Your account" msgstr "Tilisi" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Tilisi palautuu heti normaaliksi, etkä tarvitse puhelinnumeroa nyt. Tämä ei ole pysyvä vapautus, ja voimme pyytää tätä tarkistusta myöhemmin uudelleen." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Tilisi on nyt yhdistetty. Voit sulkea tämän välilehden ja palata sovellukseen." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Tilisi on taas kunnossa." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Tilisi on rajoitettu" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Tilisi on rajoitettu. Tarkista sähköpostistasi ohjeet rajoitusten poistamiseksi." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Tilisi rekisteröintiä ei ole vielä viimeistelty. Ilman sähköpostiosoitetta ja salasanaa et voi kirjautua sisään muilta laitteilta ja saatat menettää pääsyn tiliisi. Viimeistele tilisi rekisteröinti nyt, niin tilisi on turvassa." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Tilisi on liian uusi viestien lähettämiseen tässä yhteisössä." @@ -40800,11 +40099,6 @@ msgstr "Tilisi edellyttää monivaiheista todennusta, mutta tällä laitteella e msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Tilisi ei ole enää suojattu kaksivaiheisella todennuksella, kun kirjaudut sisään salasanallasi. Menetät myös korotetut käyttöoikeudet yhteisöissä, jotka vaativat kaksivaiheista todennusta." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Tilisi toimii taas normaalisti heti, eikä mitään poisteta. Voimme pyytää tätä tarkistusta uudelleen myöhemmin." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Tarkistamme korttisi paikallista hinnoittelua varten. Tämä kestää yl msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Korttisi kelpaa. Ohjaamme sinut nyt maksusivulle." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Operaattorisi mukaan numero ei ole käytössä. Tarkista se ja yritä uudelleen tai ota yhteyttä tukeen, jos se on oikein." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Muokkauksesi tavoittavat kaikki kanavaa seuraavat yhteisöt, ja niiden julkaiseminen voi kestää hetken. Jokainen julkaistu viesti sallii 3 nopeaa muokkausta, sen jälkeen 1 muokkauksen 20 minuutin välein." @@ -40869,21 +40158,6 @@ msgstr "Laitteesi pyytää sinua tallentamaan päivitetyn version pääsyavaimes msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Laitteesi pyytää sinua tallentamaan päivitetyn version pääsyavaimesta {name}. Käytä samaa puhelinta tai turva-avainta, jota juuri käytit." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Sähköpostiosoitteesi on päivitetty." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Sähköpostiosoitteeseesi ei voitu toimittaa viestejä. Lisää toimiva sähköpostiosoite, jotta voimme pitää tilisi tavoitettavissa." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Sähköpostiisi ei voitu toimittaa viestejä. Päivitä se, jotta voit jatkaa {productName}-palvelun käyttöä." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Sähköpostiosoitteesi on vahvistettu. Voit nyt kirjautua tilillesi." @@ -41000,21 +40274,11 @@ msgstr "Viestisi päivitys epäonnistui" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Viimeisin ostoksesi ei ole enää hyvitysajan sisällä. Ota yhteyttä tukeen laskutusasioissa." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "uusi sähköpostiosoitteesi" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Uusi lempinimesi, tai jätä tyhjäksi palauttaaksesi sen." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Numeroasi ei ole yhdistetty tiliisi. Säilytämme vain salatun merkinnän ilman käyttäjätunnusta rajoitetun ajan." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Maksusi peruttiin. Voit nyt sulkea tämän välilehden ja palata sovellukseen." @@ -41054,11 +40318,6 @@ msgstr "Ostamasi lahjat" msgid "your region" msgstr "alueesi" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Rekisteröitymisesi vaatii ylimääräisen roskapostitarkistuksen, ennen kuin voit jatkaa." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/fr/messages.po b/fluxer_app/src/features/i18n/locales/fr/messages.po index 86e94734f..6c2872c47 100644 --- a/fluxer_app/src/features/i18n/locales/fr/messages.po +++ b/fluxer_app/src/features/i18n/locales/fr/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# réaction} other {# réactions}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# personne a réagi} other {# personnes ont réagi}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# seconde} other {# secondes}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} à {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Votre lien d’invitation expire dans # seconde.} other {Votre lien d’invitation expire dans # secondes.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Sélection : {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 minute" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 heures" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 mois (1 an)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Codes de secours 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Exigence de la 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 membres (en train d'écrire)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 mois" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 heures" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 mois" @@ -2575,11 +2575,6 @@ msgstr "une minute" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Une nouvelle version pour ordinateur est disponible. Téléchargez le programme d’installation, puis exécutez-le pour mettre à jour {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Un nouveau code de vérification a été envoyé." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Données du compte" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Ce compte existe pour envoyer du spam, escroquer ou abuser de la plateforme." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Compte limité" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "État du compte" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Compte trop récent" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Vérification du compte requise" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Ajouter un bot à une communauté avec les permissions demandées" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Ajouter un commentaire (facultatif)" @@ -3054,8 +3052,10 @@ msgstr "Ajouter un sujet à ce salon" msgid "Add a word…" msgstr "Ajouter un mot…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Ajouter une adresse e-mail valide" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Ajoutez un compte pour continuer." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Ajoutez d'abord un e-mail et un mot de passe à votre compte." @@ -3424,11 +3424,6 @@ msgstr "Ajouté : {createdDate} • dernière utilisation : {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Commentaires supplémentaires (facultatifs)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Vérification supplémentaire requise" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Toutes les langues" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Résiliation déjà programmée" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Signaler également ce message à l'équipe de sécurité de {productName}" @@ -4713,11 +4708,6 @@ msgstr "Demander confirmation avant de lancer des appels" msgid "Ask for a passkey after your password when you sign in" msgstr "Demander une clé d'accès après votre mot de passe lors de la connexion" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Demandez aux administrateurs de cette instance de vérifier votre compte. Cette instance est gérée de manière indépendante, et seuls ses administrateurs peuvent modifier votre compte." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Supprime automatiquement les paramètres de suivi (comme utm_source, fbc msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Supprimer automatiquement les paramètres de suivi des URL dans les messages que vous envoyez" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Analyser automatiquement les messages à la recherche de contenu explicite dans les salons qui ne sont pas marqués comme réservés aux adultes." @@ -5359,8 +5349,6 @@ msgstr "Absent(e) pour le moment" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Retour" @@ -6506,11 +6494,6 @@ msgstr "Les caméras et les appareils de capture virtuels sont sélectionnés ic msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Caméras désactivées au-delà de {voiceChannelCameraUserLimit} participants" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Vous n'avez pas accès à cet e-mail ?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Impossible d’envoyer des fichiers ici" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Impossible d’envoyer des fichiers ici" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Changer d'adresse e-mail" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Modifier l'emoji" @@ -7201,7 +7184,7 @@ msgstr "A modifié la limite d'utilisateurs de {oldCount} à {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "A modifié l'URL personnalisée de {oldCode} à {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "A modifié le niveau de vérification de {oldLevel} à {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Salon ou catégorie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Permissions spécifiques du salon" @@ -7509,8 +7492,6 @@ msgstr "Vérifiez votre connexion et réessayez." msgid "Check your connection, then try again." msgstr "Vérifiez votre connexion, puis réessayez." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Choisissez un écran dans le sélecteur de votre système" msgid "Choose a GIF" msgstr "Choisir un GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Choisir une méthode" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Choisissez un nouveau mot de passe." @@ -7680,8 +7656,8 @@ msgstr "Choisissez une action." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Choisir un emoji" @@ -7749,11 +7725,6 @@ msgstr "Choisir le fonctionnement de votre instance" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Choisissez une des méthodes ci-dessous pour prouver que le domaine vous appartient. Une seule suffit." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Choisissez une méthode de vérification. L'une ou l'autre méthode peut valider cette vérification." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Choisissez ce que {clientLabel} peut faire dans votre communauté. Déco msgid "Choose what friends see in their active now panel" msgstr "Choisissez ce que vos amis voient dans leur panneau « Actif en ce moment »" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Choisissez les conditions à remplir pour publier ou envoyer des messages privés aux membres de la communauté." @@ -8030,8 +8001,8 @@ msgstr "Améliore le son du micro pour une voix claire." msgid "Clear" msgstr "Effacer" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Effacer après" @@ -8053,7 +8024,7 @@ msgstr "Supprimer toutes les simulations de pièces jointes" msgid "Clear all token overrides" msgstr "Effacer toutes les personnalisations des variables" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Effacer les simulations de pièces jointes" @@ -8066,14 +8037,14 @@ msgstr "Effacer la commande" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Effacer le statut personnalisé" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Effacer toutes les réactions de ce message ?" @@ -8124,7 +8095,7 @@ msgstr "Vider le champ de recherche" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Thème charbon" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Commandes" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Les commentaires sont désactivés car un ou plusieurs des salons sélectionnés ont le mode lent activé. Le commentaire serait bloqué par le mode lent juste après le transfert." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Les commentaires sont désactivés, car le mode lent est activé dans {forwardChannelDisplayName}. Le commentaire serait bloqué par le mode lent juste après le transfert." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Les commentaires ne sont pas disponibles lorsque le mode lent est activé." @@ -8670,11 +8639,11 @@ msgstr "Communautés" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Les communautés et chaînes où vous ne pouvez pas gérer les webhooks sont masquées." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Les communautés présentes dans Découverte doivent analyser les messages de tous les membres. Ce paramètre ne peut pas être modifié tant que Découverte est activée." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Les communautés présentes dans Découverte doivent exiger au minimum la vérification de l’adresse e-mail. L’option « Aucun » ne peut pas être sélectionnée tant que Découverte est activée." @@ -8827,7 +8796,7 @@ msgstr "Nom de la communauté" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Surnom dans la communauté" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Profil dans la communauté" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Profil dans la communauté mis à jour" @@ -8907,7 +8876,7 @@ msgstr "Niveau des badges de non-lu de la communauté" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Communauté mise à jour" @@ -8952,11 +8921,6 @@ msgstr "Comparaison" msgid "Complete mature content check" msgstr "Vérifier l’accès aux contenus pour adultes" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Pour continuer à utiliser {productName}, veuillez suivre l'une des méthodes de vérification ci-dessous." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Finaliser le paiement" msgid "Complete the mature content check to unlock mature media." msgstr "Effectuez la vérification pour accéder aux médias réservés aux adultes." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Veuillez suivre les étapes de vérification de l'e-mail et du numéro de téléphone ci-dessous pour continuer à utiliser {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Veuillez effectuer la vérification requise pour continuer à utiliser {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Configurer votre badge de profil" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Connexions réorganisées" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Consentement requis" @@ -9349,16 +9304,6 @@ msgstr "Créer une URL d’autorisation avec des portées et des permissions." msgid "Contact" msgstr "Contact" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Contacter l'assistance" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Contactez les administrateurs de cette instance pour obtenir de l'aide." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Créateur de contenu" msgid "Content filter" msgstr "Filtrage du contenu" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Filtrage du contenu" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Indication du type de contenu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Filtres de sécurité du contenu" @@ -9416,12 +9361,10 @@ msgstr "Les menus contextuels peuvent être ouverts par un clic gauche (sur les #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Gérer le comportement de l'indicateur de messages non lus pour les salo msgid "Control which chat updates are announced by assistive technology." msgstr "Choisissez les mises à jour du chat annoncées par les technologies d’assistance." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Conversation introuvable" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Impossible d’ajouter le tag" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Impossible d’ajouter cet ami au groupe. Veuillez réessayer." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Impossible d’ajouter au groupe" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Impossible de créer un lien de thème" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Impossible de créer le lien d’invitation" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Impossible de mettre fin à votre période de grâce" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Impossible de générer un lien d’invitation. Veuillez réessayer." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Impossible de traiter l’image" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Impossible de publier ce message" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Impossible de rejoindre la communauté Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Impossible de supprimer le son d'entrée" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Impossible de sauvegarder les paramètres du canal" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Impossible d'enregistrer le son d'entrée" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Impossible de retirer la candidature" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Compte à rebours" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Pays" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Créer le compte administrateur" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Créer la conversation de groupe avec {addableCount, plural, one {# destinataire restant} other {# destinataires restants}} et ignorer les autres ?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Créer un webhook" @@ -10948,7 +10884,7 @@ msgstr "Emoji personnalisé {emojiName} d'une communauté" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Les sons d'entrée personnalisés ne sont pas activés sur cette instance." @@ -11108,7 +11044,7 @@ msgstr "Traitement vocal personnalisé" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Texte d'avertissement personnalisé" @@ -11530,11 +11466,6 @@ msgstr "Moteur de recherche par défaut" msgid "Default shortcuts" msgstr "Raccourcis par défaut" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Onglet par défaut" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Supprimer ce message" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Supprimer ce message ? Cette action est irréversible." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Supprimer ce message ? Impossible d'annuler. Ce message sera également supprimé de chaque communauté qui suit ce canal." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Mode développeur" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Option développeur" @@ -12299,7 +12230,7 @@ msgstr "Entrée directe" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Mode d'affichage" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Nom affiché" @@ -12858,7 +12789,7 @@ msgstr "Voulez-vous rejoindre {communityName} ?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, je viens du futur. Je suis venu ici dans une machine à voyager dans le temps que vous avez inventée. Maintenant, j'ai besoin de votre aide pour retourner en 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Modifier l'heure locale du profil" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Modifier le message publié ?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Modifier vos messages au-dessus ou en dessous" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Modifiez l'apparence de votre profil et voyez un aperçu en direct" @@ -13590,10 +13521,8 @@ msgstr "Remboursement possible jusqu’au {windowEndsOn}. Cela résiliera égale msgid "Email" msgstr "E-mail" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Adresse e-mail requise." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-mail modifié" @@ -13616,49 +13547,17 @@ msgstr "E-mail modifié" msgid "Email delivery" msgstr "Envoi d’e-mails" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-mail ou téléphone" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Nouvelle vérification de l’adresse e-mail ou du numéro de téléphone requise" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Nouvelle vérification de l’adresse e-mail requise" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-mail non disponible" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "La mise à jour de l'e-mail est actuellement indisponible. Réessayez plus tard ou contactez l'assistance." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Mise à jour de l'e-mail requise" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Envoyez-nous un e-mail et une personne examinera votre compte. Indiquez-nous que vous ne pouvez pas vérifier par SMS et nous nous en chargerons. Les réponses arrivent par e-mail, ce n'est donc pas instantané." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Bannière de vérification de l'e-mail" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Vérification de l'adresse e-mail requise" @@ -13675,6 +13574,10 @@ msgstr "Forcer la vérification de l'e-mail" msgid "Email verified successfully" msgstr "E-mail vérifié avec succès" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Les e-mails envoyés à votre adresse actuelle ne sont pas livrés. Entrez une nouvelle adresse e-mail et nous y enverrons un code." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Contenus intégrés" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Contenus intégrés masqués" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Contenus intégrés réaffichés" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Activer la lecture vocale /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Activez l'authentification à deux facteurs sur votre compte pour modifier ce paramètre" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Entrez une URL ou un code de modèle {theOtherPlatform} valide." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Saisissez une adresse e-mail valide." @@ -14298,33 +14199,11 @@ msgstr "Saisissez une adresse e-mail valide." msgid "Enter a valid message link." msgstr "Saisissez un lien de message valide." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Saisissez un numéro de téléphone mobile valide." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Saisissez un numéro de téléphone valide" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Saisissez un nom d'utilisateur valide ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Saisissez une adresse e-mail à laquelle vous avez accès. Nous vous enverrons un code à cette adresse." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Saisir le code" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Passer en plein écran" msgid "Enter gift code…" msgstr "Saisir le code cadeau…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Saisir la nouvelle adresse e-mail" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Saisissez l'un de vos codes de secours si vous ne pouvez pas utiliser vo msgid "Enter one of your backup codes." msgstr "Saisissez l'un de vos codes de secours." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Saisir le numéro de téléphone" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Saisissez le code à {digitCount} chiffres de votre application d’auth msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Saisissez le code à {digitCount} chiffres de votre application d'authentification." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Saisissez le code à {digitCount} chiffres envoyé au {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Saisissez le code à {MFA_CODE_DIGIT_COUNT} chiffres envoyé au {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Saisir le code" @@ -14408,11 +14267,6 @@ msgstr "Saisissez le code avant de continuer." msgid "Enter the code from your authenticator app." msgstr "Saisissez le code de votre application d'authentification." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Saisissez le code envoyé à {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Saisissez le code envoyé à votre adresse e-mail actuelle." @@ -14426,6 +14280,7 @@ msgstr "Saisissez le code envoyé à votre adresse e-mail." msgid "Enter the code shown in the app to continue." msgstr "Saisissez le code affiché dans l'application pour continuer." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Saisissez le code que nous avons envoyé à votre nouvelle adresse e-mail." @@ -14434,11 +14289,6 @@ msgstr "Saisissez le code que nous avons envoyé à votre nouvelle adresse e-mai msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Saisissez le code que nous avons envoyé à votre adresse e-mail pour la vérifier. Votre mot de passe sera défini une fois le code confirmé." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Saisissez le code envoyé par e-mail" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Saisissez le lien d'invitation pour rejoindre une communauté." @@ -14452,11 +14302,6 @@ msgstr "Saisissez la nouvelle adresse e-mail que vous souhaitez utiliser. Nous v msgid "Enter the PIN for your security key to continue." msgstr "Entrez le code PIN de votre clé de sécurité pour continuer." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Saisissez le code SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Saisissez ce code dans votre navigateur pour terminer la connexion." @@ -14492,11 +14337,6 @@ msgstr "Saisissez votre nom" msgid "Enter your password." msgstr "Saisissez votre mot de passe." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Saisissez votre numéro de téléphone" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Son d’entrée" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Les fichiers de sons d’entrée doivent faire {limit} ou moins." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Bibliothèque de sons d’entrée pleine" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Son d'entrée supprimé" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Son d'entrée enregistré" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Sons d'entrée" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Sons d'entrée indisponibles" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Expire :" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Paramètre du filtre de contenu explicite" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Échec de la copie dans le presse-papiers" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Échec de la création du webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Échec du chargement de l'URL personnalisée. Veuillez réessayer." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Échec du chargement des webhooks" @@ -15190,11 +15030,6 @@ msgstr "Impossible de supprimer l’URL personnalisée. Veuillez réessayer." msgid "Failed to resend code. Try again." msgstr "Échec du renvoi du code. Veuillez réessayer." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Échec du renvoi du code de vérification. Veuillez réessayer plus tard." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Échec de l'envoi du message. Maintenez appuyé pour les options." msgid "Failed to send report. Try again." msgstr "Échec de l'envoi du signalement. Veuillez réessayer." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Échec de l'envoi de l'e-mail de vérification. Veuillez réessayer plus tard." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Échec du démarrage" @@ -15551,15 +15381,15 @@ msgstr "Filtrer par utilisateur" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtrer tout le monde" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtrer les membres sans rôle" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Suivre ce canal" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Suivez pour recevoir ces annonces dans un canal de votre choix." @@ -15773,7 +15603,7 @@ msgstr "Canal suivi {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Canaux suivis" @@ -15857,11 +15687,6 @@ msgstr "Pour les yeux britanniques seulement..." msgid "For me" msgstr "Pour moi" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Pour cette vérification, vous nous envoyez un SMS au lieu d’en recevoir un de notre part." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Pour votre sécurité, veuillez confirmer votre identité pour continuer." @@ -15905,7 +15730,7 @@ msgstr "Forcer l’affichage de l’espace réservé au chargement" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forcer les médias pour adultes" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Forcer le déplacement vers le salon AFK" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Forcer l’absence de la permission {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Forcer l'affichage de l'avertissement sur l'URL personnalisée" msgid "Force show voice connection" msgstr "Forcer l'affichage de la connexion vocale" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Forcer le mode lent" @@ -16020,7 +15845,7 @@ msgstr "Transférer le média" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Transférer le message" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Superposition du blocage géographique" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Restreint géographiquement" @@ -16490,12 +16315,6 @@ msgstr "Obtenez un avatar et une bannière animés, un badge d'abonné, le tag msgid "Get monthly" msgstr "Obtenir mensuellement" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Recevoir un nouveau code" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Codes cadeaux" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Durée du cadeau" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventaire des cadeaux" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Parcours de l’inventaire des cadeaux" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Cadeau introuvable" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Cadeau utilisé" @@ -17030,7 +16849,7 @@ msgstr "Message privé de groupe" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Bonjour {displayName}, finalisez votre inscription pour éviter de perdre l’accès à votre compte." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Salut {displayName}, veuillez vérifier votre adresse e-mail." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Salut {displayName}, nous n'arrivons pas à envoyer d'e-mails à votre adresse. Ajoutez une adresse e-mail valide pour vérifier votre compte." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Masquer votre partage d'écran ?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Élevé" @@ -17755,11 +17579,6 @@ msgstr "Je suis une infobulle" msgid "I changed my mind" msgstr "J'ai changé d'avis" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "J'ai besoin d'une autre option" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Si ce signalement concerne un message spécifique, signalez plutôt ce m msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Si ce signalement concerne des messages spécifiques, signalez plutôt le message le plus pertinent. Les signalements de messages donnent à notre équipe de sécurité le contexte le plus clair, et l'ajout de détails dans les commentaires peut nous aider à l'examiner plus rapidement. Ne continuez à signaler l'utilisateur dans son ensemble que si le signalement d'un message ne permettrait pas de saisir le problème plus large." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Si vous ne pouvez pas vérifier par SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Si vous ne pouvez utiliser aucune méthode de vérification, contactez l'assistance pour obtenir de l'aide." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Taille de l'interface" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Fichier audio non valide" @@ -18674,8 +18483,10 @@ msgstr "JSON non valide. Collez la réponse complète de l'URL ci-dessus." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Rejoindre l'appel vocal" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Rejoindre le salon vocal" @@ -19613,16 +19424,6 @@ msgstr "En savoir plus sur Visionary" msgid "Leave" msgstr "Quitter" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Quitter {count, plural, one {# communauté} other {# communautés}} et mettre cette vérification de côté ?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Quitter et mettre de côté" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Les lecteurs d'écran annoncent les nouveaux messages dès leur arrivée dans le salon ouvert. Les sons de notification ne sont pas affectés." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Laisser la communauté s'auto-modérer" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Bibliothèque" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Bibliothèque pleine ({max} sons max.). Supprimez-en un avant d'en ajouter un autre." @@ -19812,7 +19613,7 @@ msgstr "Bibliothèque : {count} sur {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "À vie" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Chargement..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Chargement…" @@ -20261,7 +20062,7 @@ msgstr "Louisiane" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Faible" @@ -20416,7 +20217,7 @@ msgstr "Gérer les fonctionnalités de la communauté" msgid "Manage emoji & stickers" msgstr "Gérer les emojis et les stickers" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Gérez les webhooks entrants qui peuvent publier des messages dans ce salon." @@ -20514,7 +20315,7 @@ msgstr "Marquer immédiatement tous les salons non lus de la boîte de réceptio msgid "Mark as read" msgstr "Marquer comme lu" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Marquer comme utilisé" @@ -20676,14 +20477,14 @@ msgstr "Communauté réservée aux adultes" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Contenu pour adultes" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Contenu pour adultes et avertissements" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Durée de vie maximale (jours)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Protection maximale pour les espaces familiaux" @@ -20924,7 +20725,7 @@ msgstr "Arrêter la lecture" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Bannissement du membre levé" msgid "Member updated" msgstr "Membre mis à jour" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Vérification des membres" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Niveau de vérification des membres" @@ -21048,7 +20849,7 @@ msgstr "Les membres sont retirés de la communauté lorsqu’ils passent hors li msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Les membres disposant de la permission « {pinMessagesPermissionLabel} » peuvent épingler des messages pour tout le monde." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Les membres avec des rôles peuvent contourner ces vérifications. Pour les espaces publics, nous recommandons d'activer la vérification." @@ -21153,7 +20954,7 @@ msgstr "Les messages qui vous mentionnent apparaissent ici pendant {retentionDay #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Mentions uniquement" @@ -21292,7 +21093,7 @@ msgstr "Les paramètres d'affichage des messages ne sont disponibles que sur ord msgid "Message editing" msgstr "Modification des messages" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Message transféré" @@ -21341,7 +21142,7 @@ msgstr "Boutons de saisie de message" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Message trop long" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Aperçus des messages dans la liste des MP" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Message publié" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Les messages publiés dans #{sourceName} apparaîtront désormais dans #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Les messages publiés dans ces canaux d'annonces sont copiés ici." @@ -21504,7 +21305,7 @@ msgstr "Les messages publiés dans ces canaux d'annonce sont copiés dans vos ca msgid "Messages you can bookmark" msgstr "Messages que vous pouvez mettre en favori" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "La messagerie est temporairement suspendue dans cette communauté." @@ -21733,30 +21534,30 @@ msgstr "Simuler une expiration dans 1 jour" msgid "Mock expires in 7 days" msgstr "Simuler une expiration dans 7 jours" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Simuler la superposition de blocage géographique" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Simuler l'inventaire de cadeaux" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simuler un appel entrant" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Simuler le motif de restriction d’accès aux salons pour adultes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Simuler le motif de restriction d’accès aux médias pour adultes" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Simuler la géolocalisation au Royaume-Uni" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Avatars d'utilisateurs factices de différentes tailles et toutes les permutations de statut." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Variante simulée" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Parcours de l’application simulés" @@ -22698,14 +22494,16 @@ msgstr "Nouvelle communauté mise en sourdine" msgid "New direct message" msgstr "Nouveau message privé" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Nouvelle adresse e-mail" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formulaire de nouvelle adresse e-mail" @@ -22816,9 +22614,7 @@ msgstr "Du plus récent au plus ancien" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Suivant" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Non" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Permission {attachFilesPermission} manquante" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Permission {sendMessagesPermission} manquante" @@ -23005,7 +22801,7 @@ msgstr "Aucune modification à enregistrer" msgid "No channels available" msgstr "Aucun salon disponible" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Aucun salon trouvé" @@ -23233,11 +23029,6 @@ msgstr "Aucune permission trouvée" msgid "No personal words yet." msgstr "Pas encore de mots personnels." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Pas de numéro de téléphone" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Aucun résultat" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Aucun résultat" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Aucun utilisateur trouvé" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Aucune vérification n'est requise." @@ -23452,7 +23243,7 @@ msgstr "Aucune vérification n'est requise." msgid "No verification methods available" msgstr "Aucune méthode de vérification disponible" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Aucun webhook" @@ -23504,7 +23295,7 @@ msgstr "Sans conversion" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Aucune" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Aucun (comportement normal)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norvégien" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Pas membre depuis assez longtemps" @@ -23798,9 +23589,9 @@ msgstr "Objets" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Désactivé" @@ -23848,7 +23639,7 @@ msgstr "Du plus ancien au plus récent" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Activé" @@ -23884,11 +23675,6 @@ msgstr "Impossible de lire ou d’envoyer une ou plusieurs pièces jointes. Le f msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Un ou plusieurs fichiers que vous essayez d'envoyer dépassent la limite de taille maximale de {maxSizeFormatted} par fichier." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Une vérification rapide" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Haut-parleurs seulement" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Seul le propriétaire de la communauté peut modifier ce paramètre" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Ouvrir l'emoji dans le navigateur" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Ouvrir le sélecteur d'emojis" @@ -24382,12 +24168,8 @@ msgstr "Icône d’ouverture du menu" msgid "Open message history threshold" msgstr "Ouvrir le réglage de la date limite de l’historique des messages" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Ouvrir la superposition" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Ouvrir le menu déroulant" @@ -24485,11 +24267,6 @@ msgstr "Ouvrez la nouvelle application. Vous êtes déjà connecté." msgid "Open the shortcuts list for quick actions." msgstr "Ouvrez la liste des raccourcis pour des actions rapides." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Ouvrez l'e-mail de vérification et utilisez le lien qu'il contient. Cette fenêtre se mettra à jour une fois le lien ouvert." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Ouvrir les paramètres audio et vidéo" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Ouvrez votre navigateur, connectez-vous, puis saisissez le code ci-dessous pour associer votre compte." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Ouvrez vos messages" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Ouvrez votre ancienne application {PRODUCT_NAME} et choisissez « Lier un nouvel appareil », puis saisissez le code ci-dessous." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Ouvrez l’application de SMS de votre téléphone et rédigez un nouveau message." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Ouvrez l’application de SMS de votre téléphone et commencez un nouveau message." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Autre réaction…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Notre vérification de numéro de téléphone est temporairement indisponible. C'est de notre faute, pas celle de votre numéro. Veuillez patienter quelques minutes et réessayer avec le même numéro." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "Page préc." msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Hameçonnage, fraude, liens malveillants ou fausses déclarations susceptibles de causer des dommages dans le monde réel." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Téléphone" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Numéro de téléphone" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Numéro de téléphone requis" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Numéro de téléphone vérifié" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Nouvelle vérification du numéro de téléphone requise" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Étape du téléphone" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "La vérification par téléphone n'est pas disponible pour ce compte. Utilisez une autre méthode ou contactez l'assistance." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Vérification du téléphone requise" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Choisissez le numéro à 4 chiffres après votre nom d’utilisateur" msgid "Pick the appearance this administrator account should start with." msgstr "Choisissez l'apparence de départ de ce compte administrateur." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Choisissez la méthode que vous pouvez utiliser maintenant." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Image dans l'image" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Épingler" @@ -25471,7 +25176,7 @@ msgstr "Épingler la conversation de groupe" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Épingler ou désépingler n'importe quel message." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Épingler ce message au salon pour que tout le monde puisse le voir." @@ -26227,18 +25932,18 @@ msgstr "Couleur du profil" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Personnalisation du profil" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Personnalisation du profil pour {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formulaire de personnalisation du profil" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Type de profil" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profil mis à jour" @@ -26340,7 +26045,7 @@ msgstr "Demander la confirmation pour les nouveaux périphériques audio." #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Coordination de raid" msgid "Rate" msgstr "Vitesse" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Limite de requêtes atteinte" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "JSON brut du contenu intégré" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Supprimer {userName} de vos amis ?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Tout supprimer" @@ -27290,7 +26990,7 @@ msgstr "Supprimer toutes les réactions {emojiNameWithColons} de ce message ?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Supprimer toutes les réactions" @@ -27899,20 +27599,10 @@ msgstr "Tag de l'utilisateur signalé (facultatif)" msgid "Reposts: <0>{countLabel}" msgstr "Republications : <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Demandez d'abord un nouveau code." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Demander un nouveau lien de réinitialisation" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Demandez d'abord un code de vérification." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Demandes" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Exiger la 2FA pour les actions de modération" @@ -27958,7 +27648,7 @@ msgstr "Exiger le flux OAuth2 avec code d’autorisation" msgid "Require passkey" msgstr "Exiger une clé d'accès" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Exiger l’authentification à deux facteurs pour les modérateurs avant qu’ils puissent bannir ou expulser des membres, leur appliquer une restriction temporaire ou supprimer des messages." @@ -27972,46 +27662,6 @@ msgstr "Obligatoire" msgid "Required 2FA for moderation actions" msgstr "2FA requis pour les actions de modération" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Onglet par défaut de l'action requise" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Parcours des actions requises" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Étape téléphonique des actions requises" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Chargement lors du renvoi du code pour une action requise" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Résultat du renvoi du code pour une action requise" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Texte de nouvelle vérification pour une action requise" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Variante d'action requise" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Superposition des actions requises" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Nécessite une URI de redirection et un code d'autorisation lors de l'invitation de ce bot." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Nécessite une adresse e-mail vérifiée et un compte créé il y a au moins 5 minutes." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Nécessite une adresse e-mail vérifiée." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Nécessite un numéro de téléphone vérifié." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Exige les conditions du niveau moyen, ainsi qu’une présence dans la communauté depuis au moins 10 minutes." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Renvoyer ({resendSecondsRemaining} s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Renvoyer ({secondsRemaining} s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Bouton de renvoi en cours de chargement" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Renvoyer le code" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Renvoyer l'e-mail" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Résultat du renvoi" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Renvoyé" @@ -28518,21 +28152,6 @@ msgstr "Afficher" msgid "Reveal spoiler" msgstr "Afficher le spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Vérifiez à nouveau votre adresse e-mail ou vérifiez votre numéro de téléphone pour continuer à utiliser {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Vérifiez à nouveau votre adresse e-mail pour continuer à utiliser {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Vérifiez à nouveau votre numéro de téléphone pour continuer à utiliser {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Saturation" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Aperçu lors du déplacement dans la vidéo" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Rechercher des salons" msgid "Search communities" msgstr "Rechercher des communautés" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Rechercher des pays…" - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Rechercher des pays…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Sélectionnez votre pays de résidence." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Sélectionner…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Envoyer" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Envoyer ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Envoyer un autre signalement" msgid "Send button" msgstr "Bouton d'envoi" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Envoyer le code" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Envoyer des messages" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Envoi de messages désactivé" @@ -30151,32 +29759,11 @@ msgstr "Envoyer le média enregistré {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Envoyer des messages lus à voix haute avec /tts. Les membres ayant activé la synthèse vocale entendront ces messages." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Envoyer le code <0>{0} au <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Envoyez le code au numéro de téléphone ci-dessous." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Envoyer ce code" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Renvoyer cet élément épinglé dans le passé ?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Envoyer à" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Envoyer un message vocal" msgid "Send:" msgstr "Envoi :" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "L'envoi d'un SMS à ce numéro de téléphone est trop coûteux pour {PRODUCT_NAME}. Nous avons donc besoin que vous nous envoyiez un SMS à la place. Nous savons que ce n'est pas idéal. Vous pouvez également demander aux administrateurs de cette instance de lever cette exigence pour votre compte." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "L'envoi d'un SMS à ce numéro de téléphone est trop coûteux pour {PRODUCT_NAME}. Nous avons donc besoin que vous nous envoyiez un SMS à la place. Nous savons que ce n'est pas idéal. Vous pouvez également contacter <0>{SUPPORT_EMAIL} pour que nous levions cette exigence de votre compte." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Envoi en série" msgid "Serve the token file" msgstr "Fournir le fichier de jeton" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Erreur de service" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Définir un raccourci personnalisé pour « {label} »" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Définir un statut personnalisé" @@ -30486,18 +30060,6 @@ msgstr "A défini la région vocale sur {region}" msgid "Set the voice region to automatic" msgstr "A défini la région vocale sur automatique" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Mettre cette vérification de côté" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Mettre cette vérification de côté ?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Définir vos pronoms" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Définir votre statut" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Les raccourcis sont suspendus pendant l’enregistrement." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Raccourcissez le message et réessayez." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Afficher une icône {productName} dans la zone de notification ou la barre de menus" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Afficher un avertissement de contenu" @@ -31672,7 +31234,7 @@ msgstr "Mode lent · attendez {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Mode lent activé" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Le mode lent est réglé sur {durationLabel}. Attendez avant d'envoyer un autre message." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Délai restant du mode lent" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulation du mode lent" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Temps restant en mode lent" @@ -31807,11 +31369,6 @@ msgstr "Défilement fluide" msgid "Smoother video" msgstr "Vidéo plus fluide" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "La vérification par SMS est indisponible pour le moment. Réessayez plus tard ou contactez l'assistance." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Une erreur est survenue lors de la préparation de ce sticker. Essayez un autre fichier ou réessayez dans un instant." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Une erreur s'est produite lors de la publication. Réessayez dans un instant." @@ -32009,11 +31566,9 @@ msgstr "Un problème est survenu. Rechargez la page ou connectez-vous à nouveau msgid "Something went wrong. Try again later." msgstr "Un problème est survenu. Veuillez réessayer plus tard." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Une erreur est survenue. Veuillez réessayer." @@ -32352,11 +31907,6 @@ msgstr "La connexion SSO a expiré. Veuillez réessayer." msgid "Staff controls" msgstr "Commandes du personnel" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Des frais de messagerie standard de votre opérateur peuvent s'appliquer." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Ajouter une animation aux favoris" msgid "Starred channels" msgstr "Salons favoris" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Transport de réception :" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Abonnement" @@ -33051,14 +32599,12 @@ msgstr "Scénarios d'abonnement" msgid "Subtext" msgstr "Sous-texte" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Succès" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Suggéré pour la plupart des communautés" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Système et accueil" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Annonces système de l'équipe {productName}. Vous ne pouvez pas répondre ici." @@ -33765,11 +33311,6 @@ msgstr "Sélection de texte" msgid "Text size" msgstr "Taille du texte" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Envoyez-nous un SMS depuis votre téléphone" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Thaï" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Merci de nous aider à assurer la sécurité de {productName}. Nous examinerons votre signalement dès que possible." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Ce code n'a pas fonctionné. Vérifiez-le et réessayez." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Ce code a expiré. Demandez un nouveau code." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Cela n'a pas abouti. Certaines communautés ont peut-être déjà été quittées, et votre compte est toujours bloqué. Appuyez à nouveau sur Mettre cette vérification de côté pour terminer." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Cela n'a pas fonctionné. Rien n'a changé. Réessayez." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Ceci ne semble pas être une couleur valide. Essayez le format hexadéci msgid "That doesn't look like a valid URL." msgstr "Ceci ne semble pas être une URL valide." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Cet e-mail est déjà utilisé." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "La permission spécifique refusait {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "La page que vous recherchez n'existe pas ou a été déplacée." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "La vérification du téléphone est mise de côté. Il reste une étape par e-mail." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Aucun salon n'est disponible pour créer une invitation." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Il n'y a aucun rôle à attribuer dans cette communauté pour le moment, mais vous pouvez en créer un nouveau dans <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Aucun webhook n'est configuré pour ce salon. Créez un webhook pour permettre aux applications externes de publier des messages." @@ -34273,7 +33784,7 @@ msgstr "Une erreur est survenue lors du chargement des invitations. Veuillez ré msgid "There was an error loading the stickers. Try again." msgstr "Une erreur est survenue lors du chargement des stickers. Veuillez réessayer." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Une erreur est survenue lors du chargement des webhooks pour ce salon. Veuillez réessayer." @@ -34417,7 +33928,7 @@ msgstr "Ce canal peut publier 10 messages d'affilée, puis un autre toutes les 6 msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Ce canal peut publier 10 messages d'affilée, puis un autre toutes les 6 minutes. Réessayez dans quelques minutes." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Ce salon ne prend pas en charge les webhooks." @@ -34550,12 +34061,12 @@ msgstr "Cette connexion n'a pas été vérifiée." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Ce contenu est sensible." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Cette conversation n'est plus disponible." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Ce groupe contient trop de personnes" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Ce groupe est plein. Retirez un membre avant d’ajouter d’autres personnes." @@ -34715,11 +34226,6 @@ msgstr "Ceci est un sticker personnalisé d'une communauté." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Ce canal est réservé aux adultes. Les mises à jour ne peuvent être envoyées qu'aux canaux réservés aux adultes." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Ceci est une vérification anti-spam. Votre numéro de téléphone n'est pas lié à votre compte." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Ceci est désactivé" msgid "This is how messages appear" msgstr "Voici comment les messages s'affichent" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Cette option n'est pas disponible pour votre compte pour le moment. Demandez aux administrateurs de cette instance de l'examiner." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Ceci n'est pas disponible pour votre compte pour le moment. Envoyez un e-mail à {supportEmail} et une personne examinera votre demande." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Ce n'est pas le salon que vous cherchez." @@ -34792,11 +34288,6 @@ msgstr "C'est votre dernière clé d'accès, et les clés d'accès sont votre de msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "C'est votre dernière clé d'accès. Une fois qu'elle sera supprimée, vous ne pourrez plus utiliser de clé d'accès comme deuxième facteur." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Ce n’est pas un numéro de mobile et il ne peut donc pas recevoir notre SMS. Essayez un numéro de mobile ou contactez l’assistance si vous pensez qu’il s’agit d’une erreur." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Ce message a déjà été supprimé." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Ce message a déjà été publié" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Ce message n’existe plus." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Ce surnom ne sera visible que dans cette communauté" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Pour vérifier ce numéro, vous devez nous envoyer un SMS. Revenez en arrière et recommencez la vérification téléphonique pour obtenir le code et le numéro auquel l’envoyer." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Pour vérifier ce numéro, vous devez nous envoyer un SMS au lieu d’en recevoir un." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Le son est désactivé pour ce participant" msgid "This participant was deafened by moderators" msgstr "Les modérateurs ont désactivé le son de ce participant" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Ce numéro de téléphone ne peut pas être utilisé. Essayez un autre numéro de mobile ou contactez l'assistance." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Ce numéro de téléphone a déjà été utilisé. Essayez un autre numéro ou contactez l'assistance." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Cet utilisateur n'a aucun rôle dans cette communauté." msgid "This user is already banned from the community." msgstr "Cet utilisateur est déjà banni de la communauté." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Cet utilisateur n'est plus disponible." @@ -35065,11 +34536,6 @@ msgstr "Cet utilisateur a été ajouté de force à cette communauté par un adm msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Cette session de vérification a expiré. Retournez à {productName} et recommencez le paiement." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Cette session de vérification a expiré. Veuillez recommencer." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Cette action vous déconnectera, effacera les fichiers mis en cache et l msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Cela approuvera tous les liens externes et ignorera l'avertissement pour chaque domaine. Vos domaines approuvés existants seront remplacés. C'est moins sécurisé." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Cette fenêtre se met à jour automatiquement après réception de votre message." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Barre de titre" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Plateforme de la barre de titre" @@ -35470,18 +34931,11 @@ msgstr "Ton" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Convertir les images HDR en plage standard, réduisant ainsi la luminosité maximale." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Trop de tentatives. Attendez un peu, puis réessayez." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Trop de communautés" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Trop de requêtes. Veuillez réessayer plus tard." @@ -36151,8 +35605,10 @@ msgstr "Impossible de préparer les emojis pour l’envoi. Les erreurs suivantes #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Indisponible" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Non classé" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Compte non finalisé" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Non ordonné" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Désépingler" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Désépingler le message" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Désépingler ce message ?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Modifications non enregistrées" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Fichier audio non pris en charge." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Jusqu'à ce que je le réactive" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "E-mail non vérifié" @@ -36958,12 +36414,7 @@ msgstr "Mettez à jour {productName} pour afficher ce message." msgid "Update app" msgstr "Mettre à jour l’application" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Mettre à jour l'adresse e-mail" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Mettre à jour mon statut" @@ -37306,18 +36757,13 @@ msgstr "Utilisez {url} là où l'URL de l'image doit être insérée." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Utilisez une fenêtre dédiée pour définir une date limite d'historique des messages pour les membres qui n'ont pas la permission {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Utilisez une autre adresse e-mail et vérifiez-la avec un code." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Utiliser la version réelle" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Utiliser le type premium réel" @@ -37335,16 +36781,6 @@ msgstr "Utiliser une autre méthode" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Utiliser une application d’authentification pour générer les codes de l’authentification à deux facteurs" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Utilisez une adresse e-mail à laquelle vous avez accès. Nous vous enverrons un code à cette adresse." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Utilisez une adresse e-mail différente de celle que vous utilisez actuellement." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Utiliser le thème sombre dans toute l'application" msgid "Use default" msgstr "Utiliser par défaut" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Utiliser une autre adresse e-mail" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Utiliser l'e-mail" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Utiliser des clés d'accès pour l'authentification à deux facteurs ?" msgid "Use passkeys to sign in without a password" msgstr "Utiliser des clés d'accès pour se connecter sans mot de passe" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Utiliser le téléphone" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Utiliser le texte de nouvelle vérification" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "L’utilisateur change de salon" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Utilisateur introuvable" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Vérification" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Vérification et barrières d'adhésion" @@ -37970,15 +37387,8 @@ msgstr "Code de vérification" msgid "Verification code sent" msgstr "Code de vérification envoyé" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Code de vérification envoyé. Vérifiez votre nouvelle boîte de réception." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "E-mail de vérification envoyé. Vérifiez votre boîte de réception." @@ -38038,23 +37448,6 @@ msgstr "Formulaire de vérification d'identité" msgid "Verify it's you" msgstr "Vérifiez que c'est bien vous" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Vérifier le téléphone" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Vérifier le numéro de téléphone" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formulaire de vérification du numéro de téléphone" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Vérifiez votre adresse e-mail avant d'ajouter une application d'authentification." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Vérifiez votre adresse e-mail avant de modifier votre surnom, votre avatar, votre bannière, votre bio, vos pronoms ou votre couleur d’accentuation dans une communauté." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Vérifiez votre adresse e-mail avant de modifier votre nom d’utilisateur, votre nom affiché, votre avatar, votre bannière, votre bio, vos pronoms, votre fuseau horaire ou la confidentialité de votre badge {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Vérifiez votre adresse e-mail avant de modifier ce profil dans la communauté. Vous pouvez toujours en consulter l’aperçu ici." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Vérifiez votre e-mail avant de modifier votre profil. Vous pouvez toujours le prévisualiser ici." @@ -38113,11 +37506,6 @@ msgstr "Vérifiez votre adresse e-mail avant d'envoyer des demandes d'ami." msgid "Verify your email first" msgstr "Vérifiez d'abord votre adresse e-mail" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Vérifiez votre e-mail ou votre numéro de téléphone pour continuer à utiliser {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Vérifiez votre e-mail pour acheter des cadeaux." msgid "Verify your email to change your username" msgstr "Vérifiez votre adresse e-mail pour changer votre nom d'utilisateur" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Vérifiez votre e-mail pour continuer à utiliser {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Vérifiez votre adresse e-mail pour modifier ce profil dans la communauté" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Vérifiez votre e-mail pour modifier votre profil" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Version" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Très élevé" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Augmenter le volume" msgid "Wait a moment before deleting more messages." msgstr "Attendez un instant avant de supprimer d'autres messages." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Veuillez patienter un instant. Cette fenêtre se fermera automatiquement dès que nous recevrons votre message." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Attendre entre les messages. Les membres disposant de la permission « {bypassSlowmodePermissionLabel} » peuvent ignorer ce délai." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Veuillez patienter" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "En attente de la clé d’accès…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "En attente de l'expiration du mode lent dans {forwardChannelDisplayName}." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "En attente de l'expiration du mode lent dans un ou plusieurs salons sélectionnés." @@ -39115,16 +38482,6 @@ msgstr "Nous n'avons pas pu lire ce thème. Il est peut-être corrompu ou invali msgid "We couldn't remove that account. Try again." msgstr "Nous n'avons pas pu supprimer ce compte. Veuillez réessayer." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Nous n’avons pas pu vérifier ce numéro automatiquement. Contactez l’assistance pour qu’une personne examine votre compte." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Nous n’envoyons pas de SMS de vérification dans ce pays. Essayez un numéro de mobile d’un autre pays ou contactez l’assistance." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Nous avons trouvé un abonnement {premiumProductFullName} existant pour msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Nous avons baissé le prix de {premiumProductName} au Brésil. Il est maintenant à {monthlyPrice} par mois ou {yearlyPrice} par an." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Nous avons besoin d'une étape de vérification avant que vous puissiez continuer. Cela permet de protéger les comptes et de limiter le spam sur {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Nous avons besoin de deux étapes de vérification avant que vous puissiez continuer. Nous vous montrerons une étape à la fois." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Nous vous conseillons d’enregistrer ces codes maintenant pour éviter de perdre l’accès à votre compte." @@ -39167,11 +38514,6 @@ msgstr "Nous avons envoyé un code à {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Nous allons préremplir {prefillEmail} une fois que la connexion par navigateur s'ouvrira." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Nous enverrons un code par SMS si cette option est disponible." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Nous aimerions vous offrir {PREMIUM_PRODUCT_NAME} au-delà de votre vie entière, mais cela briserait le continuum espace-temps. Envoyer plutôt ce cadeau à un ami ?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Nous traiterons cette demande dès que possible. Vous recevrez un e-mail lorsque votre archive sera prête." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Nous rétablirons votre ancienne adresse e-mail, fermerons les anciennes sessions, supprimerons les numéros de téléphone, désactiverons l’authentification multifacteur et sécuriserons votre compte avec un nouveau mot de passe." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Nous restaurerons votre ancien e-mail, déconnecterons les anciennes sessions, désactiverons l'authentification multifacteur et sécuriserons votre compte avec un nouveau mot de passe." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Nous enverrons un code de vérification à votre adresse e-mail avant qu msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Nous enverrons un code de vérification à votre adresse e-mail avant que vous puissiez consulter vos codes de secours." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Nous enverrons un code SMS lorsqu'il sera disponible. Votre numéro n'est pas lié à votre compte. Nous conservons uniquement un identifiant chiffré, sans ID utilisateur, pendant une durée limitée." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Nous allons vérifier votre adresse e-mail actuelle, puis la nouvelle, à l'aide de codes à usage unique." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook créé" @@ -39331,7 +38669,7 @@ msgstr "Webhook mis à jour" msgid "Webhook URL" msgstr "URL du webhook" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooks" @@ -39486,8 +38824,8 @@ msgstr "Ce que vous partagez ne se met pas à jour" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Quoi de neuf ?" @@ -39967,21 +39305,11 @@ msgstr "Vous pouvez retirer la permission <0>{readMessageHistoryPermissionLabel} msgid "You can sign back in at any time." msgstr "Vous pouvez vous reconnecter à tout moment." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Vous pouvez à tout moment demander une vérification humaine aux administrateurs de cette instance." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Vous pouvez toujours créer un compte ou vous connecter. Si les invitations sont réactivées plus tard, vous pourrez utiliser ce même lien pour rejoindre." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Vous pouvez aussi écrire à {supportEmail} à tout moment pour qu’une personne examine votre compte." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Vous pouvez utiliser des liens, des emojis et du Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Vous ne pouvez pas ajouter d'expressions ici" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Vous ne pouvez pas ajouter de nouvelles réactions pendant votre restriction temporaire." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Vous ne pouvez pas être ami avec vous-même" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Vous ne pouvez pas modifier votre surnom ici" @@ -40094,7 +39422,7 @@ msgstr "Vous ne pouvez pas vous envoyer de demande d'ami." msgid "You can't send messages in this channel." msgstr "Vous ne pouvez pas envoyer de messages dans ce salon." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Vous ne pouvez pas envoyer de messages dans cette communauté." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Vous n’avez pas l’autorisation d’effectuer cette action sur ce membre." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Vous n'avez pas l'autorisation de rejoindre ce salon vocal" @@ -40243,7 +39571,7 @@ msgstr "Vous n'avez pas l'autorisation de renommer cet emoji. Le nom a été ré msgid "You have been banned from this community." msgstr "Vous avez été banni de cette communauté." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Vous avez bloqué {username}. Débloquez cette personne pour lui envoyer des messages." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Vous avez des modifications non enregistrées." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Vous avez des modifications non enregistrées. Enregistrez-les ou réinitialisez-les avant de partir." @@ -40270,7 +39598,7 @@ msgstr "Vous avez des modifications non enregistrées. Enregistrez-les ou réini msgid "You haven't authorized any applications to access your account." msgstr "Vous n'avez autorisé aucune application à accéder à votre compte." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Vous n'êtes pas membre de cette communauté depuis assez longtemps pour envoyer des messages." @@ -40326,11 +39654,6 @@ msgstr "Vous devez accepter les conditions d'utilisation pour créer un compte" msgid "You must verify your email before sending a report." msgstr "Vous devez vérifier votre adresse e-mail avant d'envoyer un signalement." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Vous devez avoir accès à votre adresse e-mail actuelle pour la modifier d'ici. Utilisez la vérification par téléphone si disponible ou contactez l'assistance." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Vous devez disposer de la permission « {manageRolesPermissionLabel} » msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Vous devez disposer de la permission « {manageRolesPermissionLabel} » pour modifier ces permissions." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Vous devez disposer de la permission « {manageWebhooksPermissionLabel} » pour consulter et modifier les webhooks de ce salon." @@ -40384,18 +39707,14 @@ msgstr "Vous devez finaliser votre inscription avant de pouvoir créer une commu msgid "You need to claim your account before you can start a direct message." msgstr "Vous devez finaliser votre inscription avant de pouvoir démarrer une conversation privée." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Vous devez finaliser votre inscription pour envoyer des messages privés." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Vous devez finaliser votre inscription pour envoyer des messages dans cette communauté." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Vous devez vérifier un numéro de téléphone pour envoyer des messages dans cette communauté." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Vous devez vérifier votre adresse e-mail avant de pouvoir démarrer une msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Vous devez vérifier votre adresse e-mail avant de pouvoir acheter {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Vous devez vérifier votre adresse e-mail pour envoyer des messages dans cette communauté." @@ -40424,11 +39743,6 @@ msgstr "Vous devez vérifier votre adresse e-mail pour envoyer des messages dans msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Vous ou l'un des destinataires avez déjà atteint le nombre maximal de MP de groupe ouverts. Quittez-en un et réessayez." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Vous restez dans {ownedNames}. Les propriétaires ne peuvent pas quitter leur propre communauté." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Les modérateurs ont désactivé le son pour vous" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Vous serez redirigé vers {redirectHostname} après l'autorisation." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Vous quitterez {count, plural, one {# communauté concernée} other {# communautés concernées}} par cette vérification, et votre compte fonctionnera à nouveau normalement." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Vous quitterez {guildNames}. Rien de ce que vous avez publié n'est supprimé, et vous pourrez revenir plus tard." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Vous devrez toujours terminer l'étape de l'e-mail." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Vous allez trop vite" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Vous allez trop vite. Patientez un instant et réessayez." @@ -40636,7 +39935,7 @@ msgstr "Vous envoyez des messages trop rapidement" msgid "You're streaming!" msgstr "Vous diffusez en direct !" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Vous faites l’objet d’une restriction temporaire. L’envoi de messages, les réactions et les connexions vocales sont suspendus jusqu’à sa fin." @@ -40764,25 +40063,25 @@ msgstr "Le paiement de votre renouvellement via {storeName} a échoué, mais les msgid "Your account" msgstr "Votre compte" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Votre compte redeviendra normal immédiatement et vous n'aurez pas besoin de numéro de téléphone pour le moment. Ce n'est pas une exemption permanente, et nous pourrons vous demander cette vérification à nouveau plus tard." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Votre compte a été lié avec succès. Vous pouvez maintenant fermer cet onglet et retourner à l'application." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Votre compte est de nouveau opérationnel." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Votre compte est limité" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Votre compte est limité. Consultez votre e-mail pour savoir comment le rétablir." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Votre inscription n’est pas encore finalisée. Sans adresse e-mail ni mot de passe, vous ne pourrez pas vous connecter depuis d’autres appareils et vous risquez de perdre l’accès à votre compte. Finalisez votre inscription maintenant pour le sécuriser." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Votre compte est trop récent pour envoyer des messages dans cette communauté." @@ -40800,11 +40099,6 @@ msgstr "Votre compte nécessite une authentification multifacteur, mais aucune m msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Votre compte ne sera plus protégé par l'authentification à deux facteurs lorsque vous vous connecterez avec votre mot de passe. Vous perdrez également vos permissions élevées dans les communautés qui exigent l'authentification à deux facteurs." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Votre compte fonctionnera à nouveau normalement immédiatement et rien ne sera supprimé. Nous pourrons vous redemander cette vérification plus tard." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Nous vérifions l’éligibilité de votre carte aux tarifs régionaux. msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Votre carte est éligible. Redirection vers la page de paiement en cours." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Votre opérateur indique que ce numéro n’est pas en service. Vérifiez-le et réessayez, ou contactez l’assistance si le numéro est correct." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Vos modifications sont appliquées à toutes les communautés qui suivent ce canal, ce qui peut prendre une minute. Chaque message publié permet 3 modifications rapides, puis 1 toutes les 20 minutes." @@ -40869,21 +40158,6 @@ msgstr "Votre appareil vous demandera d'enregistrer une clé d'accès mise à jo msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Votre appareil vous demandera d'enregistrer une clé d'accès mise à jour pour {name}. Utilisez le même téléphone ou la même clé de sécurité que vous venez d'utiliser." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Votre adresse e-mail a été mise à jour." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Votre adresse e-mail ne pouvait pas recevoir de messages. Ajoutez une adresse fonctionnelle pour que nous puissions vous joindre au sujet de votre compte." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Votre adresse e-mail n'a pas pu recevoir de messages. Mettez-la à jour pour continuer à utiliser {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Votre adresse e-mail a été vérifiée. Vous pouvez maintenant vous connecter à votre compte." @@ -41000,21 +40274,11 @@ msgstr "Votre message n'a pas été mis à jour" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Votre achat le plus récent n’est plus dans la période de remboursement. Contactez l’assistance pour les problèmes de facturation." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "votre nouvelle adresse e-mail" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Votre nouveau surnom, ou laissez vide pour le réinitialiser." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Votre numéro n'est pas lié à votre compte. Nous conservons uniquement un marqueur chiffré, sans identifiant utilisateur, pendant une durée limitée." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Votre paiement a été annulé. Vous pouvez maintenant fermer cet onglet et retourner à l'application." @@ -41054,11 +40318,6 @@ msgstr "Vos cadeaux achetés" msgid "your region" msgstr "votre région" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Votre inscription nécessite une vérification anti-spam supplémentaire avant de pouvoir continuer." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/he/messages.po b/fluxer_app/src/features/i18n/locales/he/messages.po index 80301042f..015a1b25d 100644 --- a/fluxer_app/src/features/i18n/locales/he/messages.po +++ b/fluxer_app/src/features/i18n/locales/he/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# ריאקציה} other {# ריאקציות}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# מגיב} other {# מגיבים}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# שנייה} other {# שניות}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} בשעה {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {תוקף קישור ההזמנה שלך יפוג בעוד שנייה אחת.} two {תוקף קישור ההזמנה שלך יפוג בעוד שתי שניות.} other {תוקף קישור ההזמנה שלך יפוג בעוד # שניות.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} נבחרו" @@ -2252,7 +2252,7 @@ msgstr "דקה אחת" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 שעות" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 חודשים (שנה אחת)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "גיבוי 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "דרישת אימות דו-שלבי" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 חברים (מקלידים)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 חודשים" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 שעות" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 חודשים" @@ -2575,11 +2575,6 @@ msgstr "דקה" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "גרסה חדשה של אפליקציית שולחן העבודה זמינה. הורד את קובץ ההתקנה והפעל אותו כדי לעדכן את {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "קוד אימות חדש נשלח." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "נתוני חשבון" msgid "Account exists to spam, scam, or abuse the platform." msgstr "החשבון קיים כדי לשלוח ספאם, להונות או לנצל לרעה את הפלטפורמה." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "החשבון מוגבל" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "מצב חשבון" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "החשבון חדש מדי" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "נדרש אימות חשבון" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "הוספת בוט לקהילה עם ההרשאות המבוקשות" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "הוסף הערה (אופציונלי)" @@ -3054,8 +3052,10 @@ msgstr "הוסף נושא לערוץ זה" msgid "Add a word…" msgstr "הוספת מילה…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "הוסף אימייל פעיל" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "הוסף חשבון כדי להמשיך." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "הוסף/הוסיפי קודם אימייל וסיסמה לחשבון שלך." @@ -3424,11 +3424,6 @@ msgstr "נוסף: {createdDate} • שימוש אחרון: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "הערות נוספות (אופציונלי)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "נדרש אימות נוסף" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "כל השפות" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "כבר מוגדר לביטול" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "דווח על ההודעה הזו גם לצוות הבטיחות של {productName}" @@ -4713,11 +4708,6 @@ msgstr "בקש אישור לפני תחילת שיחות" msgid "Ask for a passkey after your password when you sign in" msgstr "בקשת מפתח גישה לאחר הסיסמה שלך בעת הכניסה" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "בקש ממנהלי המערכת של המופע הזה לסקור את חשבונך. מופע זה מופעל באופן עצמאי, ורק מנהלי המערכת שלו יכולים לשנות את חשבונך." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "הסרה אוטומטית של פרמטרי מעקב (כמו utm_source, msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "הסרה אוטומטית של פרמטרי מעקב מכתובות URL בהודעות שאתה שולח" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "סינון אוטומטי של הודעות עם תוכן בוטה בערוצים שלא סומנו כבעלי תוכן למבוגרים." @@ -5359,8 +5349,6 @@ msgstr "לא זמין כרגע" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "חזרה" @@ -6506,11 +6494,6 @@ msgstr "מצלמות והתקני לכידה וירטואליים נבחרים msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "המצלמות כבויות מעל {voiceChannelCameraUserLimit} משתתפים" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "אין לך גישה לאימייל הזה?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "לא ניתן להעלות קבצים כאן" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "לא ניתן להעלות קבצים כאן" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "שינוי אימייל" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "שינוי אימוג'י" @@ -7201,7 +7184,7 @@ msgstr "שינוי מגבלת המשתמשים מ-{oldCount} ל-{newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "שינוי כתובת ה-URL המותאמת אישית מ-{oldCode} ל-{newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "שינוי רמת האימות מ-{oldLevel} ל-{newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "ערוץ או קטגוריה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "עקיפות הרשאות ערוץ" @@ -7509,8 +7492,6 @@ msgstr "בדוק את החיבור ונסה שוב." msgid "Check your connection, then try again." msgstr "בדוק את החיבור שלך, ולאחר מכן נסה שוב." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "בחר תצוגה מבורר המערכת שלך" msgid "Choose a GIF" msgstr "בחר GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "בחירת שיטה" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "בחר סיסמה חדשה." @@ -7680,8 +7656,8 @@ msgstr "בחר פעולה." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "בחר אימוג'י" @@ -7749,11 +7725,6 @@ msgstr "בחר כיצד יפעל המופע שלך" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "בחר אחת מהשיטות הבאות כדי להוכיח בעלות על הדומיין. עליך להשלים רק אחת." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "יש לבחור שיטת אימות אחת. כל אחת מהשיטות יכולה להשלים את הבדיקה הזו." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "בחר מה {clientLabel} יכול לעשות בקהילה שלך. בט msgid "Choose what friends see in their active now panel" msgstr "בחר מה חברים רואים בחלונית \"פעילים כעת\" שלהם" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "בחר מה נדרש מחברים לפני שיוכלו לשלוח הודעות בערוצים או הודעות פרטיות לחברי הקהילה." @@ -8030,8 +8001,8 @@ msgstr "מנקה את המיקרופון שלך לדיבור ברור." msgid "Clear" msgstr "נקה" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "ניקוי לאחר" @@ -8053,7 +8024,7 @@ msgstr "נקה את כל ההדמיות של קבצים מצורפים" msgid "Clear all token overrides" msgstr "נקה את כל עקיפות האסימונים" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "נקה הדמיות של קבצים מצורפים" @@ -8066,14 +8037,14 @@ msgstr "נקה פקודה" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "נקה סטטוס מותאם אישית" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "למחוק את כל הריאקציות מההודעה הזו?" @@ -8124,7 +8095,7 @@ msgstr "נקה את שדה החיפוש" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "ערכת נושא פחם" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "פקודות" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "התגובות מושבתות כי מצב איטי מופעל באחד או יותר מהערוצים שבחרת. התגובה תיחסם על ידי מצב איטי מיד לאחר ההעברה." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "התגובות מושבתות כי מצב איטי מופעל ב-{forwardChannelDisplayName}. התגובה תיחסם על ידי מצב איטי מיד לאחר ההעברה." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "התגובות אינן זמינות כשמצב איטי מופעל." @@ -8670,11 +8639,11 @@ msgstr "קהילות" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "קהילות וערוצים שבהם אינך יכול לנהל Webhooks מוסתרים." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "קהילות המופיעות בגילוי נדרשות לסרוק הודעות מכל החברים. לא ניתן לשנות הגדרה זו כל עוד הגילוי מופעל." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "קהילות המופיעות בגילוי דורשות אימייל מאומת לפחות. לא ניתן לבחור באפשרות \"ללא\" כשהגילוי מופעל." @@ -8827,7 +8796,7 @@ msgstr "שם קהילה" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "כינוי בקהילה" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "פרופיל קהילה" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "פרופיל הקהילה עודכן" @@ -8907,7 +8876,7 @@ msgstr "רמת תגי ההודעות שלא נקראו בקהילה" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "הקהילה עודכנה" @@ -8952,11 +8921,6 @@ msgstr "השוואה" msgid "Complete mature content check" msgstr "השלמת בדיקת התוכן למבוגרים" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "יש להשלים אחד מנתיבי האימות הבאים כדי להמשיך להשתמש ב-{productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "השלם תשלום" msgid "Complete the mature content check to unlock mature media." msgstr "יש להשלים את בדיקת התוכן למבוגרים כדי לבטל את נעילת המדיה למבוגרים." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "כדי להמשיך להשתמש ב-{productName}, יש להשלים את שלבי אימות האימייל והטלפון הנדרשים." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "יש להשלים את האימות הנדרש כדי להמשיך להשתמש ב-{productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "הגדר את תג הפרופיל שלך" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "החיבורים סודרו מחדש" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "נדרשת הסכמה" @@ -9349,16 +9304,6 @@ msgstr "בניית כתובת URL לאישור עם היקפים והרשאות. msgid "Contact" msgstr "פרטי קשר" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "יצירת קשר עם התמיכה" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "צור קשר עם מנהלי המערכת של המופע הזה לקבלת עזרה." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "יוצר תוכן" msgid "Content filter" msgstr "סינון תוכן" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "סינון תוכן" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "סוג התוכן לקידוד" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "שערי בטיחות תוכן" @@ -9416,12 +9361,10 @@ msgstr "ניתן לפתוח תפריטי הקשר בלחיצה שמאלית (ע #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "שליטה על התנהגות מחוון ההודעות שלא נקרא msgid "Control which chat updates are announced by assistive technology." msgstr "שליטה על עדכוני צ'אט שיוכרזו על ידי טכנולוגיה מסייעת." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "השיחה לא נמצאה" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "לא ניתן היה להוסיף תגית" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "לא ניתן היה להוסיף את החבר הזה לקבוצה. יש לנסות שוב." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "לא ניתן להוסיף לקבוצה" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "לא ניתן ליצור קישור לעיצוב" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "לא ניתן ליצור קישור הזמנה" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "לא ניתן היה לסיים את תקופת החסד שלך" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "לא ניתן ליצור קישור הזמנה. יש לנסות שוב." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "לא ניתן לעבד את התמונה" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "לא ניתן לפרסם הודעה זו" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "לא ניתן להצטרף מחדש לקהילת Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "לא ניתן היה להסיר את צליל הכניסה" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "לא ניתן היה לשמור את הגדרות הערוץ" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "לא ניתן היה לשמור את צליל הכניסה" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "לא ניתן לבטל את הבקשה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "טיימר ספירה לאחור" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "מדינה" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "צור את חשבון מנהל המערכת" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "ליצור את הצ'אט הקבוצתי עם {addableCount, plural, one {# נמען שנותר} two {# נמענים שנותרו} other {# נמענים שנותרו}} ולדלג על האחרים?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "יצירת webhook" @@ -10948,7 +10884,7 @@ msgstr "אימוג'י מותאם אישית {emojiName} מקהילה" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "צלילי כניסה מותאמים אישית אינם מופעלים במופע זה." @@ -11108,7 +11044,7 @@ msgstr "עיבוד קולי מותאם אישית" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "טקסט אזהרה מותאם אישית" @@ -11530,11 +11466,6 @@ msgstr "מנוע חיפוש ברירת מחדל" msgid "Default shortcuts" msgstr "קיצורי דרך ברירת מחדל" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "כרטיסיית ברירת מחדל" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "דלאוור" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "מחיקת ההודעה הזו" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "למחוק את ההודעה הזו? לא ניתן לבטל פעולה זו." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "למחוק הודעה זו? לא ניתן לבטל. הודעה זו תוסר גם מכל קהילה שעוקבת אחר ערוץ זה." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "מצב מפתח" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "אפשרות מפתח" @@ -12299,7 +12230,7 @@ msgstr "קלט ישיר" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "מצב תצוגה" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "שם לתצוגה" @@ -12858,7 +12789,7 @@ msgstr "האם תרצה להצטרף ל-{communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "דוק, אני מהעתיד. הגעתי לכאן במכונת זמן שאתה המצאת. עכשיו, אני צריך את עזרתך כדי לחזור לשנת 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "עריכת השעה המקומית בפרופיל" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "עריכת הודעה שפורסמה?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "עריכת ההודעות שלך למעלה או למטה" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "ערוך את מראה הפרופיל שלך וצפה בתצוגה מקדימה חיה" @@ -13590,10 +13521,8 @@ msgstr "זכאי להחזר כספי עד {windowEndsOn}. פעולה זו גם msgid "Email" msgstr "אימייל" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "נדרשת כתובת אימייל." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "האימייל שונה" @@ -13616,49 +13547,17 @@ msgstr "האימייל שונה" msgid "Email delivery" msgstr "משלוח אימייל" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "אימייל או טלפון" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "נדרש אימות מחדש של אימייל או מספר טלפון" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "נדרש אימות מחדש של כתובת האימייל" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "האימייל אינו זמין" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "עדכון האימייל אינו זמין כרגע. יש לנסות שוב מאוחר יותר או לפנות לתמיכה." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "נדרש עדכון אימייל" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "שלח לנו אימייל ונציג יבדוק את חשבונך. ציין שאינך יכול לאמת באמצעות SMS ונטפל בזה. התשובות מגיעות באימייל, לכן זה לא מיידי." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "באנר אימות אימייל" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "נדרש אימות אימייל" @@ -13675,6 +13574,10 @@ msgstr "עקיפת אימות אימייל" msgid "Email verified successfully" msgstr "האימייל אומת בהצלחה" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "אימיילים לכתובת הנוכחית שלך לא נמסרים. הזן כתובת אימייל חדשה ונשלח לשם קוד." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "הטמעות" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "ההטמעות הוסתרו" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "ההטמעות הוצגו שוב" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "הפעלת השמעת דיבור /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "יש להפעיל אימות דו-שלבי בחשבונך כדי לשנות הגדרה זו" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "יש להזין כתובת URL או קוד תבנית חוקיים של {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "יש להזין כתובת אימייל חוקית." @@ -14298,33 +14199,11 @@ msgstr "יש להזין כתובת אימייל חוקית." msgid "Enter a valid message link." msgstr "יש להזין קישור חוקי להודעה." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "יש להזין מספר טלפון נייד חוקי." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "יש להזין מספר טלפון חוקי" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "הזן שם משתמש חוקי ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "הזן כתובת אימייל שיש לך גישה אליה. נשלח לשם קוד." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "הזן קוד" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "מעבר למסך מלא" msgid "Enter gift code…" msgstr "הזן קוד מתנה…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "הזן אימייל חדש" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "הזן אחד מקודי הגיבוי שלך אם אינך יכול לה msgid "Enter one of your backup codes." msgstr "הזן אחד מקודי הגיבוי שלך." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "הזן מספר טלפון" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "הזן את הקוד בן {digitCount} הספרות מאפליקציית msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "הזן את הקוד בן {digitCount} הספרות מאפליקציית האימות שלך." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "הזן את הקוד בן {digitCount} הספרות שנשלח אל {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "הזן את הקוד בן {MFA_CODE_DIGIT_COUNT} הספרות שנשלח אל {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "הזן את הקוד" @@ -14408,11 +14267,6 @@ msgstr "הזן את הקוד לפני שתמשיך." msgid "Enter the code from your authenticator app." msgstr "הזן את הקוד מאפליקציית האימות שלך." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "הזן את הקוד שנשלח אל {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "הזן את הקוד שנשלח לאימייל הנוכחי שלך." @@ -14426,6 +14280,7 @@ msgstr "הזן את הקוד שנשלח לכתובת האימייל שלך." msgid "Enter the code shown in the app to continue." msgstr "הזן את הקוד שמופיע באפליקציה כדי להמשיך." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "הזן את הקוד ששלחנו לאימייל החדש שלך." @@ -14434,11 +14289,6 @@ msgstr "הזן את הקוד ששלחנו לאימייל החדש שלך." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "הזן את הקוד ששלחנו לאימייל שלך כדי לאמת אותו. הסיסמה שלך תוגדר לאחר אישור הקוד." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "הזן את קוד האימייל" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "הזן את קישור ההזמנה כדי להצטרף לקהילה." @@ -14452,11 +14302,6 @@ msgstr "הזן את כתובת האימייל החדשה שבה תרצה להש msgid "Enter the PIN for your security key to continue." msgstr "הזן את ה-PIN של מפתח האבטחה שלך כדי להמשיך." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "הזן את קוד ה-SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "הזן קוד זה בדפדפן שלך כדי להשלים את הכניסה." @@ -14492,11 +14337,6 @@ msgstr "הזן את שמך" msgid "Enter your password." msgstr "הזן את הסיסמה שלך." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "הזן את מספר הטלפון שלך" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "צליל כניסה" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "קובצי צליל כניסה חייבים להיות בנפח של {limit} או פחות." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "ספריית צלילי הכניסה מלאה" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "צליל הכניסה הוסר" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "צליל כניסה נשמר" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "צלילי כניסה" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "צלילי כניסה אינם זמינים" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "תפוגה:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "הגדרת סינון תוכן בוטה" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "ההעתקה ללוח נכשלה" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "יצירת ה-webhook נכשלה" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "טעינת כתובת ה-URL המותאמת אישית נכשלה. יש לנסות שוב." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "טעינת ה-webhooks נכשלה" @@ -15190,11 +15030,6 @@ msgstr "הסרת כתובת ה-URL המותאמת אישית נכשלה. יש ל msgid "Failed to resend code. Try again." msgstr "שליחת הקוד מחדש נכשלה. יש לנסות שוב." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "שליחת קוד האימות מחדש נכשלה. יש לנסות שוב מאוחר יותר." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "שליחת ההודעה נכשלה. יש ללחוץ לחיצה ארוכ msgid "Failed to send report. Try again." msgstr "שליחת הדיווח נכשלה. יש לנסות שוב." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "שליחת אימייל האימות נכשלה. יש לנסות שוב מאוחר יותר." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "ההפעלה נכשלה" @@ -15551,15 +15381,15 @@ msgstr "סינון לפי משתמש" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "סינון כולם" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "סינון חברים ללא תפקידים" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "עקוב אחר הערוץ הזה" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "עקוב כדי לקבל את ההודעות האלה בערוץ שתבחר." @@ -15773,7 +15603,7 @@ msgstr "ערוץ במעקב {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "ערוצים שעוקבים אחריהם" @@ -15857,11 +15687,6 @@ msgstr "לעיניים בריטיות בלבד..." msgid "For me" msgstr "בשבילי" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "בבדיקה הזו יש לשלוח לנו הודעת טקסט במקום לקבל הודעה מאיתנו." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "למען אבטחתך, יש לאמת את זהותך כדי להמשיך." @@ -15905,7 +15730,7 @@ msgstr "כפיית שלד טעינה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "כפיית מדיה למבוגרים" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "העברה כפויה לערוץ AFK" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "כפה היעדר הרשאת {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "הצג תמיד את אזהרת כתובת ה-URL המותאמת איש msgid "Force show voice connection" msgstr "הצג תמיד את מצב החיבור הקולי" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "הפעלת מצב איטי בכפייה" @@ -16020,7 +15845,7 @@ msgstr "העבר מדיה" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "העברת הודעה" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "שכבת-על של חסימה גאוגרפית" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "מוגבל גאוגרפית" @@ -16490,12 +16315,6 @@ msgstr "קבלו אווטאר ובאנר מונפשים, תג מנוי, תג ע msgid "Get monthly" msgstr "קבלו חודשי" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "קבל קוד חדש" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "קודי מתנה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "משך המתנה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "מלאי מתנות" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "תהליך מלאי מתנות" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "המתנה לא נמצאה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "המתנה מומשה" @@ -17030,7 +16849,7 @@ msgstr "צ'אט קבוצתי" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "היי {displayName}, תבע בעלות על החשבון שלך כדי למנוע אובדן גישה." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "היי {displayName}, אנא אמת את כתובת האימייל שלך." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "היי {displayName}, אנחנו לא מצליחים לשלוח אימיילים לכתובת שלך. הוסף כתובת אימייל תקינה כדי לאמת את החשבון שלך." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "להסתיר את שיתוף המסך שלך?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "גבוהה" @@ -17755,11 +17579,6 @@ msgstr "אני תיאור כלי" msgid "I changed my mind" msgstr "שיניתי את דעתי" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "אני צריך דרך אחרת" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "אם הדיווח הזה נוגע להודעה ספציפית, דווח msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "אם הדיווח הזה נוגע להודעות ספציפיות, דווח על ההודעה הרלוונטית ביותר במקום זאת. דיווחי הודעות מספקים לצוות הבטיחות שלנו את ההקשר הברור ביותר, והוספת פרטים בתגובות יכולה לעזור לנו לבדוק את הדיווח מהר יותר. המשך לדווח על המשתמש כולו רק אם דיווח על הודעה לא ישקף את הבעיה הרחבה יותר." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "אם אינך יכול לבצע אימות באמצעות SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "אם אינך יכול להשתמש באף שיטת אימות, צור קשר עם התמיכה לקבלת עזרה." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "גודל ממשק" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "קובץ שמע לא תקין" @@ -18674,8 +18483,10 @@ msgstr "JSON לא תקין. הדבק את התגובה המלאה מהכתובת #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "הצטרף לשיחה קולית" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "הצטרף לערוץ הקולי" @@ -19613,16 +19424,6 @@ msgstr "מידע נוסף על Visionary" msgid "Leave" msgstr "יציאה" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "לצאת מ-{count, plural, one {# קהילה} other {# קהילות}} ולהניח לבדיקה זו בצד?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "צא ודחה את הבדיקה" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "אפשר לקוראי מסך להכריז על הודעות חדשות כשהן מגיעות לערוץ הפתוח. צלילי ההתראות לא יושפעו." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "אפשר לקהילה לנהל את עצמה" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "ספרייה" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "הספרייה מלאה ({max} צלילים לכל היותר). מחק צליל אחד לפני הוספת צליל נוסף." @@ -19812,7 +19613,7 @@ msgstr "ספרייה: {count} מתוך {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "לכל החיים" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "טוען..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "טוען…" @@ -20261,7 +20062,7 @@ msgstr "לואיזיאנה" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "נמוכה" @@ -20416,7 +20217,7 @@ msgstr "ניהול תכונות קהילה" msgid "Manage emoji & stickers" msgstr "ניהול אימוג'י ומדבקות" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "ניהול webhooks נכנסים שיכולים לפרסם הודעות בערוץ זה." @@ -20514,7 +20315,7 @@ msgstr "סמן את כל ערוצי תיבת הדואר הנכנס שלא נקר msgid "Mark as read" msgstr "סמן כנקרא" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "סמן כממומש" @@ -20676,14 +20477,14 @@ msgstr "קהילה למבוגרים בלבד" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "תוכן למבוגרים" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "תוכן למבוגרים ואזהרות תוכן" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "זמן חיים מקסימלי (ימים)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "הגנה מרבית למרחבים ידידותיים למשפחה" @@ -20924,7 +20725,7 @@ msgstr "עצירת הניגון" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "חסימת חבר הוסרה" msgid "Member updated" msgstr "חבר עודכן" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "אימות חברים" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "רמת אימות חברים" @@ -21048,7 +20849,7 @@ msgstr "חברים יוסרו כשהם לא מקוונים, אלא אם כן י msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "חברים עם הרשאת \"{pinMessagesPermissionLabel}\" יכולים להצמיד הודעות עבור כולם." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "חברים עם תפקידים יכולים לעקוף את הבדיקות האלה. עבור מרחבים ציבוריים, אנו ממליצים להפעיל אימות." @@ -21153,7 +20954,7 @@ msgstr "אזכורים שלך יופיעו כאן למשך {retentionDays} ימ #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "אזכורים בלבד" @@ -21292,7 +21093,7 @@ msgstr "הגדרות תצוגת ההודעות זמינות רק במחשב." msgid "Message editing" msgstr "עריכת הודעה" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "ההודעה הועברה" @@ -21341,7 +21142,7 @@ msgstr "כפתורי שדה ההודעה" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "ההודעה ארוכה מדי" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "תצוגות מקדימות של הודעות ברשימת ההודעות הפרטיות" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "ההודעה פורסמה" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "הודעות שפורסמו ב-#{sourceName} יופיעו כעת ב-#{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "הודעות שפורסמו בערוצי הכרזה אלה מועתקות לכאן." @@ -21504,7 +21305,7 @@ msgstr "הודעות שפורסמו בערוצי ההכרזה האלה מועת msgid "Messages you can bookmark" msgstr "הודעות שניתן לשמור בסימניות" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "שליחת הודעות מושהית זמנית בקהילה זו." @@ -21733,30 +21534,30 @@ msgstr "הדמיית תפוגה בעוד יום" msgid "Mock expires in 7 days" msgstr "הדמיית תפוגה בעוד 7 ימים" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "הדמיית שכבת חסימה גאוגרפית" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "הדמיית מלאי מתנות" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "הדמיית שיחה נכנסת" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "סיבת חסימת ערוץ עם תוכן למבוגרים (מדומה)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "סיבת חסימת מדיה עם תוכן למבוגרים (מדומה)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "הדמיית מיקום גאוגרפי בבריטניה" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "אווטרים מדומים של משתמשים בגדלים שונים ובכל שילובי הסטטוסים." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "וריאנט מדומה" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "זרימות מוצר מדומות" @@ -22698,14 +22494,16 @@ msgstr "קהילה חדשה מושתקת" msgid "New direct message" msgstr "הודעה פרטית חדשה" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "אימייל חדש" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "טופס אימייל חדש" @@ -22816,9 +22614,7 @@ msgstr "החדשים ביותר תחילה" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "הבא" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "לא" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "אין הרשאת {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "אין הרשאת {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "אין שינויים לשמירה" msgid "No channels available" msgstr "אין ערוצים זמינים" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "לא נמצאו ערוצים" @@ -23233,11 +23029,6 @@ msgstr "לא נמצאו הרשאות" msgid "No personal words yet." msgstr "אין עדיין מילים אישיות." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "אין מספר טלפון" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "אין תוצאות" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "לא נמצאו תוצאות" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "לא נמצאו משתמשים" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "אין צורך באימות." @@ -23452,7 +23243,7 @@ msgstr "אין צורך באימות." msgid "No verification methods available" msgstr "אין שיטות אימות זמינות" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "אין webhooks" @@ -23504,7 +23295,7 @@ msgstr "ללא המרה" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "ללא" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "ללא (התנהגות רגילה)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "נורווגית" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "לא חבר מספיק זמן" @@ -23798,9 +23589,9 @@ msgstr "חפצים" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "כבוי" @@ -23848,7 +23639,7 @@ msgstr "הישנים ביותר תחילה" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "פעיל" @@ -23884,11 +23675,6 @@ msgstr "לא ניתן היה לקרוא או להעלות קובץ מצורף א msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "קובץ אחד או יותר שאתה מנסה להעלות חורג ממגבלת הגודל המקסימלית של {maxSizeFormatted} לקובץ." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "בדיקה מהירה אחת" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "רמקולים בלבד" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "רק בעל הקהילה יכול לשנות הגדרה זו" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "פתח אימוג'י בדפדפן" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "פתח בורר אימוג'י" @@ -24382,12 +24168,8 @@ msgstr "פתח תפריט" msgid "Open message history threshold" msgstr "פתח את סף היסטוריית ההודעות" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "פתח שכבת-על" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "פתח תפריט נפתח" @@ -24485,11 +24267,6 @@ msgstr "פתח את האפליקציה החדשה. אתה כבר מחובר." msgid "Open the shortcuts list for quick actions." msgstr "פתח את רשימת קיצורי הדרך לפעולות מהירות." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "פתח את אימייל האימות והשתמש בקישור שבתוכו. חלון זה יתעדכן לאחר פתיחת הקישור." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "פתיחת הגדרות שמע ווידאו" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "פתח את הדפדפן שלך, היכנס, ואז הזן את הקוד למטה כדי לקשר את חשבונך." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "פתח את ההודעות שלך" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "פתח את אפליקציית {PRODUCT_NAME} הישנה שלך ובחר \"קשר מכשיר חדש\", ואז הזן את הקוד שלמטה." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "פתח את אפליקציית ההודעות בטלפון וצור הודעת טקסט חדשה." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "פתח את אפליקציית ההודעות בטלפון שלך והתחל הודעת טקסט חדשה." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "ריאקציה אחרת…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "בדיקת מספר הטלפון שלנו אינה פועלת כרגע. זו אשמתנו, לא אשמת המספר שלך. המתן מספר דקות ונסה שוב עם אותו המספר." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "דיוג, הונאה, קישורים זדוניים או טענות שקריות שעלולות לגרום נזק בעולם האמיתי." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "טלפון" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "מספר טלפון" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "נדרש מספר טלפון" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "מספר הטלפון אומת" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "נדרש אימות מחדש של מספר הטלפון" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "שלב טלפון" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "אימות טלפוני אינו זמין עבור חשבון זה. השתמש בשיטה אחרת או פנה לתמיכה." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "נדרש אימות טלפון" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "בחר את המספר בן 4 הספרות שאחרי שם המשתמש msgid "Pick the appearance this administrator account should start with." msgstr "בחר את המראה ההתחלתי של חשבון מנהל המערכת הזה." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "בחר את השיטה שתוכל להשלים עכשיו." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "תמונה בתוך תמונה" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "הצמדה" @@ -25471,7 +25176,7 @@ msgstr "הצמד צ'אט קבוצתי" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "הצמדה או ביטול הצמדה של כל הודעה." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "הצמד את ההודעה הזו לערוץ כדי שכולם יוכלו לראות אותה." @@ -26227,18 +25932,18 @@ msgstr "צבע פרופיל" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "התאמה אישית של הפרופיל" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "התאמה אישית של פרופיל עבור {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "טופס התאמה אישית של הפרופיל" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "סוג פרופיל" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "הפרופיל עודכן" @@ -26340,7 +26045,7 @@ msgstr "הצגת בקשה כשמתחבר התקן שמע חדש" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "תיאום פשיטה" msgid "Rate" msgstr "מהירות" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "הוגבל קצב" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "JSON גולמי של ההטמעה" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "להסיר את {userName} מהחברים שלך?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "הסר הכל" @@ -27290,7 +26990,7 @@ msgstr "להסיר את כל הריאקציות מסוג {emojiNameWithColons} #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "הסר את כל הריאקציות" @@ -27899,20 +27599,10 @@ msgstr "תגית המשתמש שדווח (אופציונלי)" msgid "Reposts: <0>{countLabel}" msgstr "ריפוסטים: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "יש לבקש קוד חדש תחילה." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "בקשת קישור איפוס חדש" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "יש לבקש קוד אימות תחילה." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "בקשות" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "דרוש אימות דו-שלבי לפעולות ניהול" @@ -27958,7 +27648,7 @@ msgstr "דרושה הענקת קוד OAuth2" msgid "Require passkey" msgstr "דרישת מפתח גישה" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "דרוש אימות דו-שלבי למנהלים לפני שהם יוכלו לחסום, להוציא, להטיל פסק זמן או למחוק הודעות." @@ -27972,46 +27662,6 @@ msgstr "נדרש" msgid "Required 2FA for moderation actions" msgstr "נדרש אימות דו-שלבי (2FA) לפעולות ניהול" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "לשונית ברירת מחדל לפעולה נדרשת" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "זרימת פעולה נדרשת" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "שלב טלפון של פעולה נדרשת" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "טוען שליחה מחדש של פעולה נדרשת" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "תוצאת שליחה חוזרת של פעולה נדרשת" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "טקסט אימות מחדש של פעולה נדרשת" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "וריאנט של פעולה נדרשת" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "שכבת-על של פעולות נדרשות" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "דורש URI להפניה מחדש וקוד הרשאה בעת הזמנת בוט זה." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "דורש כתובת אימייל מאומתת וחשבון שגילו 5 דקות לפחות." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "דורש כתובת אימייל מאומתת." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "דורש מספר טלפון מאומת." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "דורש את כל מה שקיים בבינוני, בתוספת חברות בקהילה למשך 10 דקות לפחות." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "שלח שוב ({resendSecondsRemaining} שנ')" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "שלח שוב ({secondsRemaining} שנ')" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "כפתור שליחה מחדש נטען" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "שלח קוד שוב" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "שלח אימייל שוב" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "תוצאת שליחה מחדש" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "נשלח שוב" @@ -28518,21 +28152,6 @@ msgstr "הצג" msgid "Reveal spoiler" msgstr "הצג ספוילר" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "כדי להמשיך להשתמש ב-{productName}, יש לאמת מחדש את כתובת האימייל או לאמת את מספר הטלפון." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "יש לאמת מחדש את כתובת האימייל שלך כדי להמשיך להשתמש ב-{productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "יש לאמת מחדש את מספר הטלפון שלך כדי להמשיך להשתמש ב-{productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "רוויה" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "תצוגה מקדימה בגלילה" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "חיפוש ערוצים" msgid "Search communities" msgstr "חיפוש קהילות" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "חיפוש מדינות..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "חיפוש מדינות…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "בחר את מדינת המגורים שלך." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "בחר…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "שליחה" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "שליחה ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "שליחת דיווח נוסף" msgid "Send button" msgstr "כפתור שליחה" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "שלח קוד" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "שליחת הודעות" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "שליחת הודעות מושבתת" @@ -30151,32 +29759,11 @@ msgstr "שליחת מדיה שמורה {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "שלח הודעות טקסט לדיבור באמצעות /tts. חברים שהפעילו טקסט לדיבור ישמעו אותן מוקראות בקול." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "שלח את הקוד <0>{0} אל <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "שלח את הקוד למספר הטלפון שלמטה." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "שלח את הקוד הזה" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "לשלוח את ההצמדה הזו אחורה בזמן?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "שליחה אל" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "שלח הודעה קולית" msgid "Send:" msgstr "שליחה:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "שליחת SMS למספר הטלפון הזה יקרה מדי עבור {PRODUCT_NAME}, ולכן אנחנו צריכים שתשלח לנו SMS במקום. אנחנו יודעים שזה לא אידיאלי. אפשר גם לבקש ממנהלי המערכת של המופע הזה להסיר את הדרישה הזו מהחשבון שלך." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "שליחת SMS למספר הטלפון הזה יקרה מדי עבור {PRODUCT_NAME}, ולכן אנחנו צריכים שתשלח לנו SMS במקום. אנחנו יודעים שזה לא אידיאלי. אפשר גם ליצור קשר עם <0>{SUPPORT_EMAIL} כדי שנסיר את הדרישה הזו מהחשבון שלך." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "שליחה טורית" msgid "Serve the token file" msgstr "הגשת קובץ האסימון" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "שגיאת שירות" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "הגדר קיצור דרך מותאם אישית עבור \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "הגדר סטטוס מותאם אישית" @@ -30486,18 +30060,6 @@ msgstr "הגדרת אזור הקול ל-{region}" msgid "Set the voice region to automatic" msgstr "הגדרת אזור הקול לאוטומטי" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "הנח לבדיקה זו בצד" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "להניח לבדיקה זו בצד?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "הגדר/י את כינויי הגוף שלך" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "הגדר את הסטטוס שלך" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "קיצורי הדרך מושהים בזמן הקלטת צירוף מקשים." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "יש לקצר את ההודעה ולנסות שוב." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "הצג סמל של {productName} במגש המערכת או בשורת התפריטים" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "הצגת אזהרת תוכן" @@ -31672,7 +31234,7 @@ msgstr "מצב איטי · המתן {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "מצב איטי פעיל" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "מצב איטי מוגדר ל-{durationLabel}. המתן לפני שליחת הודעה נוספת." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "זמן שנותר במצב איטי" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "הדמיית מצב איטי" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "זמן שנותר במצב איטי" @@ -31807,11 +31369,6 @@ msgstr "גלילה חלקה" msgid "Smoother video" msgstr "וידאו חלק יותר" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "אימות באמצעות SMS אינו זמין כרגע. נסה שוב מאוחר יותר או צור קשר עם התמיכה." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "משהו השתבש במהלך הכנת המדבקה. נסה קובץ אחר או נסה שוב בעוד רגע." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "משהו השתבש בעת הפרסום. נסה שוב בעוד רגע." @@ -32009,11 +31566,9 @@ msgstr "משהו השתבש. טען מחדש את הדף או היכנס שוב. msgid "Something went wrong. Try again later." msgstr "משהו השתבש. יש לנסות שוב מאוחר יותר." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "משהו השתבש. יש לנסות שוב." @@ -32352,11 +31907,6 @@ msgstr "תם הזמן להתחברות באמצעות SSO. נסה שוב." msgid "Staff controls" msgstr "פקדי צוות" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "ייתכן שיחולו תעריפי ההודעות הרגילים של הספק שלך." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "אנימציית כוכב" msgid "Starred channels" msgstr "ערוצים שמסומנים בכוכב" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "העברת נתונים של מנוי:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "מנוי" @@ -33051,14 +32599,12 @@ msgstr "תרחישי מנוי" msgid "Subtext" msgstr "טקסט משנה" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "הצלחה" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "מומלץ לרוב הקהילות" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "מערכת וקבלת פנים" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "הודעות מערכת מצוות {productName}. לא ניתן להשיב כאן." @@ -33765,11 +33311,6 @@ msgstr "בחירת טקסט" msgid "Text size" msgstr "גודל טקסט" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "שלח/י לנו הודעה מהטלפון שלך" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "תאילנדית" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "תודה שעזרת לשמור על הבטיחות ב-{productName}. נבדוק את הדיווח שלך בהקדם האפשרי." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "הקוד הזה לא עבד. יש לבדוק אותו ולנסות שוב." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "הקוד הזה פג תוקף. בקש קוד חדש." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "הפעולה לא הושלמה. ייתכן שכבר עזבת חלק מהקהילות, וחשבונך עדיין נעול. לחץ שוב על \"דחה בדיקה זו\" כדי להשלים." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "הפעולה לא בוצעה. שום דבר לא השתנה. נסה שוב." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "זה לא נראה כמו צבע תקין. נסה hex, rgb(), hsl(), א msgid "That doesn't look like a valid URL." msgstr "זה לא נראה כמו כתובת URL תקינה." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "כתובת האימייל הזו כבר נמצאת בשימוש." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "העקיפה שללה {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "הדף שחיפשת אינו קיים או הועבר." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "בדיקת הטלפון נדחתה. נותר שלב אחד של אימייל." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "אין ערוצים זמינים ליצירת הזמנה." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "אין תפקידים להקצאה בקהילה זו כרגע, אך ניתן ליצור תפקיד חדש ב-<0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "אין webhooks מוגדרים לערוץ זה. צור webhook כדי לאפשר לאפליקציות חיצוניות לפרסם הודעות." @@ -34273,7 +33784,7 @@ msgstr "אירעה שגיאה בטעינת ההזמנות. יש לנסות שו msgid "There was an error loading the stickers. Try again." msgstr "אירעה שגיאה בטעינת המדבקות. יש לנסות שוב." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "אירעה שגיאה בטעינת ה-webhooks עבור ערוץ זה. יש לנסות שוב." @@ -34417,7 +33928,7 @@ msgstr "הערוץ הזה יכול לפרסם 10 הודעות ברצף, ואז msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "הערוץ הזה יכול לפרסם 10 הודעות ברצף, ואז עוד אחת כל 6 דקות. נסה שוב בעוד כמה דקות." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "ערוץ זה אינו תומך ב-webhooks." @@ -34550,12 +34061,12 @@ msgstr "החיבור הזה לא אומת." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "יש כאן תוכן רגיש." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "שיחה זו אינה זמינה עוד." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "בקבוצה הזו יש יותר מדי אנשים" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "הקבוצה הזו מלאה. הסר מישהו לפני הוספת אנשים נוספים." @@ -34715,11 +34226,6 @@ msgstr "זו מדבקה מותאמת אישית מקהילה." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "זה ערוץ עם הגבלת גיל. עדכונים יכולים להישלח רק לערוצים עם הגבלת גיל." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "זוהי בדיקה למניעת ספאם. מספר הטלפון שלך אינו מקושר לחשבונך." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "זה מושבת" msgid "This is how messages appear" msgstr "כך נראות ההודעות" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "זה לא זמין בחשבון שלך כרגע. בקש ממנהלי המערכת של המופע הזה לבדוק זאת." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "זה לא זמין בחשבונך כרגע. שלח אימייל ל-{supportEmail} ואדם יבדוק זאת." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "זה לא הערוץ שחיפשת." @@ -34792,11 +34288,6 @@ msgstr "זהו מפתח הגישה האחרון שלך, ומפתחות גישה msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "זהו מפתח הגישה האחרון שלך. לאחר שיימחק, לא תוכל להשתמש במפתח גישה כשלב האימות השני שלך." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "זה לא מספר נייד, ולכן אינו יכול לקבל מאיתנו הודעות SMS. נסה מספר נייד, או פנה לתמיכה אם אתה חושב שזה שגוי." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "ההודעה הזו כבר נמחקה." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "ההודעה הזו כבר פורסמה" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "ההודעה הזו כבר לא קיימת." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "הכינוי הזה יהיה גלוי רק בקהילה הזו" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "המספר הזה מאומת על ידי שליחת הודעת טקסט אלינו. חזור והתחל שוב את אימות הטלפון כדי לקבל את הקוד ואת המספר שאליו יש לשלוח הודעת טקסט." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "המספר הזה דורש אימות בטקסט במקום הודעת SMS מאיתנו." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "השמע של משתתף זה מושתק" msgid "This participant was deafened by moderators" msgstr "השמע של משתתף זה הושתק על ידי מנהלים" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "אי אפשר להשתמש במספר הטלפון הזה. יש לנסות מספר נייד אחר או ליצור קשר עם התמיכה." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "מספר הטלפון הזה כבר נמצא בשימוש. נסה מספר אחר או צור קשר עם התמיכה." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "למשתמש זה אין תפקידים בקהילה זו." msgid "This user is already banned from the community." msgstr "משתמש זה כבר נחסם מהקהילה." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "משתמש זה אינו זמין עוד." @@ -35065,11 +34536,6 @@ msgstr "משתמש זה נוסף בכפייה לקהילה על ידי מנהל msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "תוקף סשן האימות פג. יש לחזור אל {productName} ולהתחיל את תהליך התשלום מחדש." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "תוקף סשן האימות הזה פג. יש להתחיל מחדש." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "פעולה זו תנתק אותך מהחשבון, תנקה קובצי מ msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "פעולה זו תאפשר אמון בכל הקישורים החיצוניים ותדלג על האזהרה עבור כל דומיין. הדומיינים המהימנים הקיימים שלך יוחלפו. אפשרות זו פחות מאובטחת." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "החלון הזה יתעדכן אוטומטית לאחר שנקבל את ההודעה שלך." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "שורת כותרת" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "פלטפורמת שורת הכותרת" @@ -35470,18 +34931,11 @@ msgstr "גוון" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "ממפה תמונות HDR לטווח רגיל ומפחית את בהירות השיא." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "ניסית יותר מדי פעמים. המתן מעט ונסה שוב." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "יותר מדי קהילות" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "יותר מדי בקשות. נסה שוב מאוחר יותר." @@ -36151,8 +35605,10 @@ msgstr "לא ניתן להכין אף אימוג'י להעלאה. אירעו ה #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "לא זמין" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "ללא קטגוריה" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "חשבון שלא נתבע" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "רשימה לא ממוספרת" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "הסר הצמדה" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "בטל הצמדת הודעה" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "להסיר את ההצמדה מההודעה הזו?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "שינויים שלא נשמרו" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "קובץ שמע לא נתמך." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "עד שאפעיל מחדש" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "אימייל לא מאומת" @@ -36958,12 +36414,7 @@ msgstr "עדכן את {productName} כדי להציג את ההודעה הזו." msgid "Update app" msgstr "עדכן את האפליקציה" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "עדכון אימייל" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "עדכן את הסטטוס שלי" @@ -37306,18 +36757,13 @@ msgstr "השתמש ב-{url} במקום שבו תוכנס כתובת ה-URL של msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "השתמש בחלון ייעודי כדי לקבוע תאריך סף להיסטוריית ההודעות עבור חברים שאין להם את ההרשאה {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "השתמש בכתובת אימייל אחרת ואמת אותה באמצעות קוד." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "השתמש במצב האמיתי" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "השתמש בסוג הפרימיום האמיתי" @@ -37335,16 +36781,6 @@ msgstr "שימוש בשיטה חלופית" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "השתמש באפליקציית אימות כדי ליצור קודים לאימות דו-שלבי" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "השתמש בכתובת אימייל שיש לך גישה אליה. נשלח לשם קוד." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "יש להשתמש בכתובת אימייל שונה מהכתובת הנוכחית שלך." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "השתמש בערכת נושא כהה בכל האפליקציה" msgid "Use default" msgstr "השתמש בברירת מחדל" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "שימוש באימייל אחר" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "שימוש באימייל" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "להשתמש במפתחות גישה לאימות דו-שלבי?" msgid "Use passkeys to sign in without a password" msgstr "שימוש במפתחות גישה כדי להיכנס ללא סיסמה" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "שימוש בטלפון" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "השתמש בטקסט אימות מחדש" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "משתמש עובר ערוץ" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "משתמש לא נמצא" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "אימות" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "מחסומי אימות וחברות" @@ -37970,15 +37387,8 @@ msgstr "קוד אימות" msgid "Verification code sent" msgstr "קוד האימות נשלח" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "קוד האימות נשלח. יש לבדוק את תיבת הדואר הנכנס בכתובת האימייל החדשה." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "נשלחה הודעת אימות. יש לבדוק את תיבת הדואר הנכנס." @@ -38038,23 +37448,6 @@ msgstr "טופס אימות זהות" msgid "Verify it's you" msgstr "אימות זהותך" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "אימות מספר טלפון" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "אימות מספר טלפון" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "טופס אימות מספר טלפון" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "יש לאמת את כתובת האימייל שלך לפני הוספת אפליקציית אימות." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "יש לאמת את כתובת האימייל שלך לפני שינוי הכינוי, האווטאר, הבאנר, הביוגרפיה, כינויי הגוף או צבע ההדגשה שלך בקהילה." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "יש לאמת את כתובת האימייל שלך לפני שינוי שם המשתמש, שם התצוגה, האווטאר, הבאנר, הביוגרפיה, כינויי הגוף, אזור הזמן או פרטיות התג של {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "יש לאמת את כתובת האימייל לפני עריכת פרופיל הקהילה. עדיין ניתן להציג תצוגה מקדימה כאן." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "יש לאמת את כתובת האימייל לפני עריכת הפרופיל. עדיין ניתן להציג תצוגה מקדימה כאן." @@ -38113,11 +37506,6 @@ msgstr "יש לאמת את כתובת האימייל שלך לפני שליחת msgid "Verify your email first" msgstr "יש לאמת את כתובת האימייל שלך קודם" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "יש לאמת את כתובת האימייל או מספר הטלפון שלך כדי להמשיך להשתמש ב-{productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "אמת את האימייל שלך כדי לקנות מתנות." msgid "Verify your email to change your username" msgstr "אמת את כתובת האימייל שלך כדי לשנות את שם המשתמש" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "יש לאמת את כתובת האימייל שלך כדי להמשיך להשתמש ב-{productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "אמת את כתובת האימייל שלך כדי לערוך את פרופיל הקהילה הזה" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "אמת את כתובת האימייל שלך כדי לערוך את הפרופיל" @@ -38181,13 +37564,6 @@ msgstr "ורמונט" msgid "Version" msgstr "גרסה" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "גבוה מאוד" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "הגברת עוצמת הקול" msgid "Wait a moment before deleting more messages." msgstr "המתן רגע לפני מחיקת הודעות נוספות." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "המתן רגע. חלון זה ייסגר אוטומטית ברגע שנקבל את ההודעה שלך." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "המתנה בין הודעות. חברים עם ההרשאה \"{bypassSlowmodePermissionLabel}\" יכולים לעקוף זאת." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "המתן כאן" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "ממתין למפתח גישה…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "ממתין שתוקף מצב איטי ב-{forwardChannelDisplayName} יפוג." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "ממתין שתוקף מצב איטי באחד או יותר מהערוצים שנבחרו יפוג." @@ -39115,16 +38482,6 @@ msgstr "לא הצלחנו לקרוא את העיצוב הזה. ייתכן שהו msgid "We couldn't remove that account. Try again." msgstr "לא הצלחנו להסיר את החשבון הזה. יש לנסות שוב." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "לא הצלחנו לאמת את המספר הזה באופן אוטומטי. צור קשר עם התמיכה ונציג אנושי יבדוק את חשבונך." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "איננו שולחים הודעות אימות למדינה זו. נסה מספר נייד ממדינה אחרת, או פנה לתמיכה." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "מצאנו מינוי קיים ל-{premiumProductFullName} עבור חש msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "הורדנו את המחיר של {premiumProductName} בברזיל. כעת הוא עולה {monthlyPrice} לחודש או {yearlyPrice} לשנה." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "אנחנו צריכים שלב אימות אחד לפני שתוכל להמשיך. זה עוזר להגן על חשבונות ולמנוע ספאם ב-{productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "נדרשים שני שלבי אימות לפני שתוכל להמשיך. נציג שלב אחד בכל פעם." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "אנו ממליצים לשמור את הקודים האלה עכשיו כדי שלא תינעל מחוץ לחשבונך." @@ -39167,11 +38514,6 @@ msgstr "שלחנו קוד לכתובת {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "נמלא מראש את {prefillEmail} לאחר שההתחברות בדפדפן תיפתח." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "נשלח קוד אימות ב-SMS כשהשירות יהיה זמין." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "היינו שמחים לתת לך יותר מ-{PREMIUM_PRODUCT_NAME} לכל החיים, אבל זה שובר את רצף הזמן-חלל. אולי תשלח את המתנה לחבר במקום?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "נעבד זאת בהקדם האפשרי. תקבל אימייל כשהארכיון שלך יהיה מוכן." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "נשחזר את האימייל הקודם שלך, ננתק סשנים ישנים, נסיר מספרי טלפון, נבטל אימות רב-שלבי (MFA), ונאבטח את חשבונך באמצעות סיסמה חדשה." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "נשחזר את כתובת האימייל הקודמת שלך, נתנתק מהסשנים הישנים, נבטל אימות רב-שלבי ונאבטח את החשבון שלך עם סיסמה חדשה." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "נשלח קוד אימות לאימייל שלך לפני שתוכל ל msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "נשלח קוד אימות לאימייל שלך לפני שתוכל להציג את קודי הגיבוי שלך." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "נשלח קוד SMS כשיגיע. המספר שלך לא מקושר לחשבון שלך. אנו שומרים רק סימון מוצפן, ללא מזהה משתמש, לזמן מוגבל." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "נוודא את כתובת האימייל הנוכחית שלך ולאחר מכן את כתובת האימייל החדשה שלך באמצעות קודים חד-פעמיים." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook נוצר" @@ -39331,7 +38669,7 @@ msgstr "Webhook עודכן" msgid "Webhook URL" msgstr "כתובת URL של Webhook" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooks" @@ -39486,8 +38824,8 @@ msgstr "מה שאתה משתף לא מתעדכן" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "מה קורה?" @@ -39967,21 +39305,11 @@ msgstr "ניתן להסיר את ההרשאה <0>{readMessageHistoryPermissionLa msgid "You can sign back in at any time." msgstr "תוכל להיכנס שוב בכל עת." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "תמיד אפשר לבקש ממנהלי המערכת של המופע הזה בדיקה אנושית." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "עדיין אפשר ליצור חשבון או להיכנס. אם ההזמנות יופעלו מחדש מאוחר יותר, תוכל להשתמש באותו קישור כדי להצטרף." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "אתה עדיין יכול לשלוח אימייל ל-{supportEmail} לבדיקה אנושית בכל עת." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "אפשר להשתמש בקישורים, אימוג'י ועיצוב טקסט (Markdown)." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "אי אפשר להוסיף ביטויים שם" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "אינך יכול להוסיף ריאקציות חדשות כשאתה בפסק זמן." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "אי אפשר להוסיף את עצמך כחבר" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "אי אפשר לשנות את הכינוי שלך כאן" @@ -40094,7 +39422,7 @@ msgstr "אינך יכול לשלוח לעצמך בקשת חברות." msgid "You can't send messages in this channel." msgstr "אינך יכול לשלוח הודעות בערוץ זה." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "אינך יכול לשלוח הודעות בקהילה זו." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "אין לך הרשאה לבצע פעולה זו על חבר זה." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "אין לך הרשאה להצטרף לערוץ הקולי הזה" @@ -40243,7 +39571,7 @@ msgstr "אין לך הרשאה לשנות את שם האימוג'י הזה. הש msgid "You have been banned from this community." msgstr "נחסמת מהקהילה הזו." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "חסמת את {username}. בטל את החסימה כדי לשלוח הודעות." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "יש לך שינויים שלא נשמרו." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "יש לך שינויים שלא נשמרו. שמור או אפס לפני שתעזוב." @@ -40270,7 +39598,7 @@ msgstr "יש לך שינויים שלא נשמרו. שמור או אפס לפנ msgid "You haven't authorized any applications to access your account." msgstr "לא אישרת לאף אפליקציה לגשת לחשבון שלך." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "אינך חבר בקהילה זו מספיק זמן כדי לשלוח הודעות." @@ -40326,11 +39654,6 @@ msgstr "עליך להסכים לתנאי השירות כדי ליצור חשבו msgid "You must verify your email before sending a report." msgstr "יש לאמת את כתובת האימייל שלך לפני שליחת דיווח." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "כדי לשנות את כתובת האימייל שלך מכאן, עליך לגשת לאימייל הנוכחי שלך. השתמש באימות טלפוני אם זמין, או פנה לתמיכה." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "דרושה לך ההרשאה \"{manageRolesPermissionLabel}\" כדי ל msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "דרושה לך ההרשאה \"{manageRolesPermissionLabel}\" כדי לערוך הרשאות אלה." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "דרושה לך ההרשאה \"{manageWebhooksPermissionLabel}\" כדי להציג ולערוך webhooks של הערוץ הזה." @@ -40384,18 +39707,14 @@ msgstr "עליך לתבוע את החשבון שלך לפני שתוכל ליצ msgid "You need to claim your account before you can start a direct message." msgstr "עליך לתבוע את החשבון שלך לפני שתוכל להתחיל צ'אט." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "עליך לתבוע את החשבון שלך כדי לשלוח הודעות פרטיות." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "עליך לתבוע את החשבון שלך כדי לשלוח הודעות בקהילה זו." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "עליך לאמת מספר טלפון כדי לשלוח הודעות בקהילה זו." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "עליך לאמת את כתובת האימייל שלך לפני שתו msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "יש לאמת את כתובת האימייל שלך לפני שתוכל לרכוש את {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "עליך לאמת את כתובת האימייל שלך כדי לשלוח הודעות בקהילה זו." @@ -40424,11 +39743,6 @@ msgstr "עליך לאמת את כתובת האימייל שלך כדי לשלו msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "לך או למישהו שאתה מוסיף כבר יש את המספר המרבי של צ'אטים קבוצתיים פתוחים. צא מאחד מהם ונסה שוב." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "אתה נשאר ב-{ownedNames}. בעלים לא יכולים לעזוב את הקהילה שלהם." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "השמע שלך הושתק על ידי מנהלים" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "תועבר אל {redirectHostname} לאחר האישור." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "תעזוב {count, plural, one {קהילה אחת שהבדיקה הזו חלה עליה} other {# קהילות שהבדיקה הזו חלה עליהן}}, וחשבונך יחזור לפעול כרגיל." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "תעזוב את {guildNames}. שום דבר שפרסמת לא נמחק, ותוכל להצטרף שוב מאוחר יותר." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "עדיין תצטרך להשלים את שלב האימייל." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "אתה פועל מהר מדי" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "אתה פועל מהר מדי. המתן רגע ונסה שוב." @@ -40636,7 +39935,7 @@ msgstr "אתה שולח הודעות מהר מדי" msgid "You're streaming!" msgstr "אתה משדר!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "קיבלת פסק זמן. שליחת הודעות, ריאקציות וקול מושהים עד שפסק הזמן יסתיים." @@ -40764,25 +40063,25 @@ msgstr "תשלום החידוש דרך {storeName} נכשל, אבל <0/> ייש msgid "Your account" msgstr "החשבון שלך" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "החשבון שלך יחזור למצב רגיל באופן מיידי ולא תזדקק למספר טלפון כעת. זו אינה פטורה קבועה, ואנו עשויים לבקש בדיקה זו שוב בעתיד." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "החשבון שלך קושר בהצלחה. עכשיו אפשר לסגור את הלשונית הזו ולחזור לאפליקציה." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "החשבון שלך חזר לקדמותו." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "החשבון שלך מוגבל" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "החשבון שלך מוגבל. בדוק את המייל שלך כדי לדעת כיצד להסיר את ההגבלה." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "החשבון שלך עדיין לא נתבע. ללא אימייל וסיסמה, לא תוכל להיכנס ממכשירים אחרים וייתכן שתאבד גישה לחשבונך. תבע את החשבון שלך עכשיו כדי לאבטח אותו." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "החשבון שלך חדש מדי כדי לשלוח הודעות בקהילה זו." @@ -40800,11 +40099,6 @@ msgstr "החשבון שלך דורש אימות רב-שלבי, אך לא הוג msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "החשבון שלך כבר לא יהיה מוגן באמצעות אימות דו-שלבי בעת כניסה עם הסיסמה שלך. כמו כן, תאבד את ההרשאות המוגברות שלך בקהילות שבהן נדרש אימות דו-שלבי." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "החשבון שלך יחזור לפעולתו הרגילה באופן מיידי ושום דבר לא יוסר. נוכל לבקש בדיקה זו שוב מאוחר יותר." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "הכרטיס שלך נבדק להתאמת מחיר מקומי. זה בד msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "הכרטיס שלך מתאים. אנו מעבירים אותך עכשיו לדף התשלום." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "חברת הסלולר שלך מדווחת שהמספר הזה אינו פעיל. בדוק אותו ונסה שוב, או פנה לתמיכה אם הוא תקין." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "השינויים שלך יגיעו לכל קהילה שעוקבת אחר הערוץ הזה, וזה עשוי לקחת דקה. כל הודעה שפורסמה מאפשרת 3 עריכות מהירות, ואז 1 כל 20 דקות." @@ -40869,21 +40158,6 @@ msgstr "המכשיר שלך יבקש ממך לשמור מפתח גישה מעו msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "המכשיר שלך יבקש ממך לשמור מפתח גישה מעודכן עבור {name}. השתמש באותו טלפון או מפתח אבטחה שהרגע השתמשת בו." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "כתובת האימייל שלך עודכנה." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "לא ניתן היה לקבל הודעות לכתובת האימייל שלך. הוסף אימייל פעיל כדי שנוכל לשמור על חשבונך נגיש." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "כתובת האימייל שלך לא יכלה לקבל הודעות. עדכן אותה כדי להמשיך להשתמש ב-{productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "כתובת האימייל שלך אומתה. כעת באפשרותך להיכנס לחשבונך." @@ -41000,21 +40274,11 @@ msgstr "ההודעה שלך לא עודכנה" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "הרכישה האחרונה שלך אינה עומדת עוד בחלון הזמן להחזר כספי. צור קשר עם התמיכה בנושאי חיוב." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "האימייל החדש שלך" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "הכינוי החדש שלך, או השאר ריק כדי לאפס אותו." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "המספר שלך אינו מקושר לחשבון שלך. אנו שומרים רק סימון מוצפן, ללא מזהה משתמש, לזמן מוגבל." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "התשלום שלך בוטל. עכשיו אפשר לסגור את הכרטיסייה הזו ולחזור לאפליקציה." @@ -41054,11 +40318,6 @@ msgstr "המתנות שרכשת" msgid "your region" msgstr "האזור שלך" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "ההרשמה שלך דורשת בדיקה נוספת למניעת ספאם לפני שתוכל להמשיך." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/hi/messages.po b/fluxer_app/src/features/i18n/locales/hi/messages.po index 1d3dbd021..901aa2bbf 100644 --- a/fluxer_app/src/features/i18n/locales/hi/messages.po +++ b/fluxer_app/src/features/i18n/locales/hi/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# रिएक्शन} other {# रिएक् msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# रिएक्शन देने वाला} other {# रिएक्शन देने वाले}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# सेकंड} other {# सेकंड}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} को {timeString} बजे" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {आपका इनवाइट लिंक # सेकंड में समाप्त हो जाएगा।} other {आपका इनवाइट लिंक # सेकंड में समाप्त हो जाएगा।}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} चुने गए" @@ -2252,7 +2252,7 @@ msgstr "1 मिनट" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 घंटे" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 महीने (1 साल)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "2FA बैकअप" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2FA ज़रूरी" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 सदस्य (टाइप कर रहे हैं)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 महीने" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 घंटे" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 महीने" @@ -2575,11 +2575,6 @@ msgstr "एक मिनट" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "डेस्कटॉप का एक नया संस्करण उपलब्ध है। इंस्टॉलर डाउनलोड करें, फिर {productName} को अपडेट करने के लिए इसे चलाएं।" -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "नया वेरिफ़िकेशन कोड भेज दिया गया है।" - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "अकाउंट डेटा" msgid "Account exists to spam, scam, or abuse the platform." msgstr "यह अकाउंट स्पैम करने, स्कैम करने या प्लेटफ़ॉर्म का गलत इस्तेमाल करने के लिए है।" +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "खाता सीमित" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "अकाउंट स्थिति" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "अकाउंट बहुत नया है" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "अकाउंट वेरिफ़िकेशन ज़रूरी है" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "मांगी गई अनुमतियों के साथ किसी कम्युनिटी में बॉट जोड़ना" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "कोई टिप्पणी जोड़ें (वैकल्पिक)" @@ -3054,8 +3052,10 @@ msgstr "इस चैनल में कोई विषय जोड़ें" msgid "Add a word…" msgstr "कोई शब्द जोड़ें…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "एक काम करने वाला ईमेल जोड़ें" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "जारी रखने के लिए कोई अकाउंट जोड़ें।" #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "पहले अपने अकाउंट में ईमेल और पासवर्ड जोड़ें।" @@ -3424,11 +3424,6 @@ msgstr "जोड़ा गया: {createdDate} • आखिरी बार msgid "Additional comments (optional)" msgstr "अतिरिक्त टिप्पणियाँ (वैकल्पिक)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "अतिरिक्त वेरिफ़िकेशन ज़रूरी है" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "सभी भाषाएँ" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "पहले से रद्द करने के लिए सेट है" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "इस मैसेज को {productName} सुरक्षा टीम को भी रिपोर्ट करें" @@ -4713,11 +4708,6 @@ msgstr "कॉल शुरू करने से पहले पूछें" msgid "Ask for a passkey after your password when you sign in" msgstr "साइन इन करते समय आपके पासवर्ड के बाद पासकी भी मांगी जाए" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "इस इंस्टेंस के एडमिनिस्ट्रेटर से अपने अकाउंट की समीक्षा करने के लिए कहें। यह इंस्टेंस स्वतंत्र रूप से चलाया जाता है, और केवल इसके एडमिनिस्ट्रेटर ही आपका अकाउंट बदल सकते हैं।" - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "आपके भेजे गए मैसेज में मौजू msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "आपके भेजे गए मैसेज में यूआरएल से ट्रैकिंग पैरामीटर अपने-आप हटाएँ" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "परिपक्व सामग्री के लिए चिह्नित न किए गए चैनलों में मैसेज में अश्लील सामग्री की अपने आप जाँच करें।" @@ -5359,8 +5349,6 @@ msgstr "अभी दूर हूँ" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "वापस" @@ -6506,11 +6494,6 @@ msgstr "कैमरे और वर्चुअल कैप्चर डि msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "{voiceChannelCameraUserLimit} से ज़्यादा प्रतिभागियों के होने पर कैमरे बंद रहते हैं" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "उस ईमेल को एक्सेस नहीं कर पा रहे हैं?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "यहां फ़ाइलें अपलोड नहीं की #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "यहां फ़ाइलें अपलोड नहीं की #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "ईमेल बदलें" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "इमोजी बदलें" @@ -7201,7 +7184,7 @@ msgstr "यूज़र सीमा {oldCount} से बदलकर {newCount msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "वैनिटी यूआरएल {oldCode} से बदलकर {newCode} कर दिया गया" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "वेरिफ़िकेशन स्तर {oldLevel} से बदलकर {newLevel} कर दिया गया" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "चैनल या श्रेणी" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "चैनल अनुमति ओवरराइड" @@ -7509,8 +7492,6 @@ msgstr "अपना कनेक्शन जाँचें और फिर msgid "Check your connection, then try again." msgstr "अपना कनेक्शन जाँचें, फिर दोबारा कोशिश करें।" -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "अपने सिस्टम पिकर में एक डिस msgid "Choose a GIF" msgstr "एक GIF चुनें" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "कोई तरीका चुनें" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "नया पासवर्ड चुनें।" @@ -7680,8 +7656,8 @@ msgstr "एक क्रिया चुनें।" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "एक इमोजी चुनें" @@ -7749,11 +7725,6 @@ msgstr "चुनें कि आपका इंस्टेंस कैस msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "डोमेन का मालिकाना हक साबित करने के लिए नीचे दिए गए तरीकों में से कोई एक चुनें। आपको सिर्फ़ एक ही पूरा करना होगा।" -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "कोई एक वेरिफ़िकेशन तरीका चुनें। दोनों में से कोई भी तरीका यह जाँच पूरी कर सकता है।" - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "चुनें कि {clientLabel} आपकी कम्युनि msgid "Choose what friends see in their active now panel" msgstr "चुनें कि दोस्त अपने अभी सक्रिय पैनल में क्या देखें" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "चुनें कि सदस्यों को पोस्ट करने या कम्युनिटी के सदस्यों को DM करने से पहले क्या करना होगा।" @@ -8030,8 +8001,8 @@ msgstr "स्पष्ट बातचीत के लिए आपके म msgid "Clear" msgstr "साफ़ करें" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "हटाने का समय" @@ -8053,7 +8024,7 @@ msgstr "सभी अटैचमेंट मॉक साफ़ करें" msgid "Clear all token overrides" msgstr "सभी टोकन ओवरराइड साफ़ करें" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "अटैचमेंट मॉक साफ़ करें" @@ -8066,14 +8037,14 @@ msgstr "कमांड साफ़ करें" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "कस्टम स्टेटस हटाएँ" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "इस मैसेज से सभी रिएक्शन हटा दें?" @@ -8124,7 +8095,7 @@ msgstr "खोज इनपुट साफ़ करें" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "कोल थीम" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "कमांड" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "टिप्पणियाँ बंद हैं क्योंकि एक या अधिक चुने गए चैनलों में स्लोमोड चालू है। फ़ॉरवर्ड के तुरंत बाद स्लोमोड टिप्पणी को ब्लॉक कर देगा।" #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "{forwardChannelDisplayName} में स्लोमोड चालू होने के कारण टिप्पणियाँ बंद हैं। फ़ॉरवर्ड के तुरंत बाद स्लोमोड टिप्पणी को ब्लॉक कर देगा।" #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "स्लोमोड चालू होने पर टिप्पणियाँ उपलब्ध नहीं हैं।" @@ -8670,11 +8639,11 @@ msgstr "कम्युनिटी" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "जिन समुदायों और चैनलों में आप वेबहुक प्रबंधित नहीं कर सकते, वे छिपे हुए हैं।" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "डिस्कवरी में लिस्ट की गई कम्युनिटी के लिए सभी सदस्यों के मैसेज स्कैन करना ज़रूरी है। डिस्कवरी चालू होने पर यह सेटिंग बदली नहीं जा सकती।" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "डिस्कवरी में लिस्ट की गई कम्युनिटी के लिए कम से कम ईमेल वेरिफ़िकेशन ज़रूरी है। डिस्कवरी चालू रहने तक \"कोई नहीं\" नहीं चुना जा सकता।" @@ -8827,7 +8796,7 @@ msgstr "कम्युनिटी का नाम" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "कम्युनिटी उपनाम" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "कम्युनिटी प्रोफ़ाइल" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "कम्युनिटी प्रोफ़ाइल अपडेट की गई" @@ -8907,7 +8876,7 @@ msgstr "कम्युनिटी के न पढ़े गए बैज क #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "कम्युनिटी अपडेट की गई" @@ -8952,11 +8921,6 @@ msgstr "तुलना" msgid "Complete mature content check" msgstr "वयस्क सामग्री की जाँच पूरी करें" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "{productName} का उपयोग जारी रखने के लिए नीचे दिए गए वेरिफ़िकेशन तरीकों में से कोई एक पूरा करें।" - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "भुगतान पूरा करें" msgid "Complete the mature content check to unlock mature media." msgstr "वयस्क मीडिया अनलॉक करने के लिए वयस्क सामग्री की जाँच पूरी करें।" -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "{productName} का उपयोग जारी रखने के लिए नीचे दिए गए ज़रूरी ईमेल और फ़ोन वेरिफ़िकेशन चरण पूरे करें।" - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "{productName} का उपयोग जारी रखने के लिए ज़रूरी वेरिफ़िकेशन पूरा करें।" - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "अपना प्रोफ़ाइल बैज कॉन्फ़ि #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "कनेक्शन फिर से व्यवस्थित किए गए" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "सहमति ज़रूरी है" @@ -9349,16 +9304,6 @@ msgstr "स्कोप और अनुमतियों के साथ ऑ msgid "Contact" msgstr "संपर्क" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "सहायता से संपर्क करें" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "मदद के लिए इस इंस्टेंस के एडमिनिस्ट्रेटर से संपर्क करें।" - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "कंटेंट क्रिएटर" msgid "Content filter" msgstr "कंटेंट फ़िल्टर" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "कंटेंट फ़िल्टरिंग" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "कंटेंट हिंट" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "कंटेंट सुरक्षा गेट" @@ -9416,12 +9361,10 @@ msgstr "कॉन्टेक्स्ट मेन्यू को लेफ् #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "चैनल सूची में म्यूट किए गए च msgid "Control which chat updates are announced by assistive technology." msgstr "कंट्रोल करें कि सहायक तकनीक कौन से चैट अपडेट अनाउंस करती है।" -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "बातचीत नहीं मिली" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "टैग नहीं जोड़ा जा सका" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "इस दोस्त को ग्रुप में नहीं जोड़ा जा सका। कृपया फिर से कोशिश करें।" #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "ग्रुप में जोड़ा नहीं जा सका" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "थीम लिंक नहीं बनाया जा सका" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "इनवाइट लिंक नहीं बनाया जा सका" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "आपका ग्रेस पीरियड खत्म नहीं किया जा सका" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "इनवाइट लिंक जनरेट नहीं किया जा सका। कृपया फिर से कोशिश करें।" @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "इमेज प्रोसेस नहीं की जा सकी" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "यह संदेश प्रकाशित नहीं हो सका" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "विजनरी कम्युनिटी में फिर से शामिल नहीं हो सके" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "एंट्रेंस साउंड हटाया नहीं जा सका" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "चैनल सेटिंग सेव नहीं हो सकी" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "एंट्रेंस साउंड सेव नहीं हो सका" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "आवेदन वापस नहीं लिया जा सका" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "काउंटडाउन टाइमर" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "देश" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "एडमिनिस्ट्रेटर अकाउंट बना msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "{addableCount, plural, one {बाकी # प्राप्तकर्ता} other {बाकी # प्राप्तकर्ताओं}} के साथ ग्रुप DM बनाएँ और दूसरों को छोड़ दें?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "वेबहुक बनाएँ" @@ -10948,7 +10884,7 @@ msgstr "किसी कम्युनिटी का कस्टम इम #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "इस इंस्टेंस पर कस्टम एंट्रेंस साउंड चालू नहीं हैं।" @@ -11108,7 +11044,7 @@ msgstr "कस्टम वॉइस प्रोसेसिंग" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "कस्टम चेतावनी टेक्स्ट" @@ -11530,11 +11466,6 @@ msgstr "डिफ़ॉल्ट सर्च इंजन" msgid "Default shortcuts" msgstr "डिफ़ॉल्ट शॉर्टकट" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "डिफ़ॉल्ट टैब" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "डेलावेयर" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "यह मैसेज मिटाएँ" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "यह मैसेज मिटाएँ? इसे पूर्ववत नहीं किया जा सकता।" #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "इस संदेश को हटा दें? इसे वापस नहीं लाया जा सकता। यह संदेश हर उस समुदाय से भी हटा दिया जाएगा जो इस चैनल को फॉलो करता है।" @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "डेवलपर मोड" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "डेवलपर विकल्प" @@ -12299,7 +12230,7 @@ msgstr "सीधा इनपुट" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "डिस्प्ले मोड" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "डिस्प्ले नाम" @@ -12858,7 +12789,7 @@ msgstr "क्या आप {communityName} में शामिल होन #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "डॉक्टर, मैं भविष्य से आया हूँ। मैं आपकी बनाई टाइम मशीन से यहाँ आया हूँ। अब, मुझे 1985 में वापस जाने के लिए आपकी मदद चाहिए।" @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "प्रोफ़ाइल का स्थानीय समय बदलें" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "प्रकाशित संदेश संपादित करें?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "अपने संदेशों को ऊपर या नीचे संपादित करें" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "अपनी प्रोफ़ाइल का स्वरूप बदलें और लाइव प्रीव्यू देखें" @@ -13590,10 +13521,8 @@ msgstr "{windowEndsOn} तक रिफंड के लिए पात्र msgid "Email" msgstr "ईमेल" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "ईमेल पता आवश्यक है।" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "ईमेल बदल गया" @@ -13616,49 +13547,17 @@ msgstr "ईमेल बदल गया" msgid "Email delivery" msgstr "ईमेल डिलीवरी" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "ईमेल या फ़ोन" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "ईमेल या फ़ोन का फिर से वेरिफ़िकेशन ज़रूरी है" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "ईमेल का फिर से वेरिफ़िकेशन ज़रूरी है" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "ईमेल अनुपलब्ध है" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "ईमेल अपडेट अभी अनुपलब्ध है। बाद में फिर से कोशिश करें या सहायता से संपर्क करें।" - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "ईमेल अपडेट करना ज़रूरी है" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "हमें ईमेल करें और कोई व्यक्ति आपके अकाउंट की समीक्षा करेगा। हमें बताएं कि आप SMS से वेरिफ़ाई नहीं कर सकते और हम आगे संभाल लेंगे। जवाब ईमेल से आते हैं, इसलिए यह तुरंत नहीं होता।" - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "ईमेल वेरिफ़िकेशन नागबार" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "ईमेल वेरिफ़िकेशन ज़रूरी है" @@ -13675,6 +13574,10 @@ msgstr "ईमेल सत्यापित ओवरराइड" msgid "Email verified successfully" msgstr "ईमेल सफलतापूर्वक सत्यापित हो गया" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "आपके वर्तमान पते पर ईमेल डिलीवर नहीं हो रहे हैं। एक नया ईमेल दर्ज करें और हम वहां एक कोड भेजेंगे।" + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "एम्बेड" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "एम्बेड छिपाए गए" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "एम्बेड फिर से दिखाए गए" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "/tts स्पीच प्लेबैक चालू करें" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "यह सेटिंग बदलने के लिए अपने अकाउंट पर 2FA चालू करें" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "मान्य {theOtherPlatform} टेम्पलेट यूआरएल या कोड डालें।" #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "एक मान्य ईमेल पता डालें।" @@ -14298,33 +14199,11 @@ msgstr "एक मान्य ईमेल पता डालें।" msgid "Enter a valid message link." msgstr "एक वैध मैसेज लिंक डालें।" -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "एक मान्य मोबाइल फ़ोन नंबर डालें।" - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "एक मान्य फ़ोन नंबर डालें" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "मान्य यूज़रनेम डालें ({exampleFluxerTagFull})।" -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "एक ऐसा ईमेल डालें जिसे आप खोल सकें। हम उस पर एक कोड भेजेंगे।" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "कोड डालें" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "फ़ुलस्क्रीन पर जाएं" msgid "Enter gift code…" msgstr "उपहार कोड डालें…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "नया ईमेल डालें" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "अगर आप अपनी पासकी का इस्तेम msgid "Enter one of your backup codes." msgstr "अपने बैकअप कोड में से कोई एक डालें।" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "फ़ोन नंबर डालें" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "अपने ऑथेंटिकेटर ऐप से {digitCount} msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "अपने ऑथेंटिकेटर ऐप से {digitCount} अंकों वाला कोड डालें।" -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "{phoneNumber} पर भेजे गए {digitCount} अंकों वाला कोड डालें।" - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "{0} पर भेजे गए {MFA_CODE_DIGIT_COUNT} अंकों वाला कोड डालें।" - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "कोड डालें" @@ -14408,11 +14267,6 @@ msgstr "जारी रखने से पहले कोड डालें msgid "Enter the code from your authenticator app." msgstr "अपने ऑथेंटिकेटर ऐप से कोड डालें।" -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "{emailAddress} पर भेजा गया कोड डालें।" - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "आपके मौजूदा ईमेल पर भेजा गया कोड डालें।" @@ -14426,6 +14280,7 @@ msgstr "आपके ईमेल पते पर भेजा गया को msgid "Enter the code shown in the app to continue." msgstr "जारी रखने के लिए ऐप में दिखाया गया कोड डालें।" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "वह कोड डालें जो हमने आपके नए ईमेल पते पर भेजा है।" @@ -14434,11 +14289,6 @@ msgstr "वह कोड डालें जो हमने आपके नए msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "इसे वेरिफ़ाई करने के लिए, हमने आपके ईमेल पर जो कोड भेजा है उसे डालें। कोड कन्फ़र्म होने के बाद आपका पासवर्ड सेट हो जाएगा।" -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "ईमेल कोड डालें" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "किसी कम्युनिटी में शामिल होने के लिए इनवाइट लिंक डालें।" @@ -14452,11 +14302,6 @@ msgstr "वह नया ईमेल डालें जिसका आप उ msgid "Enter the PIN for your security key to continue." msgstr "जारी रखने के लिए अपनी सुरक्षा कुंजी का पिन डालें।" -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "एसएमएस कोड डालें" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "साइन-इन पूरा करने के लिए अपने ब्राउज़र में यह कोड डालें।" @@ -14492,11 +14337,6 @@ msgstr "अपना नाम डालें" msgid "Enter your password." msgstr "अपना पासवर्ड डालें।" -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "अपना फ़ोन नंबर डालें" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "एंट्रेंस साउंड" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "एंट्रेंस साउंड फ़ाइलें {limit} या उससे कम की होनी चाहिए।" #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "एंट्रेंस साउंड लाइब्रेरी भर गई है" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "एंट्रेंस साउंड हटाया गया" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "एंट्रेंस साउंड सेव किया गया" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "एंट्रेंस साउंड" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "एंट्रेंस साउंड उपलब्ध नहीं हैं" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "समाप्ति:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "अश्लील सामग्री फ़िल्टर सेटिंग" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "क्लिपबोर्ड पर कॉपी नहीं किया जा सका" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "वेबहुक नहीं बन पाया" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "वैनिटी यूआरएल लोड नहीं हो पाया। फिर से कोशिश करें।" #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "वेबहुक लोड नहीं हो पाए" @@ -15190,11 +15030,6 @@ msgstr "वैनिटी यूआरएल नहीं हटाया ज msgid "Failed to resend code. Try again." msgstr "कोड दोबारा नहीं भेजा जा सका। फिर से कोशिश करें।" -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "वेरिफ़िकेशन कोड दोबारा नहीं भेजा जा सका। बाद में फिर से कोशिश करें।" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "मैसेज भेजा नहीं जा सका। विक msgid "Failed to send report. Try again." msgstr "रिपोर्ट नहीं भेजी जा सकी। फिर से कोशिश करें।" -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "पुष्टि करने वाला ईमेल नहीं भेजा जा सका। बाद में फिर से कोशिश करें।" - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "शुरू नहीं हो पाया" @@ -15551,15 +15381,15 @@ msgstr "यूज़र के अनुसार फ़िल्टर कर #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "सभी को फ़िल्टर करें" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "बिना रोल वाले सदस्यों को फ़िल्टर करें" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "इस चैनल को फ़ॉलो करें" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "किसी ऐसे चैनल में इन घोषणाओं को प्राप्त करने के लिए फ़ॉलो करें जिसे आप चुनते हैं।" @@ -15773,7 +15603,7 @@ msgstr "फ़ॉलो किया गया चैनल {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "फ़ॉलो किए गए चैनल" @@ -15857,11 +15687,6 @@ msgstr "केवल ब्रिटिश लोगों के लिए..." msgid "For me" msgstr "मेरे लिए" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "इस जाँच के लिए, आप हमसे मैसेज पाने के बजाय हमें एक टेक्स्ट मैसेज भेजेंगे।" - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "आपकी सुरक्षा के लिए, आगे बढ़ने से पहले कृपया पुष्टि करें कि यह आप ही हैं।" @@ -15905,7 +15730,7 @@ msgstr "लोडिंग स्केलेटन फ़ोर्स करे #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "वयस्क मीडिया फ़ोर्स करें" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "AFK चैनल में ज़बरदस्ती ले जाएं" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "{permissionName} अनुमति न होना फ़ोर्स करें" @@ -15948,7 +15773,7 @@ msgstr "वैनिटी यूआरएल अस्वीकरण ज़ब msgid "Force show voice connection" msgstr "वॉइस कनेक्शन ज़बरदस्ती दिखाएं" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "स्लोमोड ज़बरदस्ती सक्रिय करें" @@ -16020,7 +15845,7 @@ msgstr "मीडिया फ़ॉरवर्ड करें" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "मैसेज फ़ॉरवर्ड करें" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "भू-ब्लॉक ओवरले" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "भू-प्रतिबंधित" @@ -16490,12 +16315,6 @@ msgstr "एक एनिमेटेड अवतार और बैनर, ए msgid "Get monthly" msgstr "मासिक पाएं" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "नया कोड पाएँ" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "उपहार कोड" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "उपहार की अवधि" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "उपहार इन्वेंट्री" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "उपहार इन्वेंट्री फ़्लो" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "उपहार नहीं मिला" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "उपहार रिडीम किया गया" @@ -17030,7 +16849,7 @@ msgstr "ग्रुप डायरेक्ट मैसेज" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "नमस्ते {displayName}, एक्सेस खोने से बचने के लिए अपना अकाउंट क्लेम करें।" #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "नमस्ते {displayName}, कृपया अपना ईमेल पता वेरिफ़ाई करें।" +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "नमस्ते {displayName}, हम आपके ईमेल पते पर ईमेल नहीं भेज पा रहे हैं। अपना खाता सत्यापित करने के लिए एक काम करने वाला ईमेल जोड़ें।" + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "अपनी स्क्रीन शेयरिंग छिपाए #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "उच्च" @@ -17755,11 +17579,6 @@ msgstr "मैं एक टूलटिप हूँ" msgid "I changed my mind" msgstr "मैंने अपना मन बदल लिया" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "मुझे कोई दूसरा तरीका चाहिए" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "अगर यह रिपोर्ट किसी खास मैस msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "अगर यह रिपोर्ट खास मैसेज के बारे में है, तो सबसे काम के मैसेज की रिपोर्ट करें। मैसेज रिपोर्ट से हमारी सुरक्षा टीम को सबसे साफ़ जानकारी मिलती है, और कमेंट में जानकारी जोड़ने से हमें इसकी तेज़ी से समीक्षा करने में मदद मिल सकती है। यूज़र की रिपोर्ट तभी करें, जब मैसेज की रिपोर्ट करने से बड़ी समस्या का पता न चल पाए।" -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "अगर आप SMS से वेरिफ़ाई नहीं कर सकते" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "अगर आप कोई भी वेरिफ़िकेशन तरीका इस्तेमाल नहीं कर पा रहे हैं, तो सहायता से संपर्क करें।" - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "इंटरफ़ेस का आकार" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "अमान्य ऑडियो फ़ाइल" @@ -18674,8 +18483,10 @@ msgstr "अमान्य JSON। ऊपर दिए गए यूआरएल #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "वॉइस कॉल में शामिल हों" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "वॉइस चैनल में शामिल हों" @@ -19613,16 +19424,6 @@ msgstr "Visionary के बारे में ज़्यादा जान msgid "Leave" msgstr "छोड़ें" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "{count, plural, one {# कम्युनिटी} other {# कम्युनिटी}} छोड़ें और इस जाँच को अलग रखें?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "छोड़ें और अलग रखें" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "जब खुले चैनल में नए मैसेज आएं, तो स्क्रीन रीडर उन्हें अनाउंस करें। नोटिफ़िकेशन की आवाज़ पर कोई असर नहीं होगा।" #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "कम्युनिटी को खुद मॉडरेट करने दें" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "लाइब्रेरी" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "लाइब्रेरी भरी हुई है (अधिकतम {max} साउंड)। दूसरा जोड़ने से पहले एक डिलीट करें।" @@ -19812,7 +19613,7 @@ msgstr "लाइब्रेरी: {max} में से {count}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "लाइफ़टाइम" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "लोड हो रहा है..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "लोड हो रहा है…" @@ -20261,7 +20062,7 @@ msgstr "लुइज़ियाना" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "कम" @@ -20416,7 +20217,7 @@ msgstr "कम्युनिटी सुविधाएँ प्रबंध msgid "Manage emoji & stickers" msgstr "इमोजी और स्टिकर प्रबंधित करें" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "इस चैनल में मैसेज पोस्ट कर सकने वाले इनकमिंग वेबहुक प्रबंधित करें।" @@ -20514,7 +20315,7 @@ msgstr "सभी अपठित इनबॉक्स चैनलों क msgid "Mark as read" msgstr "पढ़ा गया मार्क करें" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "रिडीम किया गया मार्क करें" @@ -20676,14 +20477,14 @@ msgstr "वयस्क कम्युनिटी" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "वयस्क सामग्री" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "वयस्क सामग्री और सामग्री चेतावनियाँ" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "अधिकतम जीवनकाल (दिन)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "परिवार के अनुकूल जगहों के लिए अधिकतम सुरक्षा" @@ -20924,7 +20725,7 @@ msgstr "प्लेबैक रोकें" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "सदस्य को अनबैन किया गया" msgid "Member updated" msgstr "सदस्य अपडेट किया गया" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "सदस्य वेरिफ़िकेशन" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "सदस्य वेरिफ़िकेशन स्तर" @@ -21048,7 +20849,7 @@ msgstr "सदस्यों को ऑफ़लाइन होने पर msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "जिन सदस्यों के पास \"{pinMessagesPermissionLabel}\" है, वे सभी के लिए मैसेज पिन कर सकते हैं।" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "रोल वाले सदस्य इन जाँचों को बायपास कर सकते हैं। सार्वजनिक जगहों के लिए, हम वेरिफ़िकेशन चालू करने की सलाह देते हैं।" @@ -21153,7 +20954,7 @@ msgstr "आपके मेंशन यहां {retentionDays} दिनो #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "सिर्फ़ मेंशन" @@ -21292,7 +21093,7 @@ msgstr "मैसेज डिस्प्ले सेटिंग्स सि msgid "Message editing" msgstr "मैसेज एडिट करना" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "मैसेज फ़ॉरवर्ड किया गया" @@ -21341,7 +21142,7 @@ msgstr "मैसेज इनपुट बटन" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "मैसेज बहुत लंबा है" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "DM सूची में मैसेज प्रीव्यू" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "संदेश प्रकाशित" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "#{sourceName} में प्रकाशित संदेश अब #{targetName} में दिखाई देंगे।" #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "इन घोषणा चैनलों में प्रकाशित संदेश यहाँ कॉपी किए जाते हैं।" @@ -21504,7 +21305,7 @@ msgstr "इन घोषणा चैनलों में प्रकाश msgid "Messages you can bookmark" msgstr "बुकमार्क करने लायक संदेश" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "इस कम्युनिटी में मैसेजिंग अस्थायी रूप से रोक दी गई है।" @@ -21733,30 +21534,30 @@ msgstr "मॉक 1 दिन में समाप्त हो जाएग msgid "Mock expires in 7 days" msgstr "मॉक 7 दिनों में समाप्त हो जाएगा" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "मॉक जियो ब्लॉक ओवरले" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "मॉक उपहार इन्वेंट्री" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "मॉक इनकमिंग कॉल" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "वयस्क सामग्री चैनल गेट की मॉक वजह" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "वयस्क सामग्री मीडिया गेट की मॉक वजह" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "मॉक यूके जियो" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "अलग-अलग साइज़ और सभी स्टेटस वाले मॉक यूज़र अवतार।" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "मॉक वैरिएंट" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "मॉक किए गए प्रोडक्ट फ़्लो" @@ -22698,14 +22494,16 @@ msgstr "नई कम्युनिटी म्यूट" msgid "New direct message" msgstr "नया डायरेक्ट मैसेज" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "नया ईमेल" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "नया ईमेल फ़ॉर्म" @@ -22816,9 +22614,7 @@ msgstr "सबसे नया पहले" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "आगे" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "नहीं" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "{attachFilesPermission} की अनुमति नहीं है" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission} की अनुमति नहीं है" @@ -23005,7 +22801,7 @@ msgstr "सेव करने के लिए कोई बदलाव नह msgid "No channels available" msgstr "कोई चैनल उपलब्ध नहीं है" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "कोई चैनल नहीं मिला" @@ -23233,11 +23029,6 @@ msgstr "कोई अनुमति नहीं मिली" msgid "No personal words yet." msgstr "अभी तक कोई निजी शब्द नहीं हैं।" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "कोई फ़ोन नंबर नहीं" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "कोई परिणाम नहीं" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "कोई परिणाम नहीं मिला" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "कोई यूज़र नहीं मिला" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "किसी वेरिफ़िकेशन की ज़रूरत नहीं है।" @@ -23452,7 +23243,7 @@ msgstr "किसी वेरिफ़िकेशन की ज़रूरत msgid "No verification methods available" msgstr "कोई वेरिफ़िकेशन तरीका उपलब्ध नहीं है" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "कोई वेबहुक नहीं" @@ -23504,7 +23295,7 @@ msgstr "रूपांतरण नहीं" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "कोई नहीं" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "कोई नहीं (सामान्य व्यवहार)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "नॉर्वेजियन" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "पर्याप्त समय से सदस्य नहीं हैं" @@ -23798,9 +23589,9 @@ msgstr "वस्तुएँ" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "बंद" @@ -23848,7 +23639,7 @@ msgstr "सबसे पुराना पहले" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "चालू" @@ -23884,11 +23675,6 @@ msgstr "एक या ज़्यादा अटैचमेंट पढ़ msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "आप जो फ़ाइलें अपलोड करने की कोशिश कर रहे हैं उनमें से एक या ज़्यादा फ़ाइलों का साइज़, प्रति फ़ाइल {maxSizeFormatted} की अधिकतम साइज़ सीमा से ज़्यादा है।" -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "एक छोटी सी जाँच" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "केवल स्पीकर" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "यह सेटिंग सिर्फ़ कम्युनिटी का मालिक बदल सकता है" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "ब्राउज़र में इमोजी खोलें" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "इमोजी पिकर खोलें" @@ -24382,12 +24168,8 @@ msgstr "मेन्यू आइकन खोलें" msgid "Open message history threshold" msgstr "मैसेज हिस्ट्री थ्रेशोल्ड खोलें" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "ओवरले खोलें" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "पॉपअप खोलें" @@ -24485,11 +24267,6 @@ msgstr "नया ऐप खोलें। आप पहले से ही msgid "Open the shortcuts list for quick actions." msgstr "क्विक ऐक्शन के लिए शॉर्टकट सूची खोलें।" -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "पुष्टि करने वाला ईमेल खोलें और अंदर दिए गए लिंक का उपयोग करें। लिंक खुलने के बाद यह विंडो अपडेट हो जाएगी।" - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "वॉइस और वीडियो सेटिंग्स खो msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "अपना ब्राउज़र खोलें, साइन इन करें, फिर अपना अकाउंट लिंक करने के लिए नीचे दिया गया कोड डालें।" -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "अपने मैसेज खोलें" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "अपना पुराना {PRODUCT_NAME} ऐप खोलें और \"नया डिवाइस लिंक करें\" चुनें, फिर नीचे दिया गया कोड दर्ज करें।" -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "अपने फ़ोन का मैसेजिंग ऐप खोलें और एक नया टेक्स्ट मैसेज बनाएँ।" - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "अपने फ़ोन के मैसेजिंग ऐप को खोलें और एक नया टेक्स्ट मैसेज शुरू करें।" - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "अन्य रिएक्शन…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "हमारा फ़ोन नंबर चेक अभी डाउन है। यह हमारी गलती है, आपके नंबर की नहीं। कुछ मिनट रुकें और उसी नंबर को फिर से आज़माएँ।" - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "फ़िशिंग, धोखाधड़ी, दुर्भावनापूर्ण लिंक या ऐसे गलत दावे जिनसे असल दुनिया में नुकसान हो सकता है।" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "फ़ोन" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "फ़ोन नंबर" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "फ़ोन नंबर ज़रूरी है" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "फ़ोन नंबर वेरिफ़ाई हो गया" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "फ़ोन को फिर से वेरिफ़ाई करना ज़रूरी है" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "फ़ोन स्टेप" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "इस अकाउंट के लिए फ़ोन वेरिफ़िकेशन उपलब्ध नहीं है। कोई दूसरा तरीका इस्तेमाल करें या सहायता से संपर्क करें।" - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "फ़ोन वेरिफ़िकेशन ज़रूरी है" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "अपने यूज़रनेम के बाद 4-अंकीय msgid "Pick the appearance this administrator account should start with." msgstr "चुनें कि यह एडमिनिस्ट्रेटर अकाउंट शुरू में कैसा दिखे।" -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "वह तरीका चुनें जिसे आप अभी पूरा कर सकते हैं।" - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "पिक्चर इन पिक्चर" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "पिन करें" @@ -25471,7 +25176,7 @@ msgstr "ग्रुप DM पिन करें" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "किसी भी मैसेज को पिन या अनपिन करें।" #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "इस मैसेज को चैनल में पिन करें ताकि सभी देख सकें।" @@ -26227,18 +25932,18 @@ msgstr "प्रोफ़ाइल रंग" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "प्रोफ़ाइल कस्टमाइज़ेशन" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "{selectedGuildName} के लिए प्रोफ़ाइल कस्टमाइज़ेशन" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "प्रोफ़ाइल कस्टमाइज़ेशन फ़ॉर्म" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "प्रोफ़ाइल प्रकार" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "प्रोफ़ाइल अपडेट की गई" @@ -26340,7 +26045,7 @@ msgstr "नया ऑडियो डिवाइस कनेक्ट हो #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "रेड कोऑर्डिनेशन" msgid "Rate" msgstr "गति" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "रेट लिमिटेड" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "रॉ एम्बेड JSON" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "क्या आप {userName} को अपने दोस्तों से हटाना चाहते हैं?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "सभी हटाएँ" @@ -27290,7 +26990,7 @@ msgstr "इस मैसेज से सभी {emojiNameWithColons} रिए #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "सभी रिएक्शन हटाएँ" @@ -27899,20 +27599,10 @@ msgstr "रिपोर्ट किए गए यूज़र का टैग msgid "Reposts: <0>{countLabel}" msgstr "रीपोस्ट: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "पहले नए कोड का अनुरोध करें।" - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "नए रीसेट लिंक का अनुरोध करें" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "पहले वेरिफ़िकेशन कोड का अनुरोध करें।" - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "अनुरोध" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "मॉडरेशन ऐक्शन के लिए 2FA ज़रूरी करें" @@ -27958,7 +27648,7 @@ msgstr "OAuth2 कोड ग्रांट ज़रूरी है" msgid "Require passkey" msgstr "पासकी ज़रूरी करें" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "मॉडरेटर के लिए बैन, किक, टाइमआउट या मैसेज हटाने से पहले दो-कारक प्रमाणीकरण ज़रूरी करें।" @@ -27972,46 +27662,6 @@ msgstr "ज़रूरी" msgid "Required 2FA for moderation actions" msgstr "मॉडरेशन ऐक्शन के लिए 2FA ज़रूरी कर दिया गया" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "ज़रूरी कार्रवाई डिफ़ॉल्ट टैब" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "ज़रूरी कार्रवाई फ़्लो" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "ज़रूरी कार्रवाई फ़ोन स्टेप" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "ज़रूरी कार्रवाई फिर से भेजने में लोड हो रहा है" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "ज़रूरी कार्रवाई फिर से भेजने का नतीजा" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "ज़रूरी कार्रवाई के लिए फिर से पुष्टि करने का टेक्स्ट" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "ज़रूरी कार्रवाई वैरिएंट" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "ज़रूरी कार्रवाइयाँ ओवरले" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "इस बॉट को आमंत्रित करते समय रीडायरेक्ट यूआरआई और ऑथराइज़ेशन कोड ज़रूरी होता है।" #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "वेरिफ़ाइड ईमेल पता और कम से कम 5 मिनट पुराना अकाउंट ज़रूरी है।" #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "वेरिफ़ाइड ईमेल पता ज़रूरी है।" -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "वेरिफ़ाइड फ़ोन नंबर ज़रूरी है।" - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "मध्यम की सभी शर्तें, साथ ही कम से कम 10 मिनट से कम्युनिटी का सदस्य होना ज़रूरी है।" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "फिर से भेजें ({resendSecondsRemaining}से)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "फिर से भेजें ({secondsRemaining}से)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "फिर से भेजने वाला बटन लोड हो रहा है" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "कोड फिर से भेजें" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "ईमेल फिर से भेजें" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "फिर से भेजने का नतीजा" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "फिर से भेजा गया" @@ -28518,21 +28152,6 @@ msgstr "दिखाएँ" msgid "Reveal spoiler" msgstr "स्पॉइलर दिखाएँ" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "{productName} का उपयोग जारी रखने के लिए अपना ईमेल फिर से वेरिफ़ाई करें या अपना फ़ोन वेरिफ़ाई करें।" - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "{productName} का उपयोग जारी रखने के लिए अपना ईमेल फिर से वेरिफ़ाई करें।" - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "{productName} का उपयोग जारी रखने के लिए अपना फ़ोन नंबर फिर से वेरिफ़ाई करें।" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "सैचुरेशन" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "स्क्रब प्रीव्यू" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "चैनल खोजें" msgid "Search communities" msgstr "कम्युनिटी खोजें" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "देश खोजें..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "देश खोजें…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "अपने निवास का देश चुनें।" #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "चुनें…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "भेजें" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "भेजें ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "एक और रिपोर्ट भेजें" msgid "Send button" msgstr "भेजें बटन" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "कोड भेजें" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "मैसेज भेजें" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "मैसेज भेजना बंद है" @@ -30151,32 +29759,11 @@ msgstr "सेव किया गया मीडिया {memeName} भेज msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "/tts के साथ टेक्स्ट-टू-स्पीच मैसेज भेजें। जिन सदस्यों ने टेक्स्ट-टू-स्पीच चालू किया है, वे उन्हें ज़ोर से सुनेंगे।" -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "कोड <0>{0} को <1>{1} पर भेजें" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "नीचे दिए गए फ़ोन नंबर पर कोड भेजें।" - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "यह कोड भेजें" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "इस पिन को अतीत में वापस भेज दें?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "इस नंबर पर भेजें" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "वॉइस मैसेज भेजें" msgid "Send:" msgstr "भेजा:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "{PRODUCT_NAME} के लिए इस फ़ोन नंबर पर SMS भेजना बहुत महंगा है, इसलिए हम चाहते हैं कि आप हमें SMS भेजें। हम जानते हैं कि यह आदर्श नहीं है। आप अपने अकाउंट से इस शर्त को हटवाने के लिए इस इंस्टेंस के एडमिनिस्ट्रेटर से भी कह सकते हैं।" - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "{PRODUCT_NAME} के लिए इस फ़ोन नंबर पर SMS भेजना बहुत महंगा है, इसलिए हम चाहते हैं कि आप हमें SMS भेजें। हम जानते हैं कि यह आदर्श नहीं है। आप अपने अकाउंट से इस शर्त को हटवाने के लिए <0>{SUPPORT_EMAIL} पर भी संपर्क कर सकते हैं।" - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "सीरियल सेंड" msgid "Serve the token file" msgstr "टोकन फ़ाइल होस्ट करें" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "सेवा में गड़बड़ी" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "\"{label}\" के लिए कस्टम शॉर्टकट सेट करें" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "कस्टम स्टेटस सेट करें" @@ -30486,18 +30060,6 @@ msgstr "वॉइस क्षेत्र को {region} पर सेट क msgid "Set the voice region to automatic" msgstr "वॉइस क्षेत्र ऑटोमैटिक पर सेट किया गया" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "इस जाँच को अलग रखें" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "इस जाँच को अलग रख दें?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "अपने सर्वनाम सेट करें" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "अपना स्टेटस सेट करें" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "रिकॉर्डिंग के दौरान कीबोर्ड शॉर्टकट रोक दिए जाते हैं।" #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "मैसेज छोटा करें और फिर से कोशिश करें।" @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "सिस्टम ट्रे या मेनू बार में एक {productName} आइकॉन दिखाएं" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "सामग्री चेतावनी दिखाएं" @@ -31672,7 +31234,7 @@ msgstr "स्लोमोड · {remaining} इंतज़ार करें" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "स्लोमोड सक्रिय है" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "स्लोमोड {durationLabel} पर सेट है। दूसरा मैसेज भेजने से पहले इंतज़ार करें।" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "स्लोमोड बाकी" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "स्लोमोड सिमुलेशन" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "स्लोमोड का बचा हुआ समय" @@ -31807,11 +31369,6 @@ msgstr "स्मूद स्क्रॉलिंग" msgid "Smoother video" msgstr "ज़्यादा स्मूद वीडियो" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "SMS वेरिफ़िकेशन अभी उपलब्ध नहीं है। बाद में फिर से कोशिश करें या सहायता से संपर्क करें।" - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "इस स्टिकर को तैयार करते समय कुछ गड़बड़ हो गई। कोई दूसरी फ़ाइल आज़माएँ या कुछ देर बाद फिर से कोशिश करें।" #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "कुछ प्रकाशित करते समय गलत हो गया। थोड़ी देर में पुनः प्रयास करें।" @@ -32009,11 +31566,9 @@ msgstr "कुछ गड़बड़ हो गई। पेज को फिर msgid "Something went wrong. Try again later." msgstr "कुछ गड़बड़ हो गई। बाद में फिर से कोशिश करें।" -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "कुछ गड़बड़ हो गई। फिर से कोशिश करें।" @@ -32352,11 +31907,6 @@ msgstr "SSO साइन-इन का समय समाप्त हो ग msgid "Staff controls" msgstr "स्टाफ़ कंट्रोल" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "आपके कैरियर से सामान्य मैसेजिंग दरें लागू हो सकती हैं।" - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "स्टार एनिमेशन" msgid "Starred channels" msgstr "स्टार किए गए चैनल" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "सब्सक्राइबर ट्रांसपोर्ट:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "सदस्यता" @@ -33051,14 +32599,12 @@ msgstr "सदस्यता के परिदृश्य" msgid "Subtext" msgstr "सबटेक्स्ट" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "सफलता" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "ज़्यादातर कम्युनिटी के लिए सुझाया गया" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "सिस्टम और स्वागत" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "{productName} स्टाफ़ की सिस्टम घोषणाएँ। आप यहाँ जवाब नहीं दे सकते।" @@ -33765,11 +33311,6 @@ msgstr "टेक्स्ट सिलेक्शन" msgid "Text size" msgstr "टेक्स्ट का आकार" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "अपने फ़ोन से हमें टेक्स्ट करें" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "थाई" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "{productName} को सुरक्षित रखने में मदद करने के लिए धन्यवाद। हम जल्द से जल्द आपकी रिपोर्ट की समीक्षा करेंगे।" -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "वह कोड काम नहीं आया। इसे जांचें और फिर से कोशिश करें।" - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "वह कोड समाप्त हो गया है। नया कोड मांगें।" - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "यह पूरा नहीं हुआ। हो सकता है कुछ कम्युनिटी पहले ही छोड़ दी गई हों, और आपका अकाउंट अभी भी लॉक है। पूरा करने के लिए फिर से \"इस जाँच को अलग रखें\" दबाएँ।" - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "यह नहीं हो पाया। कुछ भी नहीं बदला। फिर से कोशिश करें।" - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "यह कोई मान्य रंग नहीं लग रहा msgid "That doesn't look like a valid URL." msgstr "यह एक मान्य यूआरएल नहीं लग रहा है।" -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "वह ईमेल पहले से उपयोग में है।" - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "ओवरराइड ने {permissions} को अस्वीका msgid "The page you're looking for doesn't exist or has been moved." msgstr "आप जिस पेज को ढूंढ रहे हैं वह मौजूद नहीं है या उसे कहीं और ले जाया गया है।" -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "फ़ोन जाँच को अलग रख दिया गया है। एक ईमेल चरण बचा है।" - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "इनवाइट बनाने के लिए कोई चैन msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "इस कम्युनिटी में अभी असाइन करने के लिए कोई रोल नहीं है, लेकिन आप <0>{rolesSettingsPath} में नया रोल बना सकते हैं।" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "इस चैनल के लिए कोई वेबहुक कॉन्फ़िगर नहीं किया गया है। बाहरी ऐप्लिकेशन को मैसेज पोस्ट करने की अनुमति देने के लिए एक वेबहुक बनाएँ।" @@ -34273,7 +33784,7 @@ msgstr "इनवाइट लोड करने में समस्या msgid "There was an error loading the stickers. Try again." msgstr "स्टिकर लोड करने में समस्या हुई। फिर से कोशिश करें।" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "इस चैनल के लिए वेबहुक लोड करने में समस्या हुई। फिर से कोशिश करें।" @@ -34417,7 +33928,7 @@ msgstr "यह चैनल एक बार में 10 संदेश भे msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "यह चैनल एक बार में 10 संदेश भेज सकता है, और उसके बाद हर 6 मिनट में एक और भेज सकता है। कुछ मिनटों में फिर से प्रयास करें।" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "यह चैनल वेबहुक को सपोर्ट नहीं करता है।" @@ -34550,12 +34061,12 @@ msgstr "यह कनेक्शन वेरिफ़ाई नहीं क #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "इसमें संवेदनशील सामग्री है।" -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "यह बातचीत अब उपलब्ध नहीं है।" @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "इस ग्रुप में बहुत ज़्यादा लोग हैं" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "यह ग्रुप भरा हुआ है। और लोगों को जोड़ने से पहले किसी को हटाएँ।" @@ -34715,11 +34226,6 @@ msgstr "यह एक कस्टम स्टिकर है जो एक msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "यह एक आयु-प्रतिबंधित चैनल है। अपडेट केवल आयु-प्रतिबंधित चैनलों पर ही जा सकते हैं।" -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "यह स्पैम-रोधी जाँच है। आपका फ़ोन नंबर आपके अकाउंट से लिंक नहीं है।" - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "यह अक्षम है" msgid "This is how messages appear" msgstr "मैसेज ऐसे दिखते हैं" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "यह अभी आपके अकाउंट के लिए उपलब्ध नहीं है। इस इंस्टेंस के एडमिनिस्ट्रेटर से इसकी समीक्षा करने के लिए कहें।" - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "यह अभी आपके अकाउंट पर उपलब्ध नहीं है। {supportEmail} पर ईमेल करें और कोई व्यक्ति इसकी समीक्षा करेगा।" - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "यह वह चैनल नहीं है जिसे आप ढूंढ रहे हैं।" @@ -34792,11 +34288,6 @@ msgstr "यह आपकी आखिरी पासकी है और पा msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "यह आपकी आखिरी पासकी है। इसके मिट जाने के बाद आप पासकी का उपयोग अपने दूसरे कारक के रूप में नहीं कर पाएँगे।" -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "यह मोबाइल नंबर नहीं है, इसलिए इस पर हमारा टेक्स्ट नहीं भेजा जा सकता। कोई मोबाइल नंबर आज़माएँ, या अगर आपको लगता है कि यह गलत है तो सहायता से संपर्क करें।" - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "यह मैसेज पहले ही डिलीट हो चुका है।" #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "यह संदेश पहले ही प्रकाशित हो चुका है" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "यह मैसेज अब मौजूद नहीं है।" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "यह निकनेम सिर्फ़ इस कम्युनिटी में दिखेगा" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "यह नंबर हमें टेक्स्ट करके ही वेरिफ़ाई किया जाता है। कोड और वह नंबर पाने के लिए, जिस पर टेक्स्ट करना है, वापस जाएं और फ़ोन वेरिफ़िकेशन फिर से शुरू करें।" - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "इस नंबर को हमारे SMS के बजाय टेक्स्ट-इन वेरिफ़िकेशन की ज़रूरत है।" - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "इस प्रतिभागी को डीफ़ेन किय msgid "This participant was deafened by moderators" msgstr "इस प्रतिभागी को मॉडरेटर ने डीफ़ेन किया है" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "इस फ़ोन नंबर का उपयोग नहीं किया जा सकता है। कोई दूसरा मोबाइल नंबर आज़माएँ या सहायता से संपर्क करें।" - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "यह फ़ोन नंबर पहले ही इस्तेमाल किया जा चुका है। कोई दूसरा नंबर आज़माएँ या सहायता से संपर्क करें।" - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "इस यूज़र के इस कम्युनिटी मे msgid "This user is already banned from the community." msgstr "यह यूज़र पहले से ही कम्युनिटी से बैन है।" -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "यह यूज़र अब उपलब्ध नहीं है।" @@ -35065,11 +34536,6 @@ msgstr "इस यूज़र को एक प्लेटफ़ॉर्म msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "यह वेरिफ़िकेशन सेशन एक्सपायर हो गया है। {productName} पर वापस जाएं और चेकआउट फिर से शुरू करें।" -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "यह वेरिफ़िकेशन सेशन एक्सपायर हो गया है। फिर से शुरू करें।" - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "इससे आप लॉग आउट हो जाएंगे, क msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "इससे सभी बाहरी लिंक पर भरोसा किया जाएगा और हर डोमेन के लिए चेतावनी को छोड़ दिया जाएगा। आपके मौजूदा भरोसेमंद डोमेन बदल दिए जाएँगे। यह कम सुरक्षित है।" -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "आपका मैसेज मिलने के बाद यह विंडो अपने आप अपडेट हो जाएगी।" - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "टाइटल बार" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "टाइटल बार प्लेटफ़ॉर्म" @@ -35470,18 +34931,11 @@ msgstr "टोन" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "HDR इमेज को सामान्य रेंज में टोन-मैप करें, जिससे पीक ब्राइटनेस कम हो जाएगी।" -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "बहुत ज़्यादा कोशिशें की गई हैं। थोड़ी देर इंतज़ार करें, फिर से कोशिश करें।" - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "बहुत ज़्यादा कम्युनिटी" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "बहुत ज़्यादा अनुरोध। बाद में फिर से कोशिश करें।" @@ -36151,8 +35605,10 @@ msgstr "अपलोड करने के लिए कोई इमोजी #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "अनुपलब्ध" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "बिना श्रेणी" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "क्लेम न किया गया अकाउंट" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "बिना क्रम के" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "अनपिन करें" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "मैसेज अनपिन करें" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "इस मैसेज को अनपिन करें?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "सेव नहीं किए गए बदलाव" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "असमर्थित ऑडियो फ़ाइल।" @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "जब तक मैं इसे वापस चालू न करूँ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "अपुष्ट ईमेल" @@ -36958,12 +36414,7 @@ msgstr "यह मैसेज देखने के लिए {productName} msgid "Update app" msgstr "ऐप अपडेट करें" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "ईमेल अपडेट करें" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "अपना स्टेटस अपडेट करें" @@ -37306,18 +36757,13 @@ msgstr "जहाँ इमेज यूआरएल डालना है, व msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "जिन सदस्यों के पास {readMessageHistoryPermissionLabel} अनुमति नहीं है, उनके लिए मैसेज हिस्ट्री थ्रेशोल्ड की तारीख एक अलग डायलॉग में सेट करें।" -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "किसी दूसरे ईमेल पते का इस्तेमाल करें और उसे कोड से वेरिफ़ाई करें।" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "वास्तविक स्थिति का उपयोग करें" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "वास्तविक प्रीमियम प्रकार का उपयोग करें" @@ -37335,16 +36781,6 @@ msgstr "कोई और तरीका इस्तेमाल करें" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "दो-कारक प्रमाणीकरण के लिए कोड जनरेट करने के लिए एक ऑथेंटिकेटर ऐप का उपयोग करें" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "ऐसा ईमेल पता इस्तेमाल करें जिस तक आपकी पहुँच हो। हम उस पर एक कोड भेजेंगे।" - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "ऐसा ईमेल इस्तेमाल करें जो आपके मौजूदा ईमेल से अलग हो।" - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "पूरे ऐप्लिकेशन में डार्क थ msgid "Use default" msgstr "डिफ़ॉल्ट इस्तेमाल करें" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "कोई दूसरा ईमेल इस्तेमाल करें" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "ईमेल इस्तेमाल करें" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "दो-कारक प्रमाणीकरण के लिए प msgid "Use passkeys to sign in without a password" msgstr "पासवर्ड के बिना साइन इन करने के लिए पासकी का उपयोग करें" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "फ़ोन का इस्तेमाल करें" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "रीवेरिफ़िकेशन टेक्स्ट का इस्तेमाल करें" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "यूज़र चैनल बदलता है" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "यूज़र नहीं मिला" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "वेरिफ़िकेशन" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "वेरिफ़िकेशन और सदस्यता बाधाएँ" @@ -37970,15 +37387,8 @@ msgstr "वेरिफ़िकेशन कोड" msgid "Verification code sent" msgstr "वेरिफ़िकेशन कोड भेजा गया" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "वेरिफ़िकेशन कोड भेजा गया है। अपना नया ईमेल इनबॉक्स देखें।" - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "वेरिफ़िकेशन ईमेल भेजा गया है। अपना इनबॉक्स देखें।" @@ -38038,23 +37448,6 @@ msgstr "पहचान वेरिफ़ाई करने का फ़ॉ msgid "Verify it's you" msgstr "पुष्टि करें कि यह आप ही हैं" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "फ़ोन वेरिफ़ाई करें" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "फ़ोन नंबर वेरिफ़ाई करें" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "फ़ोन नंबर वेरिफ़ाई करने का फ़ॉर्म" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "ऑथेंटिकेटर ऐप जोड़ने से पहले अपना ईमेल वेरिफ़ाई करें।" #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "अपना कम्युनिटी निकनेम, अवतार, बैनर, बायो, सर्वनाम या एक्सेंट कलर बदलने से पहले अपना ईमेल वेरिफ़ाई करें।" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "अपना यूज़रनेम, डिसप्ले नेम, अवतार, बैनर, बायो, सर्वनाम, टाइमज़ोन या {premiumProductName} बैज की प्राइवेसी बदलने से पहले अपना ईमेल वेरिफ़ाई करें।" #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "इस कम्युनिटी प्रोफ़ाइल को एडिट करने से पहले अपना ईमेल वेरिफ़ाई करें। आप इसे अभी भी यहाँ देख सकते हैं।" #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "प्रोफ़ाइल एडिट करने से पहले अपना ईमेल वेरिफ़ाई करें। आप इसे अभी भी यहाँ देख सकते हैं।" @@ -38113,11 +37506,6 @@ msgstr "फ्रेंड रिक्वेस्ट भेजने से msgid "Verify your email first" msgstr "पहले अपना ईमेल वेरिफ़ाई करें" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "{productName} का उपयोग जारी रखने के लिए अपना ईमेल या फ़ोन वेरिफ़ाई करें।" - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "उपहार खरीदने के लिए अपना ईम msgid "Verify your email to change your username" msgstr "अपना यूज़रनेम बदलने के लिए अपना ईमेल वेरिफ़ाई करें" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "{productName} का उपयोग जारी रखने के लिए अपना ईमेल वेरिफ़ाई करें।" - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "इस कम्युनिटी प्रोफ़ाइल को एडिट करने के लिए अपना ईमेल वेरिफ़ाई करें" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "अपनी प्रोफ़ाइल एडिट करने के लिए अपना ईमेल वेरिफ़ाई करें" @@ -38181,13 +37564,6 @@ msgstr "वरमोंट" msgid "Version" msgstr "वर्ज़न" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "बहुत ज़्यादा" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "आवाज़ बढ़ाएँ" msgid "Wait a moment before deleting more messages." msgstr "और मैसेज डिलीट करने से पहले थोड़ा इंतज़ार करें।" -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "थोड़ा इंतज़ार करें। आपका मैसेज मिलते ही यह विंडो अपने-आप बंद हो जाएगी।" - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "मैसेज के बीच इंतज़ार करें। जिन सदस्यों के पास \"{bypassSlowmodePermissionLabel}\" अनुमति है, वे इसे बायपास कर सकते हैं।" -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "यहां इंतज़ार करें" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "पासकी का इंतज़ार हो रहा है…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "{forwardChannelDisplayName} में स्लोमोड के खत्म होने का इंतज़ार किया जा रहा है।" #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "एक या ज़्यादा चुने गए चैनलों में स्लोमोड के खत्म होने का इंतज़ार किया जा रहा है।" @@ -39115,16 +38482,6 @@ msgstr "हम इस थीम को पढ़ नहीं पाए। ह msgid "We couldn't remove that account. Try again." msgstr "हम उस अकाउंट को हटा नहीं पाए। फिर से कोशिश करें।" -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "हम इस नंबर को अपने-आप वेरिफ़ाई नहीं कर सके। सहायता से संपर्क करें, कोई व्यक्ति आपके अकाउंट की समीक्षा करेगा।" - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "हम इस देश में वेरिफ़िकेशन टेक्स्ट नहीं भेजते। किसी दूसरे देश का मोबाइल नंबर आज़माएँ, या सहायता से संपर्क करें।" - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "हमें इस अकाउंट के लिए एक मौज msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "हमने ब्राज़ील में {premiumProductName} की कीमत कम कर दी है। अब यह प्रति माह {monthlyPrice} या प्रति वर्ष {yearlyPrice} है।" -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "जारी रखने से पहले हमें एक वेरिफ़िकेशन चरण की ज़रूरत है। यह अकाउंट को सुरक्षित रखने और {productName} से स्पैम दूर रखने में मदद करता है।" - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "जारी रखने से पहले हमें दो वेरिफ़िकेशन चरणों की ज़रूरत है। हम एक बार में एक चरण दिखाएंगे।" - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "हम आपको सलाह देते हैं कि इन कोड को अभी सेव कर लें, ताकि आप अपने अकाउंट से लॉक आउट न हों।" @@ -39167,11 +38514,6 @@ msgstr "हमने {email} पर एक कोड भेजा है।" msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "ब्राउज़र साइन-इन खुलने पर हम {prefillEmail} पहले से भर देंगे।" -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "उपलब्ध होने पर हम एक SMS कोड भेजेंगे।" - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "हम आपको {PREMIUM_PRODUCT_NAME} के लाइफटाइम से भी ज़्यादा देना चाहेंगे, लेकिन इससे स्पेस-टाइम निरंतरता टूट जाएगी। इसके बजाय किसी दोस्त को उपहार भेजें?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "हम इसे जल्द से जल्द प्रोसेस करेंगे। आपका आर्काइव तैयार होने पर आपको एक ईमेल मिलेगा।" #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "हम आपका पिछला ईमेल वापस ला देंगे, पुराने सेशन से साइन आउट कर देंगे, फ़ोन नंबर हटा देंगे, MFA बंद कर देंगे, और आपके अकाउंट को नए पासवर्ड से सुरक्षित कर देंगे।" +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "हम आपका पिछला ईमेल बहाल कर देंगे, पुराने सेशन से साइन आउट कर देंगे, MFA को अक्षम कर देंगे, और एक नए पासवर्ड से आपके खाते को सुरक्षित कर देंगे।" #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "आपका पासवर्ड बदलने से पहले msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "आपके बैकअप कोड देखने से पहले हम आपके ईमेल पर एक वेरिफ़िकेशन कोड भेजेंगे।" -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "उपलब्ध होने पर हम एक SMS कोड भेजेंगे। आपका नंबर आपके खाते से लिंक नहीं है। हम सीमित समय के लिए, बिना किसी उपयोगकर्ता आईडी के, केवल एक एन्क्रिप्टेड मार्कर रखते हैं।" - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "हम आपके मौजूदा ईमेल और फिर आपके नए ईमेल को वन-टाइम कोड से वेरिफ़ाई करेंगे।" @@ -39307,7 +38645,7 @@ msgstr "वेबहुक {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "वेबहुक बनाया गया" @@ -39331,7 +38669,7 @@ msgstr "वेबहुक अपडेट किया गया" msgid "Webhook URL" msgstr "वेबहुक यूआरएल" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "वेबहुक" @@ -39486,8 +38824,8 @@ msgstr "आप जो शेयर कर रहे हैं वह अपड #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "क्या चल रहा है?" @@ -39967,21 +39305,11 @@ msgstr "आप <0>{readMessageHistoryPermissionLabel} अनुमति क msgid "You can sign back in at any time." msgstr "आप कभी भी वापस साइन इन कर सकते हैं।" -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "आप कभी भी इस इंस्टेंस के एडमिनिस्ट्रेटर से किसी व्यक्ति द्वारा समीक्षा का अनुरोध कर सकते हैं।" - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "आप अभी भी अकाउंट बना सकते हैं या साइन इन कर सकते हैं। अगर बाद में इनवाइट फिर से चालू किए गए, तो आप शामिल होने के लिए इसी लिंक का इस्तेमाल कर सकते हैं।" -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "आप अभी भी किसी भी समय मानवीय समीक्षा के लिए {supportEmail} पर ईमेल कर सकते हैं।" - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "आप लिंक, इमोजी और मार्कडाउन का इस्तेमाल कर सकते हैं।" @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "आप वहां एक्सप्रेशन नहीं जोड़ सकते" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "टाइमआउट के दौरान आप नए रिएक्शन नहीं जोड़ सकते।" @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "आप खुद को दोस्त नहीं बना सकते" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "आप अपना उपनाम यहां नहीं बदल सकते" @@ -40094,7 +39422,7 @@ msgstr "आप खुद को फ्रेंड रिक्वेस्ट msgid "You can't send messages in this channel." msgstr "आप इस चैनल में मैसेज नहीं भेज सकते।" -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "आप इस कम्युनिटी में मैसेज नहीं भेज सकते।" @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "आपके पास इस सदस्य के लिए ऐसा करने की अनुमति नहीं है।" #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "आपके पास इस वॉइस चैनल से जुड़ने की अनुमति नहीं है" @@ -40243,7 +39571,7 @@ msgstr "आपके पास इस इमोजी का नाम बदल msgid "You have been banned from this community." msgstr "आपको इस कम्युनिटी से बैन कर दिया गया है।" -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "आपने {username} को ब्लॉक किया है। मैसेज भेजने के लिए उन्हें अनब्लॉक करें।" @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "आपके कुछ बदलाव सेव नहीं हुए हैं।" #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "आपके कुछ बदलाव सेव नहीं हुए हैं। जाने से पहले सेव करें या रीसेट करें।" @@ -40270,7 +39598,7 @@ msgstr "आपके कुछ बदलाव सेव नहीं हुए msgid "You haven't authorized any applications to access your account." msgstr "आपने अपने अकाउंट का एक्सेस पाने के लिए किसी भी ऐप्लिकेशन को अनुमति नहीं दी है।" -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "आप अभी इतने समय से इस कम्युनिटी के सदस्य नहीं हैं कि मैसेज भेज सकें।" @@ -40326,11 +39654,6 @@ msgstr "अकाउंट बनाने के लिए आपको से msgid "You must verify your email before sending a report." msgstr "रिपोर्ट भेजने से पहले आपको अपना ईमेल वेरिफ़ाई करना होगा।" -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "इसे यहां से बदलने के लिए आपको अपने मौजूदा ईमेल का एक्सेस चाहिए। अगर उपलब्ध हो, तो फ़ोन वेरिफ़िकेशन का इस्तेमाल करें या सहायता से संपर्क करें।" - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "इन अनुमतियों को एडिट करने क msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "इन अनुमतियों को एडिट करने के लिए आपको \"{manageRolesPermissionLabel}\" अनुमति चाहिए।" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "इस चैनल के लिए वेबहुक देखने और एडिट करने के लिए आपको \"{manageWebhooksPermissionLabel}\" अनुमति चाहिए।" @@ -40384,18 +39707,14 @@ msgstr "कम्युनिटी बनाने से पहले आप msgid "You need to claim your account before you can start a direct message." msgstr "डायरेक्ट मैसेज शुरू करने से पहले आपको अपना अकाउंट क्लेम करना होगा।" -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "डायरेक्ट मैसेज भेजने के लिए आपको अपना अकाउंट क्लेम करना होगा।" -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "इस कम्युनिटी में मैसेज भेजने के लिए आपको अपना अकाउंट क्लेम करना होगा।" -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "इस कम्युनिटी में मैसेज भेजने के लिए आपको फ़ोन नंबर वेरिफ़ाई करना होगा।" - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "डायरेक्ट मैसेज शुरू करने स msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "{premiumProductFullName} खरीदने से पहले आपको अपना ईमेल वेरिफ़ाई करना होगा।" -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "इस कम्युनिटी में मैसेज भेजने के लिए आपको अपना ईमेल वेरिफ़ाई करना होगा।" @@ -40424,11 +39743,6 @@ msgstr "इस कम्युनिटी में मैसेज भेज msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "आपके या जिसे आप जोड़ रहे हैं उसके पास पहले से ही अधिकतम ग्रुप DM खुले हैं। किसी एक को छोड़ें और फिर से कोशिश करें।" -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "आप {ownedNames} में रहेंगे। मालिक अपनी कम्युनिटी नहीं छोड़ सकते।" - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "आपको मॉडरेटर ने डीफ़ेन किय msgid "You will be taken to {redirectHostname} after authorizing." msgstr "अनुमति देने के बाद आपको {redirectHostname} पर ले जाया जाएगा।" -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "आप उन {count, plural, one {# कम्युनिटी} other {# कम्युनिटी}} को छोड़ देंगे जिन पर यह जाँच लागू होती है, और आपका अकाउंट फिर से सामान्य रूप से काम करने लगेगा।" - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "आप {guildNames} छोड़ देंगे। आपने जो पोस्ट किया है वह नहीं हटेगा, और आप बाद में फिर से शामिल हो सकते हैं।" - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "आपको अभी भी ईमेल वाला चरण पूरा करना होगा।" - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "आप बहुत तेज़ जा रहे हैं" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "आप बहुत तेज़ी से आगे बढ़ रहे हैं। कुछ देर इंतज़ार करें और फिर से कोशिश करें।" @@ -40636,7 +39935,7 @@ msgstr "आप बहुत तेज़ी से मैसेज भेज र msgid "You're streaming!" msgstr "आप स्ट्रीम कर रहे हैं!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "आपका टाइमआउट चल रहा है। टाइमआउट खत्म होने तक मैसेजिंग, रिएक्शन और वॉइस रोक दिए गए हैं।" @@ -40764,25 +40063,25 @@ msgstr "आपका {storeName} नवीनीकरण भुगतान व msgid "Your account" msgstr "आपका अकाउंट" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "आपका खाता तुरंत सामान्य हो जाएगा और अब आपको फ़ोन नंबर की आवश्यकता नहीं होगी। यह एक स्थायी छूट नहीं है, और हम बाद में फिर से यह जाँच माँग सकते हैं।" - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "आपका अकाउंट सफलतापूर्वक लिंक हो गया है। अब आप इस टैब को बंद करके ऐप पर वापस जा सकते हैं।" -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "आपका अकाउंट वापस सामान्य हो गया है।" +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "आपका खाता सीमित है" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "आपका खाता सीमित है। इसे हटाने के तरीके के बारे में जानने के लिए अपना ईमेल देखें।" #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "आपका अकाउंट अभी तक क्लेम नहीं किया गया है। ईमेल और पासवर्ड के बिना, आप दूसरे डिवाइस से साइन इन नहीं कर पाएँगे और अपने अकाउंट का एक्सेस खो सकते हैं। इसे सुरक्षित करने के लिए अभी अपना अकाउंट क्लेम करें।" -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "इस कम्युनिटी में मैसेज भेजने के लिए आपका अकाउंट बहुत नया है।" @@ -40800,11 +40099,6 @@ msgstr "आपके अकाउंट के लिए मल्टी-फ़ msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "पासवर्ड से साइन इन करते समय आपके अकाउंट को दो-कारक प्रमाणीकरण की सुरक्षा नहीं मिलेगी। जिन कम्युनिटी में दो-कारक प्रमाणीकरण ज़रूरी है, उनमें आपकी बढ़ी हुई अनुमतियाँ भी चली जाएँगी।" -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "आपका अकाउंट तुरंत फिर से सामान्य रूप से काम करने लगेगा और कुछ भी हटाया नहीं जाएगा। हम बाद में फिर से यह जाँच करने के लिए कह सकते हैं।" - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "स्थानीय मूल्य निर्धारण के msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "आपका कार्ड योग्य है। आपको अभी भुगतान पेज पर रीडायरेक्ट किया जा रहा है।" -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "आपका कैरियर कह रहा है कि यह नंबर सेवा में नहीं है। इसे जाँचें और फिर से कोशिश करें, या अगर यह सही है तो सहायता से संपर्क करें।" - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "आपके बदलाव हर उस समुदाय तक पहुँचेंगे जो इस चैनल को फॉलो करता है, इसमें एक मिनट लग सकता है। हर प्रकाशित संदेश के लिए 3 त्वरित संपादन की अनुमति है, उसके बाद हर 20 मिनट में 1।" @@ -40869,21 +40158,6 @@ msgstr "आपका डिवाइस आपसे {name} के लिए ए msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "आपका डिवाइस आपसे {name} के लिए एक अपडेटेड पासकी सेव करने के लिए कहेगा। वही फ़ोन या सुरक्षा कुंजी इस्तेमाल करें जो आपने अभी इस्तेमाल की है।" -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "आपका ईमेल पता अपडेट कर दिया गया है।" - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "आपके ईमेल पर मैसेज नहीं पहुँच सके। कोई चालू ईमेल जोड़ें ताकि हम आपके अकाउंट तक पहुँच बनाए रख सकें।" - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "आपके ईमेल पर मैसेज नहीं पहुँच सके। {productName} इस्तेमाल करते रहने के लिए इसे अपडेट करें।" - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "आपका ईमेल वेरिफ़ाई हो गया है। अब आप अपने अकाउंट में साइन इन कर सकते हैं।" @@ -41000,21 +40274,11 @@ msgstr "आपका मैसेज अपडेट नहीं हुआ" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "आपकी हाल की खरीदारी अब रिफ़ंड विंडो के अंदर नहीं है। बिलिंग संबंधी समस्याओं के लिए सहायता से संपर्क करें।" -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "आपका नया ईमेल" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "आपका नया उपनाम, या इसे रीसेट करने के लिए खाली छोड़ दें।" -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "आपका नंबर आपके खाते से लिंक नहीं है। हम सीमित समय के लिए, बिना किसी उपयोगकर्ता आईडी के, केवल एक एन्क्रिप्टेड मार्कर रखते हैं।" - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "आपका भुगतान रद्द कर दिया गया है। अब आप इस टैब को बंद करके ऐप पर वापस जा सकते हैं।" @@ -41054,11 +40318,6 @@ msgstr "आपके खरीदे गए उपहार" msgid "your region" msgstr "आपका क्षेत्र" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "जारी रखने से पहले आपके रजिस्ट्रेशन के लिए एक अतिरिक्त एंटी-स्पैम जाँच की ज़रूरत है।" - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/hr/messages.po b/fluxer_app/src/features/i18n/locales/hr/messages.po index e60843b33..2ea6c6a3e 100644 --- a/fluxer_app/src/features/i18n/locales/hr/messages.po +++ b/fluxer_app/src/features/i18n/locales/hr/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reakcija} few {# reakcije} other {# reakcija}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# korisnik} few {# korisnika} other {# korisnika}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# sekunda} few {# sekunde} other {# sekundi}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} u {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Vaša poveznica za pozivnicu istječe za # sekundu.} few {Vaša poveznica za pozivnicu istječe za # sekunde.} other {Vaša poveznica za pozivnicu istječe za # sekundi.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} odabrano" @@ -2252,7 +2252,7 @@ msgstr "1 minuta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 sati" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 mjeseci (1 godina)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Sigurnosna kopija 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Obvezna 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 člana (tipkaju)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 mjeseca" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 sati" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 mjeseci" @@ -2575,11 +2575,6 @@ msgstr "minutu" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Dostupna je nova verzija za stolno računalo. Preuzmite instalacijski program i pokrenite ga kako biste ažurirali {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Poslan je novi kod za provjeru." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Podaci o računu" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Račun postoji radi slanja neželjene pošte, prijevara ili zlouporabe platforme." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Račun ograničen" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Stanje računa" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Račun je previše nov" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Potrebna je provjera računa" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Dodajte bota zajednici s traženim dopuštenjima" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Dodaj komentar (neobavezno)" @@ -3054,8 +3052,10 @@ msgstr "Dodajte temu ovom kanalu" msgid "Add a word…" msgstr "Dodaj riječ…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Dodajte ispravnu e-adresu" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Dodajte račun za nastavak." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Prvo dodajte e-poštu i lozinku svom računu." @@ -3424,11 +3424,6 @@ msgstr "Dodano: {createdDate} • zadnje korišteno: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Dodatni komentari (neobavezno)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Potrebna je dodatna provjera" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Svi jezici" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Već je postavljeno za otkazivanje" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Prijavi ovu poruku i sigurnosnom timu {productName}a" @@ -4713,11 +4708,6 @@ msgstr "Pitaj prije pokretanja poziva" msgid "Ask for a passkey after your password when you sign in" msgstr "Zatraži pristupni ključ nakon lozinke prilikom prijave" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Zamolite administratore ove instance da pregledaju vaš račun. Ovom instancom upravlja se neovisno i samo njezini administratori mogu mijenjati vaš račun." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Automatski uklanja parametre za praćenje (poput utm_source, fbclid, gcl msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Automatski uklanja parametre za praćenje iz URL-ova u porukama koje šaljete" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Poruke se automatski provjeravaju radi otkrivanja eksplicitnog sadržaja u kanalima koji nisu označeni za sadržaj za odrasle." @@ -5359,8 +5349,6 @@ msgstr "Trenutno odsutan" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Natrag" @@ -6506,11 +6494,6 @@ msgstr "Kamere i uređaji za virtualno snimanje odabiru se ovdje u aplikaciji {p msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Kamere su isključene iznad {voiceChannelCameraUserLimit} sudionika" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Nemate pristup toj adresi e-pošte?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Ovdje nije moguće učitati datoteke" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Ovdje nije moguće učitati datoteke" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Promijeni e-poštu" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Promijeni emoji" @@ -7201,7 +7184,7 @@ msgstr "Promijenjeno je ograničenje korisnika s {oldCount} na {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Promijenjena je prilagođena poveznica iz {oldCode} u {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Promijenjena je razina provjere s {oldLevel} na {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kanal ili kategorija" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Nadjačavanja dopuštenja kanala" @@ -7509,8 +7492,6 @@ msgstr "Provjerite vezu i pokušajte ponovno." msgid "Check your connection, then try again." msgstr "Provjerite svoju vezu, pa pokušajte ponovno." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Odaberite zaslon u sistemskom biraču" msgid "Choose a GIF" msgstr "Odaberite GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Odaberite metodu" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Odaberite novu lozinku." @@ -7680,8 +7656,8 @@ msgstr "Odaberite radnju." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Odaberite emoji" @@ -7749,11 +7725,6 @@ msgstr "Odaberite kako vaša instanca funkcionira" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Odaberite jednu od metoda u nastavku kako biste dokazali vlasništvo domene. Trebate dovršiti samo jednu." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Odaberite jednu metodu provjere. Bilo koja metoda može ukloniti ovu provjeru." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Odaberite što {clientLabel} može raditi u vašoj zajednici. Odznačite msgid "Choose what friends see in their active now panel" msgstr "Odaberite što prijatelji vide na ploči \"Aktivno sada\"" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Odaberite što članovi moraju imati prije nego što mogu objavljivati ili slati izravne poruke članovima zajednice." @@ -8030,8 +8001,8 @@ msgstr "Pročišćava mikrofon za jasan govor." msgid "Clear" msgstr "Očisti" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Očisti nakon" @@ -8053,7 +8024,7 @@ msgstr "Izbriši sve lažne privitke" msgid "Clear all token overrides" msgstr "Poništi sva premošćivanja tokena" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Očisti lažne privitke" @@ -8066,14 +8037,14 @@ msgstr "Očisti naredbu" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Obriši prilagođeni status" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Izbrisati sve reakcije s ove poruke?" @@ -8124,7 +8095,7 @@ msgstr "Očisti polje za pretraživanje" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Ugljena tema" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Naredbe" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Komentari su onemogućeni jer je na jednom ili više odabranih kanala uključen usporeni način rada. Komentar bi odmah nakon prosljeđivanja bio blokiran usporenim načinom rada." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Komentari su onemogućeni jer je u kanalu {forwardChannelDisplayName} uključen usporeni način rada. Komentar bi odmah nakon prosljeđivanja bio blokiran usporenim načinom rada." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Komentari su nedostupni dok je uključen usporeni način rada." @@ -8670,11 +8639,11 @@ msgstr "Zajednice" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Zajednice i kanali kojima ne možete upravljati webhookovima skriveni su." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Zajednice navedene u Otkrivanju moraju skenirati poruke svih članova. Ova se postavka ne može promijeniti dok je Otkrivanje omogućeno." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Zajednice navedene u Otkrivanju zahtijevaju barem potvrđenu e-poštu. Opcija \"Ništa\" ne može se odabrati dok je Otkrivanje omogućeno." @@ -8827,7 +8796,7 @@ msgstr "Naziv zajednice" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Nadimak u zajednici" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Profil zajednice" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Profil zajednice ažuriran" @@ -8907,7 +8876,7 @@ msgstr "Razina znački nepročitanih poruka zajednice" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Zajednica ažurirana" @@ -8952,11 +8921,6 @@ msgstr "Usporedba" msgid "Complete mature content check" msgstr "Dovršite provjeru sadržaja za odrasle" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Dovršite jedan od načina provjere u nastavku kako biste nastavili koristiti {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Dovrši plaćanje" msgid "Complete the mature content check to unlock mature media." msgstr "Dovršite provjeru sadržaja za odrasle kako biste otključali medije za odrasle." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Dovršite potrebne korake za potvrdu e-pošte i telefona u nastavku kako biste nastavili koristiti {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Dovršite potrebnu provjeru da biste nastavili koristiti {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Konfigurirajte svoju značku profila" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Veze su preuređene" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Potreban pristanak" @@ -9349,16 +9304,6 @@ msgstr "Sastavite URL za autorizaciju s opsezima i dopuštenjima." msgid "Contact" msgstr "Kontakt" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Kontaktirajte podršku" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Za pomoć se obratite administratorima ove instance." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Kreator sadržaja" msgid "Content filter" msgstr "Filtar sadržaja" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Filtriranje sadržaja" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Vrsta sadržaja za kodiranje" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Sigurnosne provjere sadržaja" @@ -9416,12 +9361,10 @@ msgstr "Kontekstni izbornici mogu se otvoriti lijevim klikom (na gumbe) ili desn #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Kontrolirajte ponašanje indikatora nepročitanih poruka za utišane kan msgid "Control which chat updates are announced by assistive technology." msgstr "Kontrolirajte koje promjene u razgovoru najavljuje pomoćna tehnologija." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Razgovor nije pronađen" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Nije moguće dodati oznaku" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Nije moguće dodati ovog prijatelja u grupu. Pokušajte ponovno." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Nije moguće dodati u grupu" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Nije moguće stvoriti poveznicu teme" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Nije moguće stvoriti poveznicu za pozivnicu" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Nije moguće završiti poček" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Nije moguće generirati poveznicu za pozivnicu. Pokušajte ponovno." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Nije moguće obraditi sliku" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Nije moguće objaviti ovu poruku" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Nije se moguće ponovno pridružiti zajednici Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Nije moguće ukloniti zvuk ulaska" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Nije moguće spremiti postavke kanala" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Nije moguće spremiti zvuk ulaska" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Nije moguće povući prijavu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Odbrojavanje" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Država" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Stvori administratorski račun" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Stvoriti grupnu izravnu poruku s {addableCount, plural, one {# preostalim primateljem} few {# preostala primatelja} other {# preostalih primatelja}} i preskočiti ostale?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Stvori webhook" @@ -10948,7 +10884,7 @@ msgstr "Prilagođeni emoji {emojiName} iz zajednice" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Prilagođeni zvukovi ulaska nisu omogućeni na ovoj instanci." @@ -11108,7 +11044,7 @@ msgstr "Prilagođena obrada glasa" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Prilagođeni tekst upozorenja" @@ -11530,11 +11466,6 @@ msgstr "Zadana tražilica" msgid "Default shortcuts" msgstr "Zadani prečaci" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Zadana kartica" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Izbriši ovu poruku" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Izbrisati ovu poruku? Ne može se poništiti." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Izbrisati ovu poruku? Ne može se poništiti. Ova poruka će također biti uklonjena iz svake zajednice koja prati ovaj kanal." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Način rada za razvojne programere" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Opcija za razvojne programere" @@ -12299,7 +12230,7 @@ msgstr "Izravan unos" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Način prikaza" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Ime za prikaz" @@ -12858,7 +12789,7 @@ msgstr "Želiš li se pridružiti zajednici {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doktore, ja sam iz budućnosti. Došao sam ovamo vremenskim strojem koji ste vi izumili. Sada mi treba vaša pomoć da se vratim u 1985. godinu." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Uredi lokalno vrijeme profila" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Uredi objavljenu poruku?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Uredi svoje poruke iznad ili ispod" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Uredite izgled profila i pogledajte pregled uživo" @@ -13590,10 +13521,8 @@ msgstr "Ova kupnja ispunjava uvjete za povrat novca do {windowEndsOn}. Ovo će t msgid "Email" msgstr "E-pošta" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Potrebna je adresa e-pošte." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-pošta promijenjena" @@ -13616,49 +13547,17 @@ msgstr "E-pošta promijenjena" msgid "Email delivery" msgstr "Isporuka e-pošte" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-pošta ili telefon" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Potrebna ponovna provjera e-pošte ili telefona" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Potrebna je ponovna provjera e-pošte" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-pošta nedostupna" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Ažuriranje e-pošte trenutačno nije dostupno. Pokušajte ponovno kasnije ili se obratite podršci." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Ažuriranje e-pošte je obavezno" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Pošaljite nam e-poruku i osoba će pregledati vaš račun. Navedite da ne možete potvrditi putem SMS-a i mi ćemo se pobrinuti za ostalo. Odgovori stižu e-poštom, tako da ovo nije trenutno." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Traka za provjeru e-pošte" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Potrebna je provjera e-pošte" @@ -13675,6 +13574,10 @@ msgstr "Nadjačavanje potvrde e-pošte" msgid "Email verified successfully" msgstr "E-pošta je uspješno potvrđena" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "E-poruke na vašu trenutnu adresu ne dostavljaju se. Unesite novu e-adresu i tamo ćemo poslati kod." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Ugrađeni sadržaj" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Ugrađeni sadržaj je sakriven" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Ugrađeni sadržaj je prikazan" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Omogući reprodukciju govora /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Omogućite 2FA na svom računu da biste promijenili ovu postavku" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Unesite valjani URL ili kod predloška za {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Unesite valjanu adresu e-pošte." @@ -14298,33 +14199,11 @@ msgstr "Unesite valjanu adresu e-pošte." msgid "Enter a valid message link." msgstr "Unesite valjanu poveznicu poruke." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Unesite valjani broj mobilnog telefona." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Unesite valjani telefonski broj" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Unesite valjano korisničko ime ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Unesite e-adresu koju možete otvoriti. Tamo ćemo poslati kôd." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Unesite kod" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Prikaz preko cijelog zaslona" msgid "Enter gift code…" msgstr "Unesite kod poklona…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Unesite novu e-adresu" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Unesite jedan od svojih rezervnih kodova ako ne možete koristiti svoj p msgid "Enter one of your backup codes." msgstr "Unesite jedan od svojih rezervnih kodova." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Unesite broj telefona" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Unesite {digitCount}-znamenkasti kod iz aplikacije za provjeru autentič msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Unesite {digitCount}-znamenkasti kod iz svoje aplikacije za provjeru autentičnosti." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Unesite {digitCount}-znamenkasti kod poslan na {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Unesite {MFA_CODE_DIGIT_COUNT}-znamenkasti kod poslan na {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Unesite kod" @@ -14408,11 +14267,6 @@ msgstr "Unesite kod prije nastavka." msgid "Enter the code from your authenticator app." msgstr "Unesite kôd iz aplikacije za provjeru autentičnosti." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Unesite kod poslan na {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Unesite kod poslan na vašu trenutačnu e-poštu." @@ -14426,6 +14280,7 @@ msgstr "Unesite kod poslan na vašu e-adresu." msgid "Enter the code shown in the app to continue." msgstr "Unesite kôd prikazan u aplikaciji za nastavak." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Unesite kod koji smo poslali na vašu novu adresu e-pošte." @@ -14434,11 +14289,6 @@ msgstr "Unesite kod koji smo poslali na vašu novu adresu e-pošte." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Unesite kod koji smo vam poslali e-poštom da biste je potvrdili. Vaša će lozinka biti postavljena nakon što se kod potvrdi." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Unesite kôd iz e-pošte" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Unesite poveznicu za pozivnicu kako biste se pridružili zajednici." @@ -14452,11 +14302,6 @@ msgstr "Unesite novu e-adresu koju želite koristiti. Tamo ćemo vam poslati kô msgid "Enter the PIN for your security key to continue." msgstr "Unesite PIN za svoj sigurnosni ključ kako biste nastavili." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Unesite SMS kod" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Unesite ovaj kôd u preglednik kako biste dovršili prijavu." @@ -14492,11 +14337,6 @@ msgstr "Unesite svoje ime" msgid "Enter your password." msgstr "Unesite svoju lozinku." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Unesite svoj telefonski broj" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Zvuk ulaska" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Datoteke zvuka ulaska ne smiju biti veće od {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Biblioteka zvukova ulaska je puna" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Zvuk ulaska uklonjen" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Zvuk ulaska spremljen" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Zvukovi ulaska" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Zvukovi ulaska nisu dostupni" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Istječe:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Postavka filtra eksplicitnog sadržaja" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Kopiranje u međuspremnik nije uspjelo" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Stvaranje webhooka nije uspjelo" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Učitavanje prilagođenog URL-a nije uspjelo. Pokušajte ponovno." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Učitavanje webhookova nije uspjelo" @@ -15190,11 +15030,6 @@ msgstr "Uklanjanje prilagođenog URL-a nije uspjelo. Pokušajte ponovno." msgid "Failed to resend code. Try again." msgstr "Ponovno slanje koda nije uspjelo. Pokušajte ponovno." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Ponovno slanje koda za provjeru nije uspjelo. Pokušajte ponovno kasnije." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Slanje poruke nije uspjelo. Dodirnite i držite za opcije." msgid "Failed to send report. Try again." msgstr "Slanje prijave nije uspjelo. Pokušajte ponovno." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Slanje e-pošte za potvrdu nije uspjelo. Pokušajte ponovno kasnije." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Pokretanje nije uspjelo" @@ -15551,15 +15381,15 @@ msgstr "Filtriraj po korisniku" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtriraj sve članove" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtriraj članove bez uloga" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Prati ovaj kanal" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Pratite da biste primali ove obavijesti u kanalu po vašem izboru." @@ -15773,7 +15603,7 @@ msgstr "Slijedite kanal {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Slijedite kanale" @@ -15857,11 +15687,6 @@ msgstr "Samo za britanske oči..." msgid "For me" msgstr "Za mene" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Za ovu provjeru vi nama šaljete tekstualnu poruku umjesto da je primite od nas." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Radi vaše sigurnosti, potvrdite svoj identitet za nastavak." @@ -15905,7 +15730,7 @@ msgstr "Prisilno prikaži kostur učitavanja" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Prisilno prikaži medije za odrasle" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Prisilno premjesti u AFK kanal" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Prisilno bez dopuštenja {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Prisilno prikaži odricanje odgovornosti za prilagođeni URL" msgid "Force show voice connection" msgstr "Uvijek prikaži status glasovne veze" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Prisilno aktiviraj usporeni način rada" @@ -16020,7 +15845,7 @@ msgstr "Proslijedi medij" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Proslijedi poruku" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Prekrivanje geo-blokade" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Geografski ograničeno" @@ -16490,12 +16315,6 @@ msgstr "Nabavite animirani avatar i banner, značku pretplatnika, četveroznamen msgid "Get monthly" msgstr "Nabavi mjesečno" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Zatraži novi kôd" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Kodovi poklona" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Trajanje poklona" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventar poklona" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Tijek inventara poklona" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Poklon nije pronađen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Poklon iskorišten" @@ -17030,7 +16849,7 @@ msgstr "Grupna izravna poruka" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hej {displayName}, preuzmite svoj račun kako ne biste izgubili pristup." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hej {displayName}, molimo potvrdite svoju adresu e-pošte." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hej {displayName}, ne možemo isporučiti e-poštu na tvoju adresu. Dodaj ispravnu e-poštu za provjeru računa." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Sakriti vlastito dijeljenje zaslona?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Visoka" @@ -17755,11 +17579,6 @@ msgstr "Ja sam opis alata" msgid "I changed my mind" msgstr "Predomislio/la sam se" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Trebam drugi način" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Ako se ova prijava odnosi na određenu poruku, umjesto toga prijavite tu msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Ako se ova prijava odnosi na određene poruke, prijavite najrelevantniju poruku. Prijave poruka našem sigurnosnom timu daju najjasniji kontekst, a dodavanje detalja u komentarima može nam pomoći da ih brže pregledamo. Nastavite s prijavom korisnika u cjelini samo ako prijava poruke ne bi obuhvatila širi problem." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Ako ne možete potvrditi putem SMS-a" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Ako ne možete koristiti nijednu metodu provjere, obratite se podršci za pomoć." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Veličina sučelja" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Nevažeća audio datoteka" @@ -18674,8 +18483,10 @@ msgstr "Nevažeći JSON. Zalijepite cijeli odgovor s gornjeg URL-a." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Pridruži se glasovnom pozivu" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Pridruži se glasovnom kanalu" @@ -19613,16 +19424,6 @@ msgstr "Saznajte više o Visionary" msgid "Leave" msgstr "Napusti" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Napustiti {count, plural, one {# zajednicu} few {# zajednice} other {# zajednica}} i ostaviti ovu provjeru po strani?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Napusti i odloži provjeru" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Neka čitači zaslona objavljuju nove poruke čim stignu u otvoreni kanal. Zvukovi obavijesti ostaju nepromijenjeni." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Neka se zajednica sama moderira" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Biblioteka" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Biblioteka je puna (najviše {max} zvukova). Izbrišite jedan prije dodavanja drugog." @@ -19812,7 +19613,7 @@ msgstr "Biblioteka: {count} od {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Doživotno" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Učitavanje..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Učitavanje…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Niska" @@ -20416,7 +20217,7 @@ msgstr "Upravljaj značajkama zajednice" msgid "Manage emoji & stickers" msgstr "Upravljanje emojijima i naljepnicama" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Upravljajte dolaznim webhookovima koji mogu objavljivati poruke u ovom kanalu." @@ -20514,7 +20315,7 @@ msgstr "Odmah označi sve nepročitane kanale pristigle pošte kao pročitane, b msgid "Mark as read" msgstr "Označi kao pročitano" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Označi kao iskorišteno" @@ -20676,14 +20477,14 @@ msgstr "Zajednica za odrasle" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Sadržaj za odrasle" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Sadržaj za odrasle i upozorenja o sadržaju" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maksimalni životni vijek (dani)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Maksimalna zaštita za prostore prikladne za obitelj" @@ -20924,7 +20725,7 @@ msgstr "Zaustavi reprodukciju" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Članu ukinuta zabrana" msgid "Member updated" msgstr "Član ažuriran" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Provjera članova" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Razina provjere članova" @@ -21048,7 +20849,7 @@ msgstr "Članovi se uklanjaju kada su izvan mreže, osim ako im nije dodijeljena msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Članovi s dopuštenjem \"{pinMessagesPermissionLabel}\" mogu prikvačiti poruke za sve." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Članovi s ulogama mogu zaobići ove provjere. Za javne prostore preporučujemo omogućavanje provjere." @@ -21153,7 +20954,7 @@ msgstr "Poruke u kojima vas netko spomene prikazuju se ovdje {retentionDays} dan #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Samo spominjanja" @@ -21292,7 +21093,7 @@ msgstr "Postavke prikaza poruka dostupne su samo na računalu." msgid "Message editing" msgstr "Uređivanje poruka" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Poruka proslijeđena" @@ -21341,7 +21142,7 @@ msgstr "Gumbi za unos poruke" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Poruka je predugačka" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Pretpregledi poruka na popisu izravnih poruka" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Poruka objavljena" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Poruke objavljene u #{sourceName} sada će se prikazivati u #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Poruke objavljene u ovim kanalima za objave kopiraju se ovdje." @@ -21504,7 +21305,7 @@ msgstr "Poruke objavljene u ovim kanalima za objave kopiraju se u vaše kanale." msgid "Messages you can bookmark" msgstr "Poruke koje možeš označiti" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Slanje poruka privremeno je pauzirano u ovoj zajednici." @@ -21733,30 +21534,30 @@ msgstr "Simuliraj istek za 1 dan" msgid "Mock expires in 7 days" msgstr "Simuliraj istek za 7 dana" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Simuliraj prekrivač geoblokade" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Lažni inventar poklona" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simuliraj dolazni poziv" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Razlog za lažno ograničenje kanala za sadržaj za odrasle" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Razlog za lažno ograničenje medija za sadržaj za odrasle" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Lažna lokacija u UK" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Lažni korisnički avatari u raznim veličinama i svim statusnim permutacijama." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Lažna varijanta" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Lažni tijekovi proizvoda" @@ -22698,14 +22494,16 @@ msgstr "Nova zajednica utišana" msgid "New direct message" msgstr "Nova izravna poruka" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Nova e-pošta" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Obrazac za novu e-poštu" @@ -22816,9 +22614,7 @@ msgstr "Prvo najnovije" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Dalje" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Ne" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Nema dopuštenja {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Nema dopuštenja {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Nema promjena za spremanje" msgid "No channels available" msgstr "Nema dostupnih kanala" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Nema pronađenih kanala" @@ -23233,11 +23029,6 @@ msgstr "Nema pronađenih dopuštenja" msgid "No personal words yet." msgstr "Još nema osobnih riječi." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Nema telefonskog broja" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Nema rezultata" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Nema rezultata" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Nema pronađenih korisnika" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Provjera nije potrebna." @@ -23452,7 +23243,7 @@ msgstr "Provjera nije potrebna." msgid "No verification methods available" msgstr "Nema dostupnih metoda provjere" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Nema webhookova" @@ -23504,7 +23295,7 @@ msgstr "Bez pretvorbe" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Ništa" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Ništa (normalno ponašanje)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norveški" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Niste član dovoljno dugo" @@ -23798,9 +23589,9 @@ msgstr "Predmeti" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Isključeno" @@ -23848,7 +23639,7 @@ msgstr "Prvo najstarije" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Uključeno" @@ -23884,11 +23675,6 @@ msgstr "Jedan ili više privitaka nije moguće pročitati ili prenijeti. Datotek msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Jedna ili više datoteka koje pokušavate prenijeti premašuju maksimalnu veličinu od {maxSizeFormatted} po datoteci." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Brza provjera" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Samo zvučnici" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Samo vlasnik zajednice može promijeniti ovu postavku" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Otvori emoji u pregledniku" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Otvori birač emojija" @@ -24382,12 +24168,8 @@ msgstr "Otvori izbornik" msgid "Open message history threshold" msgstr "Otvori prag povijesti poruka" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Otvori preklapanje" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Otvori skočni izbornik" @@ -24485,11 +24267,6 @@ msgstr "Otvorite novu aplikaciju. Već ste prijavljeni." msgid "Open the shortcuts list for quick actions." msgstr "Otvorite popis prečaca za brze radnje." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Otvorite e-poštu za potvrdu i upotrijebite poveznicu unutar nje. Ovaj će se prozor ažurirati nakon otvaranja poveznice." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Otvori postavke zvuka i videa" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Otvorite preglednik, prijavite se, a zatim unesite kôd u nastavku za povezivanje računa." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Otvorite poruke" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Otvorite svoju staru aplikaciju {PRODUCT_NAME} i odaberite \"Poveži novi uređaj\", a zatim unesite kod ispod." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Otvorite aplikaciju za poruke na svom telefonu i stvorite novu tekstualnu poruku." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Otvorite aplikaciju za poruke na telefonu i započnite novu tekstualnu poruku." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Druga reakcija…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Naša provjera telefonskih brojeva trenutačno ne radi. Do nas je, a ne do vašeg broja. Pričekajte nekoliko minuta i pokušajte ponovno s istim brojem." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, prijevare, zlonamjerne poveznice ili lažne tvrdnje koje bi mogle uzrokovati stvarnu štetu." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefon" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Broj telefona" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Broj telefona je obavezan" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Broj telefona potvrđen" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Potrebna je ponovna provjera telefona" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Korak telefona" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Telefonska provjera nije dostupna za ovaj račun. Upotrijebite drugu metodu ili se obratite podršci." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Potrebna je provjera telefona" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Odaberi 4-znamenkasti broj nakon svog korisničkog imena" msgid "Pick the appearance this administrator account should start with." msgstr "Odaberite izgled s kojim bi se ovaj administratorski račun trebao pokrenuti." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Odaberite metodu koju sada možete dovršiti." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Slika u slici" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Prikvači" @@ -25471,7 +25176,7 @@ msgstr "Prikvači grupnu izravnu poruku" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Prikvači ili otkvači bilo koju poruku." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Prikvačite ovu poruku na kanal kako bi je svi vidjeli." @@ -26227,18 +25932,18 @@ msgstr "Boja profila" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Prilagodba profila" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Prilagodba profila za {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Obrazac za prilagodbu profila" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Vrsta profila" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profil ažuriran" @@ -26340,7 +26045,7 @@ msgstr "Upit pri povezivanju novih audio uređaja" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Koordinacija napada" msgid "Rate" msgstr "Brzina" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Previše zahtjeva" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Sirovi JSON ugrađenog sadržaja" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Ukloniti {userName} iz prijatelja?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Ukloni sve" @@ -27290,7 +26990,7 @@ msgstr "Ukloniti sve reakcije {emojiNameWithColons} s ove poruke?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Ukloni sve reakcije" @@ -27899,20 +27599,10 @@ msgstr "Oznaka prijavljenog korisnika (neobavezno)" msgid "Reposts: <0>{countLabel}" msgstr "Ponovne objave: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Prvo zatražite novi kôd." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Zatražite novu poveznicu za poništavanje lozinke" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Prvo zatražite kod za provjeru." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Zahtjevi" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Zahtijevaj 2FA za radnje moderiranja" @@ -27958,7 +27648,7 @@ msgstr "Zahtijevaj OAuth2 dodjelu koda" msgid "Require passkey" msgstr "Zahtijevaj pristupni ključ" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Zahtijevajte dvostruku provjeru autentičnosti za moderatore prije nego što mogu zabraniti pristup, izbaciti člana, postaviti vremensko ograničenje ili ukloniti poruke." @@ -27972,46 +27662,6 @@ msgstr "Obavezno" msgid "Required 2FA for moderation actions" msgstr "Zahtijevana je 2FA za radnje moderiranja" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Zadana kartica potrebne radnje" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Tijek potrebne radnje" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Korak telefona potrebne radnje" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Ponovno slanje potrebne radnje u tijeku" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Ishod ponovnog slanja potrebne radnje" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Tekst za ponovnu provjeru potrebne radnje" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Varijanta potrebne radnje" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Prekrivanje potrebnih radnji" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Zahtijeva URI za preusmjeravanje i autorizacijski kod prilikom pozivanja ovog bota." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Zahtijeva potvrđenu adresu e-pošte i račun star najmanje 5 minuta." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Zahtijeva potvrđenu adresu e-pošte." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Zahtijeva potvrđeni broj telefona." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Zahtijeva sve što i srednja razina te članstvo u zajednici od najmanje 10 minuta." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Ponovno pošalji ({resendSecondsRemaining}s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Ponovno pošalji ({secondsRemaining}s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Učitavanje gumba za ponovno slanje" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Ponovno pošalji kod" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Ponovno pošalji e-poštu" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Ishod ponovnog slanja" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Ponovno poslano" @@ -28518,21 +28152,6 @@ msgstr "Otkrij" msgid "Reveal spoiler" msgstr "Otkrij spojler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Ponovno potvrdite svoju e-poštu ili potvrdite svoj telefon da biste nastavili koristiti {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Ponovno potvrdite svoju e-poštu kako biste nastavili koristiti {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Ponovno potvrdite svoj telefonski broj kako biste nastavili koristiti {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Zasićenost" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Pregled pri pomicanju" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Pretražite kanale" msgid "Search communities" msgstr "Pretražite zajednice" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Pretražite države..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Pretražite države…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Odaberite državu prebivališta." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Odaberi…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Pošalji" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Pošalji ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Pošalji još jednu prijavu" msgid "Send button" msgstr "Gumb za slanje" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Pošalji kod" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Slanje poruka" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Slanje poruka onemogućeno" @@ -30151,32 +29759,11 @@ msgstr "Pošalji spremljeni medij {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Šaljite poruke pretvaranjem teksta u govor pomoću /tts. Članovi koji su uključili pretvaranje teksta u govor čuju ih pročitane naglas." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Pošaljite kod <0>{0} na <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Pošaljite kod na telefonski broj u nastavku." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Pošalji ovaj kod" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Vratiti ovu prikvačenu poruku u prošlost?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Pošalji na" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Pošalji glasovnu poruku" msgid "Send:" msgstr "Slanje:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Slanje SMS-a na ovaj broj telefona preskupo je za {PRODUCT_NAME}, stoga nam ga morate poslati vi. Znamo da ovo nije idealno. Također možete zamoliti administratore ove instance da uklone ovaj zahtjev s vašeg računa." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Slanje SMS-a na ovaj broj telefona preskupo je za {PRODUCT_NAME}, stoga nam ga morate poslati vi. Znamo da ovo nije idealno. Također možete kontaktirati <0>{SUPPORT_EMAIL} kako bismo uklonili ovaj zahtjev s vašeg računa." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Serijsko slanje" msgid "Serve the token file" msgstr "Posluži datoteku tokena" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Pogreška usluge" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Postavi prilagođeni prečac za „{label}”" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Postavi prilagođeni status" @@ -30486,18 +30060,6 @@ msgstr "Postavljena je glasovna regija na {region}" msgid "Set the voice region to automatic" msgstr "Postavljena je glasovna regija na automatsku" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Odloži ovu provjeru" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Odložiti ovu provjeru?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Postavite svoje zamjenice" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Postavi status" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Tipkovnički prečaci pauziraju se tijekom snimanja." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Skratite poruku i pokušajte ponovno." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Prikaži ikonu {productName} u paleti sustava ili traci izbornika" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Prikaži upozorenje o sadržaju" @@ -31672,7 +31234,7 @@ msgstr "Usporeni način rada · čekajte {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Usporeni način rada aktivan" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Usporeni način rada je postavljen na {durationLabel}. Pričekajte prije nego što pošaljete drugu poruku." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Preostalo do kraja usporenog načina rada" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulacija usporenog načina rada" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Preostalo vrijeme usporenog načina rada" @@ -31807,11 +31369,6 @@ msgstr "Glatko pomicanje" msgid "Smoother video" msgstr "Glađi videozapis" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "SMS provjera trenutačno nije dostupna. Pokušajte ponovno kasnije ili se obratite podršci." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Nešto je pošlo po zlu tijekom pripreme ove naljepnice. Pokušajte s drugom datotekom ili pokušajte ponovno za nekoliko trenutaka." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Nešto je pošlo po zlu prilikom objavljivanja. Pokušajte ponovno za trenutak." @@ -32009,11 +31566,9 @@ msgstr "Nešto je pošlo po zlu. Ponovno učitajte stranicu ili se ponovno prija msgid "Something went wrong. Try again later." msgstr "Nešto je pošlo po zlu. Pokušajte ponovno kasnije." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Nešto je pošlo po zlu. Pokušajte ponovno." @@ -32352,11 +31907,6 @@ msgstr "Isteklo je vrijeme za prijavu putem SSO-a. Pokušajte ponovno." msgid "Staff controls" msgstr "Kontrole za osoblje" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Mogu se primjenjivati standardne naknade za poruke vašeg operatera." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Označi animaciju zvjezdicom" msgid "Starred channels" msgstr "Označeni kanali" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Prijenos pretplatnika:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Pretplata" @@ -33051,14 +32599,12 @@ msgstr "Scenariji pretplate" msgid "Subtext" msgstr "Sitni tekst" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Uspjeh" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Preporučeno za većinu zajednica" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Sustav i dobrodošlica" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Sustavne obavijesti osoblja {productName}a. Ovdje ne možete odgovoriti." @@ -33765,11 +33311,6 @@ msgstr "Odabir teksta" msgid "Text size" msgstr "Veličina teksta" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Pošaljite nam poruku s telefona" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Tajlandski" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Hvala vam što nam pomažete održati {productName} sigurnim. Pregledat ćemo vašu prijavu što je prije moguće." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Taj kôd ne radi. Provjerite ga i pokušajte ponovno." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Taj je kôd istekao. Zatražite novi kôd." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "To nije dovršeno. Neke su zajednice možda već napuštene, a vaš je račun i dalje zaključan. Ponovno pritisnite \"Odloži ovu provjeru\" da biste dovršili." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Nije uspjelo. Ništa se nije promijenilo. Pokušajte ponovno." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Ovo ne izgleda kao valjana boja. Pokušajte s heksadecimalnim zapisom, r msgid "That doesn't look like a valid URL." msgstr "Čini se da ovo nije valjan URL." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Ta se adresa e-pošte već koristi." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Nadjačavanje je odbilo {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Stranica koju tražite ne postoji ili je premještena." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Telefonska provjera je odgođena. Ostao je još jedan korak s e-poštom." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Nema dostupnih kanala za stvaranje pozivnice." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Trenutačno nema uloga za dodjeljivanje u ovoj zajednici, ali možete stvoriti novu ulogu u <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Nema konfiguriranih webhookova za ovaj kanal. Stvorite webhook kako biste vanjskim aplikacijama omogućili objavljivanje poruka." @@ -34273,7 +33784,7 @@ msgstr "Došlo je do pogreške prilikom učitavanja pozivnica. Pokušajte ponovn msgid "There was an error loading the stickers. Try again." msgstr "Došlo je do pogreške prilikom učitavanja naljepnica. Pokušajte ponovno." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Došlo je do pogreške prilikom učitavanja webhookova za ovaj kanal. Pokušajte ponovno." @@ -34417,7 +33928,7 @@ msgstr "Ovaj kanal može objaviti 10 poruka zaredom, a zatim još jednu svakih 6 msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Ovaj kanal može objaviti 10 poruka zaredom, a zatim još jednu svakih 6 minuta. Pokušajte ponovno za nekoliko minuta." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Ovaj kanal ne podržava webhookove." @@ -34550,12 +34061,12 @@ msgstr "Ova veza nije potvrđena." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Ovo sadrži osjetljiv sadržaj." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Ovaj razgovor više nije dostupan." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Ova grupa ima previše ljudi" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Ova je grupa puna. Uklonite nekoga prije dodavanja novih osoba." @@ -34715,11 +34226,6 @@ msgstr "Ovo je prilagođena naljepnica iz zajednice." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Ovo je kanal s ograničenim pristupom zbog dobi. Obavijesti se mogu slati samo na kanale s ograničenim pristupom zbog dobi." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Ovo je provjera protiv neželjene pošte. Vaš telefonski broj nije povezan s vašim računom." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Ovo je onemogućeno" msgid "This is how messages appear" msgstr "Ovako izgledaju poruke" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Ovo trenutno nije dostupno na vašem računu. Zamolite administratore ove instance da to provjere." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Ovo trenutačno nije dostupno na vašem računu. Pošaljite e-poruku na {supportEmail} i pregledat će to osoba." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Ovo nije kanal koji tražite." @@ -34792,11 +34288,6 @@ msgstr "Ovo je vaš posljednji pristupni ključ, a pristupni ključevi su vaš d msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Ovo je vaš posljednji pristupni ključ. Kada ga više ne bude, nećete moći koristiti pristupni ključ kao drugi faktor." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Ovo nije broj mobitela, stoga ne može primiti naš SMS. Pokušajte s brojem mobitela ili se obratite podršci ako mislite da je ovo pogrešno." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Ova je poruka već izbrisana." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Ova poruka je već objavljena" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Ova poruka više ne postoji." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Ovaj nadimak bit će vidljiv samo u ovoj zajednici" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Ovaj se broj provjerava tako da vi pošaljete poruku nama. Vratite se i ponovno pokrenite provjeru telefonskog broja kako biste dobili kod i broj na koji šaljete poruku." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Za ovaj broj provjera se radi tako da vi pošaljete poruku nama, a ne mi SMS vama." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Ovaj je sudionik bez zvuka" msgid "This participant was deafened by moderators" msgstr "Moderatori su ovom sudioniku isključili zvuk" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Ovaj telefonski broj ne može se koristiti. Pokušajte s drugim brojem mobitela ili se obratite podršci." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Ovaj je telefonski broj već korišten. Pokušajte s drugim brojem ili se obratite podršci." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Ovaj korisnik nema uloge u ovoj zajednici." msgid "This user is already banned from the community." msgstr "Ovom je korisniku već zabranjen pristup zajednici." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Ovaj korisnik više nije dostupan." @@ -35065,11 +34536,6 @@ msgstr "Ovog je korisnika u ovu zajednicu prisilno dodao administrator platforme msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Sesija provjere je istekla. Vratite se u {productName} i ponovno pokrenite naplatu." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Ova sesija provjere je istekla. Počnite ponovno." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Ovo će vas odjaviti, izbrisati predmemorirane datoteke i pohranjene ses msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Time ćete vjerovati svim vanjskim poveznicama i preskočiti upozorenje za svaku domenu. Vaše postojeće pouzdane domene bit će zamijenjene. Ovo je manje sigurno." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Ovaj se prozor automatski ažurira nakon što primimo vašu poruku." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Naslovna traka" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Platforma naslovne trake" @@ -35470,18 +34931,11 @@ msgstr "Ton" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Preslikavanje HDR slika na standardni raspon, smanjujući vršnu svjetlinu." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Previše pokušaja. Pričekajte malo, pa pokušajte ponovno." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Previše zajednica" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Previše zahtjeva. Pokušajte ponovno kasnije." @@ -36151,8 +35605,10 @@ msgstr "Nije moguće pripremiti nijedan emoji za prijenos. Došlo je do sljedeć #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Nedostupno" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Nekategorizirano" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Nepreuzet račun" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Nenumerirani popis" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Otkvači" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Otkvači poruku" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Otkvačiti ovu poruku?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Nespremljene promjene" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Nepodržana audio datoteka." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Dok ga ponovno ne uključim" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Nepotvrđena e-pošta" @@ -36958,12 +36414,7 @@ msgstr "Ažurirajte {productName} da biste vidjeli ovu poruku." msgid "Update app" msgstr "Ažuriraj aplikaciju" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Ažuriraj e-poštu" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Ažuriraj moj status" @@ -37306,18 +36757,13 @@ msgstr "Koristite {url} gdje treba umetnuti URL slike." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Upotrijebite zaseban prozor za postavljanje datuma praga povijesti poruka za članove koji nemaju dopuštenje {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Upotrijebite drugu adresu e-pošte i potvrdite je kodom." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Koristi stvarno" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Koristi stvarni tip premium računa" @@ -37335,16 +36781,6 @@ msgstr "Koristi drugu metodu" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Upotrijebite aplikaciju za autentifikaciju koja generira kodove za dvostruku provjeru autentičnosti" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Koristite e-poštu koju možete otvoriti. Tamo ćemo poslati kôd." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Koristite e-poštu koja se razlikuje od vaše trenutačne." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Koristi tamnu temu u cijeloj aplikaciji" msgid "Use default" msgstr "Koristi zadano" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Koristi drugu e-poštu" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Koristi e-poštu" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Želite li koristiti pristupne ključeve za dvostruku provjeru autentič msgid "Use passkeys to sign in without a password" msgstr "Upotrijebi pristupne ključeve za prijavu bez lozinke" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Koristi telefon" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Koristi tekst za ponovnu provjeru" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Korisnik se premješta u drugi kanal" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Korisnik nije pronađen" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Provjera" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Provjera i prepreke za članstvo" @@ -37970,15 +37387,8 @@ msgstr "Kod za provjeru" msgid "Verification code sent" msgstr "Kod za provjeru poslan" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Kod za provjeru je poslan. Provjerite pristiglu poštu svoje nove e-adrese." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "E-pošta za potvrdu poslana. Provjerite svoju pristiglu poštu." @@ -38038,23 +37448,6 @@ msgstr "Obrazac za provjeru identiteta" msgid "Verify it's you" msgstr "Potvrdite da ste to vi" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Potvrdite telefon" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Potvrdite telefonski broj" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Obrazac za potvrdu telefonskog broja" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Potvrdite svoju e-poštu prije dodavanja aplikacije za provjeru autentičnosti." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Potvrdite svoju e-poštu prije promjene nadimka u zajednici, avatara, naslovne slike, biografije, zamjenica ili boje naglaska." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Potvrdite svoju e-poštu prije promjene korisničkog imena, imena za prikaz, avatara, naslovne slike, biografije, zamjenica, vremenske zone ili privatnosti značke {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Potvrdite svoju e-poštu prije uređivanja profila zajednice. Ovdje ga i dalje možete pregledati." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Potvrdite svoju e-poštu prije uređivanja profila. Ovdje ga i dalje možete pregledati." @@ -38113,11 +37506,6 @@ msgstr "Potvrdite svoju e-poštu prije slanja zahtjeva za prijateljstvo." msgid "Verify your email first" msgstr "Prvo potvrdite svoju e-poštu" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Potvrdite svoju e-poštu ili telefon kako biste nastavili koristiti {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Potvrdi svoju e-poštu da bi mogao/la kupovati poklone." msgid "Verify your email to change your username" msgstr "Potvrdite svoju e-poštu kako biste promijenili korisničko ime" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Potvrdite svoju e-poštu kako biste nastavili koristiti {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Potvrdite svoju e-poštu da biste uredili ovaj profil zajednice" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Potvrdite svoju e-poštu da biste uredili profil" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Verzija" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Vrlo visoka" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Povećaj glasnoću" msgid "Wait a moment before deleting more messages." msgstr "Pričekajte trenutak prije brisanja više poruka." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Pričekajte trenutak. Ovaj će se prozor automatski zatvoriti čim primimo vašu poruku." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Vrijeme čekanja između poruka. Članovi s dopuštenjem \"{bypassSlowmodePermissionLabel}\" mogu ga zaobići." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Pričekajte ovdje" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Čekanje pristupnog ključa…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Čeka se istek usporenog načina rada u kanalu {forwardChannelDisplayName}." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Čeka se istek usporenog načina rada u jednom ili više odabranih kanala." @@ -39115,16 +38482,6 @@ msgstr "Nismo mogli učitati ovu temu. Možda je oštećena ili nevažeća." msgid "We couldn't remove that account. Try again." msgstr "Nismo mogli ukloniti taj račun. Pokušajte ponovno." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Nismo mogli automatski provjeriti ovaj broj. Obratite se podršci i osoba će pregledati vaš račun." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Ne šaljemo poruke za provjeru u ovu državu. Pokušajte s mobilnim brojem iz druge države ili se obratite podršci." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Pronašli smo postojeću pretplatu {premiumProductFullName} za ovaj rač msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Snizili smo cijenu za {premiumProductName} u Brazilu. Sada je {monthlyPrice} mjesečno ili {yearlyPrice} godišnje." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Potreban je jedan korak provjere prije nego što nastavite. To pomaže u zaštiti računa i sprječavanju neželjene pošte na {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Potrebna su dva koraka provjere prije nego što nastavite. Prikazivat ćemo jedan po jedan korak." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Preporučujemo da odmah spremite ove kodove kako ne biste ostali bez pristupa svom računu." @@ -39167,11 +38514,6 @@ msgstr "Poslali smo kôd na adresu {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Automatski ćemo popuniti {prefillEmail} kada se otvori prijava u pregledniku." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Poslat ćemo SMS kod kada bude dostupan." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Rado bismo vam dali više od doživotne pretplate na {PREMIUM_PRODUCT_NAME}, ali to narušava prostorno-vremenski kontinuum. Želite li poklon radije poslati prijatelju?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Obradit ćemo ovo što je prije moguće. Primit ćete e-poštu kada vaša arhiva bude spremna." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Vratit ćemo vašu prethodnu e-poštu, odjaviti stare sesije, ukloniti telefonske brojeve, onemogućiti višestruku provjeru autentičnosti i osigurati vaš račun novom lozinkom." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Vratit ćemo vašu prethodnu e-poštu, odjaviti stare sesije, onemogućiti višefaktorsku provjeru autentičnosti i osigurati vaš račun novom lozinkom." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Poslat ćemo vam kod za provjeru na e-poštu prije nego što možete pro msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Poslat ćemo vam kod za provjeru na vašu e-poštu prije nego što možete vidjeti svoje rezervne kodove." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Poslat ćemo SMS kod čim bude dostupan. Vaš broj nije povezan s vašim računom. Zadržavamo samo enkriptirani identifikator, bez korisničkog ID-a, na ograničeno vrijeme." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Potvrdit ćemo vašu trenutačnu e-poštu, a zatim i novu e-poštu jednokratnim kodovima." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook izrađen" @@ -39331,7 +38669,7 @@ msgstr "Webhook ažuriran" msgid "Webhook URL" msgstr "URL webhooka" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhookovi" @@ -39486,8 +38824,8 @@ msgstr "Ono što dijelite ne ažurira se" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Što se događa?" @@ -39967,21 +39305,11 @@ msgstr "Možete ukloniti dopuštenje <0>{readMessageHistoryPermissionLabel} msgid "You can sign back in at any time." msgstr "Možete se ponovno prijaviti bilo kada." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Administratore ove instance u bilo kojem trenutku možete zamoliti da vaš slučaj pregleda osoba." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "I dalje možete izraditi račun ili se prijaviti. Ako se pozivnice ponovno omoguće, možete upotrijebiti istu poveznicu za pridruživanje." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Uvijek nam možete pisati na {supportEmail} da vaš slučaj pregleda čovjek." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Možete koristiti poveznice, emojije i Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Ne možete dodati izraze na to mjesto" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Ne možete dodavati nove reakcije dok imate vremensko ograničenje." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Ne možete se sprijateljiti sami sa sobom" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Ovdje ne možete promijeniti nadimak" @@ -40094,7 +39422,7 @@ msgstr "Ne možete poslati zahtjev za prijateljstvo samome sebi." msgid "You can't send messages in this channel." msgstr "Ne možete slati poruke u ovom kanalu." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Ne možete slati poruke u ovoj zajednici." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Nemate dopuštenje za tu radnju nad ovim članom." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Nemate dopuštenje za pridruživanje ovom glasovnom kanalu" @@ -40243,7 +39571,7 @@ msgstr "Nemate dopuštenje za preimenovanje ovog emojija. Naziv je vraćen na pr msgid "You have been banned from this community." msgstr "Zabranjen vam je pristup ovoj zajednici." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Blokirali ste korisnika {username}. Deblokirajte ga kako biste mogli slati poruke." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Imate nespremljene promjene." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Imate nespremljene promjene. Spremite ili poništite prije odlaska." @@ -40270,7 +39598,7 @@ msgstr "Imate nespremljene promjene. Spremite ili poništite prije odlaska." msgid "You haven't authorized any applications to access your account." msgstr "Niste ovlastili nijednu aplikaciju za pristup svojem računu." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Niste dovoljno dugo član ove zajednice da biste slali poruke." @@ -40326,11 +39654,6 @@ msgstr "Morate prihvatiti uvjete pružanja usluge kako biste stvorili račun" msgid "You must verify your email before sending a report." msgstr "Morate potvrditi svoju e-poštu prije slanja prijave." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Za promjenu e-pošte ovdje morate imati pristup svojoj trenutačnoj adresi e-pošte. Upotrijebite provjeru telefonom ako je dostupna ili se obratite podršci." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Potrebno vam je dopuštenje \"{manageRolesPermissionLabel}\" za uređiva msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Potrebno vam je dopuštenje \"{manageRolesPermissionLabel}\" za uređivanje ovih dopuštenja." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Potrebno vam je dopuštenje \"{manageWebhooksPermissionLabel}\" za pregled i uređivanje webhookova za ovaj kanal." @@ -40384,18 +39707,14 @@ msgstr "Morate preuzeti svoj račun prije nego što možete stvoriti zajednicu." msgid "You need to claim your account before you can start a direct message." msgstr "Morate preuzeti svoj račun prije nego što možete započeti izravnu poruku." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Morate preuzeti svoj račun da biste slali izravne poruke." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Morate preuzeti svoj račun da biste slali poruke u ovoj zajednici." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Morate potvrditi telefonski broj da biste slali poruke u ovoj zajednici." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Morate potvrditi svoju adresu e-pošte prije nego što možete započeti msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Morate potvrditi svoju e-poštu prije nego što možete kupiti {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Morate potvrditi svoju e-poštu da biste slali poruke u ovoj zajednici." @@ -40424,11 +39743,6 @@ msgstr "Morate potvrditi svoju e-poštu da biste slali poruke u ovoj zajednici." msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Vi ili netko koga dodajete već ima maksimalan broj otvorenih grupnih izravnih poruka. Napustite jednu i pokušajte ponovno." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Ostajete u {ownedNames}. Vlasnici ne mogu napustiti vlastitu zajednicu." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Moderatori su vam isključili zvuk" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Nakon autorizacije bit ćete preusmjereni na {redirectHostname}." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Napustit ćete {count, plural, one {# zajednicu na koju se ova provjera odnosi} few {# zajednice na koje se ova provjera odnosi} other {# zajednica na koje se ova provjera odnosi}}, a vaš će račun ponovno raditi normalno." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Napustit ćete {guildNames}. Ništa što ste objavili nije izbrisano i možete se ponovno pridružiti kasnije." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Još uvijek ćete morati dovršiti korak s e-poštom." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Usporite malo" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Usporite malo. Pričekajte trenutak pa pokušajte ponovno." @@ -40636,7 +39935,7 @@ msgstr "Prebrzo šaljete poruke" msgid "You're streaming!" msgstr "Prenosite uživo!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Imate vremensko ograničenje. Slanje poruka, reagiranje i pridruživanje glasovnim kanalima pauzirani su dok vremensko ograničenje ne istekne." @@ -40764,25 +40063,25 @@ msgstr "Plaćanje za obnovu putem {storeName} nije uspjelo, ali <0/> ostaju akti msgid "Your account" msgstr "Vaš račun" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Račun vam se odmah vraća u normalu i više vam neće trebati broj telefona. Ovo nije trajno izuzeće i možemo ponovno zatražiti ovu provjeru kasnije." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Vaš je račun uspješno povezan. Sada možete zatvoriti ovu karticu i vratiti se u aplikaciju." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Račun vam je ponovno u normalnom stanju." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Vaš je račun ograničen" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Vaš je račun ograničen. Provjerite svoju e-poštu za upute kako ga deblokirati." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Vaš račun još nije preuzet. Bez e-pošte i lozinke nećete se moći prijaviti s drugih uređaja i mogli biste izgubiti pristup svom računu. Preuzmite svoj račun sada kako biste ga osigurali." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Vaš je račun prenov da biste slali poruke u ovoj zajednici." @@ -40800,11 +40099,6 @@ msgstr "Vaš račun zahtijeva višestruku provjeru autentičnosti, ali na ovom u msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Račun vam više neće biti zaštićen dvostrukom provjerom autentičnosti prilikom prijave lozinkom. Također ćete izgubiti povišena dopuštenja u zajednicama koje zahtijevaju dvostruku provjeru autentičnosti." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Vaš račun ponovno radi normalno i ništa nije uklonjeno. Možemo ponovno zatražiti ovu provjeru kasnije." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Provjeravamo vašu karticu radi lokaliziranih cijena. Ovo obično traje msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Vaša kartica ispunjava uvjete. Preusmjeravamo vas na stranicu za plaćanje." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Vaš operater kaže da taj broj nije u upotrebi. Provjerite ga i pokušajte ponovno, ili se obratite podršci ako je ispravan." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Vaše promjene dosežu svaku zajednicu koja prati ovaj kanal, što može potrajati minutu. Svaka objavljena poruka omogućuje 3 brze izmjene, a zatim 1 svakih 20 minuta." @@ -40869,21 +40158,6 @@ msgstr "Vaš će uređaj zatražiti da spremite ažurirani pristupni ključ za { msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Vaš će uređaj zatražiti da spremite ažurirani pristupni ključ za {name}. Upotrijebite isti telefon ili sigurnosni ključ koji ste upravo koristili." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Vaša adresa e-pošte je ažurirana." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Vaša e-pošta nije mogla primati poruke. Dodajte ispravnu e-poštu kako bismo vaš račun mogli održati dostupnim." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Vaša e-pošta ne može primati poruke. Ažurirajte je kako biste nastavili koristiti {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Vaša e-pošta je potvrđena. Sada se možete prijaviti na svoj račun." @@ -41000,21 +40274,11 @@ msgstr "Vaša poruka nije ažurirana" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Vaša najnovija kupnja više nije unutar roka za povrat novca. Obratite se podršci za probleme s naplatom." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "vaša nova e-pošta" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Vaš novi nadimak ili ostavite prazno za poništavanje." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Vaš broj nije povezan s vašim računom. Zadržavamo samo šifrirani pokazatelj, bez korisničkog ID-a, na ograničeno vrijeme." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Vaša je uplata otkazana. Sada možete zatvoriti ovu karticu i vratiti se u aplikaciju." @@ -41054,11 +40318,6 @@ msgstr "Vaši kupljeni pokloni" msgid "your region" msgstr "vaša regija" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Vaša registracija zahtijeva dodatnu provjeru radi zaštite od neželjene pošte prije nego što možete nastaviti." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/hu/messages.po b/fluxer_app/src/features/i18n/locales/hu/messages.po index 885644dbb..bc5380576 100644 --- a/fluxer_app/src/features/i18n/locales/hu/messages.po +++ b/fluxer_app/src/features/i18n/locales/hu/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reakció} other {# reakció}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# reagáló felhasználó} other {# reagáló felhasználó}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# másodperc} other {# másodperc}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {A meghívólinked # másodperc múlva jár le.} other {A meghívólinked # másodperc múlva jár le.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} kiválasztva" @@ -2252,7 +2252,7 @@ msgstr "1 perc" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 óra" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 hónap (1 év)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "2FA biztonsági kódok" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2FA-követelmény" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 tag (épp ír)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 hónap" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 óra" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 hónap" @@ -2575,11 +2575,6 @@ msgstr "egy perc" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Új asztali verzió érhető el. Töltsd le a telepítőt, majd futtasd a(z) {productName} frissítéséhez." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Új ellenőrző kódot küldtünk." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Fiókadatok" msgid "Account exists to spam, scam, or abuse the platform." msgstr "A fiók spamküldésre, átverésre vagy a platformmal való visszaélésre jött létre." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Fiók korlátozva" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Fiók állapota" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Túl új fiók" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Fiókellenőrzés szükséges" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Bot hozzáadása egy közösséghez a kért jogosultságokkal" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Megjegyzés hozzáadása (opcionális)" @@ -3054,8 +3052,10 @@ msgstr "Adj hozzá témát ehhez a csatornához" msgid "Add a word…" msgstr "Szó hozzáadása…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Működő e-mail-cím hozzáadása" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "A folytatáshoz adj hozzá egy fiókot." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Először adj meg egy e-mail-címet és jelszót a fiókodhoz." @@ -3424,11 +3424,6 @@ msgstr "Hozzáadva: {createdDate} • utoljára használva: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "További megjegyzések (opcionális)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "További ellenőrzés szükséges" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Összes nyelv" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Már be van állítva a lemondás" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Az üzenet bejelentése a(z) {productName} biztonsági csapatának is" @@ -4713,11 +4708,6 @@ msgstr "Kérdezzen, mielőtt hívásokat indítana." msgid "Ask for a passkey after your password when you sign in" msgstr "Bejelentkezéskor a jelszavad után jelszókulcsot is kérünk" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Kérd meg ennek a példánynak az adminisztrátorait, hogy vizsgálják felül a fiókodat. Ezt a példányt függetlenül üzemeltetik, és csak az adminisztrátorai módosíthatják a fiókodat." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Automatikusan eltávolítja a követési paramétereket (például utm_s msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Automatikusan eltávolítja a követési paramétereket az elküldött üzenetekben lévő URL-ekből" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Automatikusan ellenőrzi, hogy tartalmaznak-e explicit tartalmat a felnőtt tartalomra nem megjelölt csatornák üzenetei." @@ -5359,8 +5349,6 @@ msgstr "Jelenleg távol" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Vissza" @@ -6506,11 +6494,6 @@ msgstr "A kamerákat és a virtuális rögzítőeszközöket itt, a(z) {productN msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "{voiceChannelCameraUserLimit} résztvevő felett a kamerák ki vannak kapcsolva" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Nem férsz hozzá ehhez az e-mail-címhez?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Ide nem tölthetsz fel fájlokat" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Ide nem tölthetsz fel fájlokat" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "E-mail-cím módosítása" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Emoji módosítása" @@ -7201,7 +7184,7 @@ msgstr "Megváltoztatta a felhasználói limitet erről: {oldCount} erre: {newCo msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Megváltoztatta az egyéni meghívólinket erről: {oldCode} erre: {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Megváltoztatta az ellenőrzési szintet erről: {oldLevel} erre: {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Csatorna vagy kategória" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Egyéni csatornajogosultságok" @@ -7509,8 +7492,6 @@ msgstr "Ellenőrizd a kapcsolatot, és próbáld újra." msgid "Check your connection, then try again." msgstr "Ellenőrizd a kapcsolatot, majd próbáld újra." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Válassz egy kijelzőt a rendszer választójában" msgid "Choose a GIF" msgstr "GIF kiválasztása" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Válassz egy módszert" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Válassz új jelszót." @@ -7680,8 +7656,8 @@ msgstr "Válassz egy műveletet." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Válassz emojit" @@ -7749,11 +7725,6 @@ msgstr "Válaszd ki, hogyan működjön a példányod" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Válassz az alábbi módszerek közül a domain tulajdonjogának igazolásához. Elég egyet elvégezned." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Válassz egy ellenőrzési módszert. Bármelyikkel teljesítheted ezt az ellenőrzést." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Válaszd ki, mit tehet a(z) {clientLabel} a közösségedben. Töröld a msgid "Choose what friends see in their active now panel" msgstr "Válaszd ki, mit lássanak az ismerőseid a „Most aktívak” panelen" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Válaszd ki, hogy a tagoknak mivel kell rendelkezniük, mielőtt bejegyzéseket tehetnek közzé vagy közvetlen üzenetet küldhetnek a közösség tagjainak." @@ -8030,8 +8001,8 @@ msgstr "Tisztábbá teszi a mikrofonod hangját, hogy a beszéd jól érthető l msgid "Clear" msgstr "Törlés" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Törlés ennyi idő után" @@ -8053,7 +8024,7 @@ msgstr "Összes szimulált melléklet törlése" msgid "Clear all token overrides" msgstr "Összes tokenfelülbírálás törlése" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Szimulált mellékletek törlése" @@ -8066,14 +8037,14 @@ msgstr "Parancs törlése" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Egyéni állapot törlése" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Törlöd az összes reakciót erről az üzenetről?" @@ -8124,7 +8095,7 @@ msgstr "Keresési mező törlése" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Szén téma" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Parancsok" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Nem adhatsz hozzá megjegyzést, mert legalább egy kiválasztott csatornában be van kapcsolva a lassú mód. A lassú mód közvetlenül a továbbítás után megakadályozná a megjegyzés elküldését." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Nem adhatsz hozzá megjegyzést, mert a(z) {forwardChannelDisplayName} csatornában be van kapcsolva a lassú mód. A lassú mód közvetlenül a továbbítás után megakadályozná a megjegyzés elküldését." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Bekapcsolt lassú mód mellett nem adhatsz hozzá megjegyzést." @@ -8670,11 +8639,11 @@ msgstr "Közösségek" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "A közösségek és csatornák, ahol nem tudsz webhookokat kezelni, el vannak rejtve." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "A Felfedezésben szereplő közösségekben minden tag üzeneteit ellenőrizni kell. Ez a beállítás nem módosítható, amíg a Felfedezés engedélyezve van." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "A Felfedezésben szereplő közösségekben legalább az e-mail-cím megerősítését meg kell követelni. A „Nincs” lehetőség nem választható, amíg a Felfedezés engedélyezve van." @@ -8827,7 +8796,7 @@ msgstr "Közösség neve" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Közösségi becenév" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Közösségi profil" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Közösségi profil frissítve" @@ -8907,7 +8876,7 @@ msgstr "Közösségi olvasatlanságjelző szintje" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Közösség frissítve" @@ -8952,11 +8921,6 @@ msgstr "Összehasonlítás" msgid "Complete mature content check" msgstr "Felnőtt tartalomhoz szükséges ellenőrzés elvégzése" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "A(z) {productName} további használatához végezd el az alábbi ellenőrzési módok egyikét." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Fizetés befejezése" msgid "Complete the mature content check to unlock mature media." msgstr "Végezd el a felnőtt tartalomhoz szükséges ellenőrzést, hogy megtekinthesd a felnőtt médiatartalmakat." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "A(z) {productName} további használatához végezd el az alábbi kötelező e-mail- és telefonszám-ellenőrzési lépéseket." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "A(z) {productName} további használatához végezd el a szükséges ellenőrzést." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Profiljelvény beállítása" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Kapcsolatok sorrendje megváltozott" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Hozzájárulás szükséges" @@ -9349,16 +9304,6 @@ msgstr "Készíts egy engedélyezési URL-t hatókörökkel és jogosultságokka msgid "Contact" msgstr "Kapcsolat" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Kapcsolatfelvétel az ügyfélszolgálattal" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Segítségért fordulj ennek a példánynak az adminisztrátoraihoz." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Tartalomkészítő" msgid "Content filter" msgstr "Tartalomszűrő" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Tartalomszűrés" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Tartalomtípus kódoláshoz" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Tartalombiztonsági korlátozások" @@ -9416,12 +9361,10 @@ msgstr "A helyi menük bal egérgombbal (gombokon) vagy jobb egérgombbal (egyé #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "A némított csatornák olvasatlanjelzőjének viselkedése a csatornali msgid "Control which chat updates are announced by assistive technology." msgstr "Állítsd be, mely csevegésbeli változásokat jelezzék a kisegítő technológiák." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "A beszélgetés nem található" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Nem sikerült hozzáadni a címkét" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Nem sikerült hozzáadni ezt az ismerőst a csoporthoz. Kérjük, próbáld újra." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Nem sikerült hozzáadni a csoporthoz" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Nem sikerült létrehozni a téma hivatkozását" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Nem sikerült meghívólinket létrehozni" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Nem sikerült befejezni a türelmi időszakot" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Nem sikerült meghívólinket létrehozni. Kérjük, próbáld újra." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Nem sikerült feldolgozni a képet" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Nem sikerült közzétenni ezt az üzenetet" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Nem sikerült újra csatlakozni a Visionary közösséghez" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Nem sikerült eltávolítani a belépési hangot" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Nem sikerült menteni a csatorna beállításait" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Nem sikerült menteni a belépési hangot" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Nem sikerült visszavonni a jelentkezést" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Visszaszámláló" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Ország" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Hozd létre az adminisztrátori fiókot" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Létrehozod a csoportos beszélgetést a megmaradt {addableCount, plural, one {# címzettel} other {# címzettel}}, a többieket pedig kihagyod?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Webhook létrehozása" @@ -10948,7 +10884,7 @@ msgstr "Egy közösség egyéni emojija: {emojiName}" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Az egyéni belépési hangok nincsenek engedélyezve ezen a példányon." @@ -11108,7 +11044,7 @@ msgstr "Egyéni hangfeldolgozás" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Egyéni figyelmeztető szöveg" @@ -11530,11 +11466,6 @@ msgstr "Alapértelmezett keresőmotor" msgid "Default shortcuts" msgstr "Alapértelmezett billentyűparancsok" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Alapértelmezett lap" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Üzenet törlése" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Törlöd ezt az üzenetet? A művelet nem vonható vissza." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Törlöd ezt az üzenetet? Nem vonható vissza. Ez az üzenet eltávolításra kerül minden olyan közösségből is, amely követi ezt a csatornát." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Fejlesztői mód" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Fejlesztői opció" @@ -12299,7 +12230,7 @@ msgstr "Közvetlen bemenet" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Megjelenítési mód" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Megjelenítendő név" @@ -12858,7 +12789,7 @@ msgstr "Szeretnél csatlakozni a(z) {communityName} közösséghez?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doki, a jövőből jöttem. Azzal az időgéppel érkeztem, amit te találtál fel. Most a segítségedre van szükségem, hogy visszajussak 1985-be." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Helyi idő szerkesztése" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Közzétett üzenet szerkesztése?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Saját üzenetek szerkesztése fent vagy lent" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Profilod megjelenésének szerkesztése és élő előnézet megtekintése" @@ -13590,10 +13521,8 @@ msgstr "Eddig kérhetsz visszatérítést: {windowEndsOn}. Ezzel az előfizetés msgid "Email" msgstr "E-mail" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Az e-mail-cím megadása kötelező." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-mail-cím megváltoztatva" @@ -13616,49 +13547,17 @@ msgstr "E-mail-cím megváltoztatva" msgid "Email delivery" msgstr "E-mailek kézbesítése" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-mail-cím vagy telefonszám" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Az e-mail-cím vagy a telefonszám újbóli ellenőrzése szükséges" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "E-mail-cím újbóli ellenőrzése szükséges" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-mail nem elérhető" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Az e-mail-cím frissítése jelenleg nem érhető el. Próbáld újra később, vagy fordulj az ügyfélszolgálathoz." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "E-mail-cím frissítése szükséges" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Írj nekünk e-mailt, és egy ember átnézi a fiókodat. Mondd el, hogy nem tudod igazolni magad SMS-ben, és mi intézzük a többit. A válaszok e-mailben érkeznek, így ez nem azonnali." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "E-mail-ellenőrzési emlékeztető sáv" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "E-mail-cím ellenőrzése szükséges" @@ -13675,6 +13574,10 @@ msgstr "E-mail-ellenőrzés felülbírálása" msgid "Email verified successfully" msgstr "E-mail-cím sikeresen megerősítve" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Az e-mailek a jelenlegi címedre nem érkeznek meg. Add meg az új e-mail címedet, és oda küldünk egy kódot." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Beágyazott tartalmak" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Beágyazott tartalmak elrejtve" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Beágyazott tartalmak elrejtése feloldva" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "A /tts paranccsal küldött szöveg felolvasásának engedélyezése" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "A beállítás módosításához engedélyezd a kétlépcsős azonosítást a fiókodon" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Adj meg egy érvényes sablon-URL-t vagy -kódot a(z) {theOtherPlatform} platformról." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Érvényes e-mail-címet adj meg." @@ -14298,33 +14199,11 @@ msgstr "Érvényes e-mail-címet adj meg." msgid "Enter a valid message link." msgstr "Érvényes üzenetlinket adj meg." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Adj meg egy érvényes mobilszámot." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Adj meg egy érvényes telefonszámot" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Érvényes felhasználónevet adj meg ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Adj meg egy olyan e-mail-címet, amelyhez hozzáférsz. Kódot küldünk oda." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Kód megadása" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Teljes képernyőre váltás" msgid "Enter gift code…" msgstr "Ajándékkód megadása…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Új e-mail-cím megadása" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Írj be egy biztonsági kódot, ha nem tudod használni a jelszókulcsod msgid "Enter one of your backup codes." msgstr "Írj be egy biztonsági kódot." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Telefonszám megadása" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Add meg a hitelesítő alkalmazásod {digitCount} számjegyű kódját v msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Add meg a hitelesítő alkalmazásod {digitCount} számjegyű kódját." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Add meg a(z) {phoneNumber} telefonszámra küldött {digitCount} számjegyű kódot." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Add meg a(z) {MFA_CODE_DIGIT_COUNT} számjegyű kódot, amelyet ide küldtünk: {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Add meg a kódot" @@ -14408,11 +14267,6 @@ msgstr "A folytatáshoz add meg a kódot." msgid "Enter the code from your authenticator app." msgstr "Add meg a hitelesítő alkalmazásodban látható kódot." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Add meg a(z) {emailAddress} címre küldött kódot." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Add meg az aktuális e-mail-címedre küldött kódot." @@ -14426,6 +14280,7 @@ msgstr "Add meg az e-mail-címedre küldött kódot." msgid "Enter the code shown in the app to continue." msgstr "A folytatáshoz add meg az alkalmazásban látható kódot." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Add meg az új e-mail-címedre küldött kódot." @@ -14434,11 +14289,6 @@ msgstr "Add meg az új e-mail-címedre küldött kódot." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Add meg az e-mail-címedre küldött kódot az ellenőrzéshez. A jelszavad a kód megerősítése után lesz beállítva." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Add meg az e-mailben kapott kódot" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Írd be a meghívólinket a közösséghez való csatlakozáshoz." @@ -14452,11 +14302,6 @@ msgstr "Add meg az új e-mail-címedet. Kódot küldünk oda." msgid "Enter the PIN for your security key to continue." msgstr "A folytatáshoz add meg a biztonsági kulcsod PIN-kódját." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Add meg az SMS-kódot" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Írd be ezt a kódot a böngésződbe a bejelentkezés befejezéséhez." @@ -14492,11 +14337,6 @@ msgstr "Add meg a nevedet" msgid "Enter your password." msgstr "Add meg a jelszavad." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Add meg a telefonszámodat" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Belépési hang" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "A belépési hangfájlok mérete legfeljebb {limit} lehet." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "A belépési hangok gyűjteménye megtelt" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Belépési hang eltávolítva" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Belépési hang elmentve" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Belépési hangok" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "A belépési hangok nem érhetők el" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Lejár:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Explicittartalom-szűrő beállítása" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Nem sikerült vágólapra másolni" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Nem sikerült létrehozni a webhookot" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Nem sikerült betölteni az egyéni meghívólinket. Próbáld újra." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Nem sikerült betölteni a webhookokat" @@ -15190,11 +15030,6 @@ msgstr "Nem sikerült eltávolítani az egyéni meghívólinket. Próbáld újra msgid "Failed to resend code. Try again." msgstr "Nem sikerült újraküldeni a kódot. Próbáld újra." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Nem sikerült újraküldeni az ellenőrző kódot. Próbáld újra később." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Az üzenet küldése sikertelen. Tartsd nyomva a további lehetőségek msgid "Failed to send report. Try again." msgstr "Nem sikerült elküldeni a bejelentést. Próbáld újra." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Nem sikerült elküldeni az ellenőrző e-mailt. Próbáld újra később." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Indítás sikertelen" @@ -15551,15 +15381,15 @@ msgstr "Szűrés felhasználó szerint" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Minden tag üzeneteinek szűrése" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Szerepkör nélküli tagok üzeneteinek szűrése" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Kövesd ezt a csatornát" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Kövesd ezt, hogy ezeket a bejelentéseket egy általad választott csatornában kaphasd meg." @@ -15773,7 +15603,7 @@ msgstr "Követett csatorna: {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Követett csatornák" @@ -15857,11 +15687,6 @@ msgstr "Csak brit szemeknek..." msgid "For me" msgstr "Nekem" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Ehhez az ellenőrzéshez te küldesz nekünk SMS-t ahelyett, hogy tőlünk kapnál egyet." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "A biztonságod érdekében kérjük, erősítsd meg, hogy te vagy az, mielőtt folytatnád." @@ -15905,7 +15730,7 @@ msgstr "Betöltési váz kényszerített megjelenítése" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Média kezelése felnőtt tartalomként" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Kényszerített áthelyezés az AFK-csatornába" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "{permissionName} jogosultság hiányának szimulálása" @@ -15948,7 +15773,7 @@ msgstr "Egyéni meghívólinkre vonatkozó figyelmeztetés kényszerített megje msgid "Force show voice connection" msgstr "Hangkapcsolat kényszerített megjelenítése" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Lassú mód aktív állapotának kényszerítése" @@ -16020,7 +15845,7 @@ msgstr "Média továbbítása" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Üzenet továbbítása" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Földrajzi korlátozást jelző fedőréteg" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Földrajzilag korlátozott" @@ -16490,12 +16315,6 @@ msgstr "Szerezz animált avatart és bannert, előfizetői jelvényt, a felhaszn msgid "Get monthly" msgstr "Havi előfizetés" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Új kód kérése" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Ajándékkódok" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Ajándék időtartama" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Ajándékok" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Ajándékok kezelésének folyamata" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Az ajándék nem található" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Ajándék beváltva" @@ -17030,7 +16849,7 @@ msgstr "Csoportos beszélgetés" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Szia, {displayName}! Fejezd be a fiókod regisztrációját, hogy ne veszítsd el a hozzáférésedet." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Szia, {displayName}! Erősítsd meg az e-mail-címedet." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Szia {displayName}, nem tudjuk kézbesíteni a levelet a címedre. Adj meg egy működő e-mail címet a fiókod igazolásához." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Elrejted a saját képernyőmegosztásodat?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Magas" @@ -17755,11 +17579,6 @@ msgstr "Én egy buboréksúgó vagyok" msgid "I changed my mind" msgstr "Meggondoltam magam" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Másik módra van szükségem" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Ha a bejelentés egy konkrét üzenetre vonatkozik, inkább azt az üzen msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Ha a bejelentés konkrét üzenetekre vonatkozik, inkább a leginkább idevágó üzenetet jelentsd be. Az üzenet bejelentése mutatja meg legjobban a körülményeket a biztonsági csapatunknak, a megjegyzésekben megadott részletek pedig gyorsíthatják az elbírálást. Csak akkor jelentsd be a felhasználót, ha egy üzenet bejelentése nem mutatná meg a probléma teljes körét." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Ha nem tudod igazolni SMS-ben" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Ha egyik ellenőrzési módszert sem tudod használni, kérj segítséget az ügyfélszolgálattól." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Felület mérete" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Érvénytelen hangfájl" @@ -18674,8 +18483,10 @@ msgstr "Érvénytelen JSON. Illeszd be a fenti URL-ről kapott teljes választ." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Csatlakozás a hanghíváshoz" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Csatlakozás a hangcsatornához" @@ -19613,16 +19424,6 @@ msgstr "Tudj meg többet a Visionary-ról" msgid "Leave" msgstr "Kilépés" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Kilépsz {count, plural, one {# közösségből} other {# közösségből}}, és félreteszed ezt az ellenőrzést?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Kilépés és félretétel" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "A képernyőolvasók felolvassák az új üzeneteket, amint azok megérkeznek a megnyitott csatornára. Az értesítési hangok változatlanok maradnak." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Engedd, hogy a közösség önmagát moderálja" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Könyvtár" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "A könyvtár megtelt (max. {max} hang). Törölj egyet, mielőtt hozzáadnál egy másikat." @@ -19812,7 +19613,7 @@ msgstr "Könyvtár: {count}/{max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Élethosszig tartó" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Betöltés..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Betöltés…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Alacsony" @@ -20416,7 +20217,7 @@ msgstr "Közösségi funkciók kezelése" msgid "Manage emoji & stickers" msgstr "Emojik és matricák kezelése" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Bejövő webhookok kezelése, amelyek üzeneteket tehetnek közzé ezen a csatornán." @@ -20514,7 +20315,7 @@ msgstr "A beérkezett üzenetek összes olvasatlan csatornájának azonnali megj msgid "Mark as read" msgstr "Megjelölés olvasottként" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Beváltottként jelölés" @@ -20676,14 +20477,14 @@ msgstr "Felnőtt tartalmú közösség" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Felnőtt tartalom" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Felnőtt tartalom és tartalmi figyelmeztetések" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maximális élettartam (nap)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Maximális védelem a családbarát tereknek" @@ -20924,7 +20725,7 @@ msgstr "Lejátszás leállítása" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Tag kitiltása feloldva" msgid "Member updated" msgstr "Tag frissítve" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Tagellenőrzés" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Tagellenőrzési szint" @@ -21048,7 +20849,7 @@ msgstr "A tagok eltávolításra kerülnek, ha offline állapotban vannak, kivé msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Azok a tagok, akik rendelkeznek a(z) „{pinMessagesPermissionLabel}” jogosultsággal, üzeneteket rögzíthetnek mindenki számára." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "A szerepkörrel rendelkező tagok megkerülhetik ezeket az ellenőrzéseket. Nyilvános terek esetén javasoljuk az ellenőrzés engedélyezését." @@ -21153,7 +20954,7 @@ msgstr "A téged megemlítő üzenetek {retentionDays} napig jelennek meg itt." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Csak említések" @@ -21292,7 +21093,7 @@ msgstr "Az üzenetmegjelenítési beállítások csak asztali gépen érhetők e msgid "Message editing" msgstr "Üzenet szerkesztése" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Üzenet továbbítva" @@ -21341,7 +21142,7 @@ msgstr "Üzenetbeviteli gombok" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Az üzenet túl hosszú" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Üzenetelőnézetek a DM-listában" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Üzenet közzétéve" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Az üzenetek a(z) #{sourceName} csatornában mostantól a(z) #{targetName} csatornában jelennek meg." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Az ide közzétett üzenetek ezekből a bejelentési csatornákból ide lesznek másolva." @@ -21504,7 +21305,7 @@ msgstr "Az üzenetek, amelyeket ezekben a bejelentési csatornákban tesznek kö msgid "Messages you can bookmark" msgstr "Üzenetek, amelyeket megjelölhetsz" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Az üzenetküldés átmenetileg szünetel ebben a közösségben." @@ -21733,30 +21534,30 @@ msgstr "1 nap múlva lejáró állapot szimulálása" msgid "Mock expires in 7 days" msgstr "7 nap múlva lejáró állapot szimulálása" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Földrajzi korlátozás fedvényének szimulálása" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Ajándékok listájának szimulálása" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Bejövő hívás szimulálása" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Felnőtt tartalmú csatorna hozzáférési korlátozása okának szimulálása" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Felnőtt médiatartalom hozzáférési korlátozása okának szimulálása" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Egyesült Királyság-beli földrajzi helyzet szimulálása" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Tesztprofilképek különböző méretekben és az összes állapotkombinációval." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Variáns szimulálása" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Szimulált termékfolyamatok" @@ -22698,14 +22494,16 @@ msgstr "Új közösség némítva" msgid "New direct message" msgstr "Új közvetlen üzenet" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Új e-mail-cím" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Új e-mail-cím – űrlap" @@ -22816,9 +22614,7 @@ msgstr "Legújabb elöl" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Tovább" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Nem" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Nincs {attachFilesPermission} jogosultság" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Nincs {sendMessagesPermission} jogosultság" @@ -23005,7 +22801,7 @@ msgstr "Nincs menthető változás" msgid "No channels available" msgstr "Nincsenek elérhető csatornák" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Nem található csatorna" @@ -23233,11 +23029,6 @@ msgstr "Nem található jogosultság" msgid "No personal words yet." msgstr "Még nincsenek személyes szavak." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Nincs telefonszám" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Nincs találat" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Nincs találat" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Nem található felhasználó" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Nincs szükség ellenőrzésre." @@ -23452,7 +23243,7 @@ msgstr "Nincs szükség ellenőrzésre." msgid "No verification methods available" msgstr "Nincs elérhető ellenőrzési módszer" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Nincsenek webhookok" @@ -23504,7 +23295,7 @@ msgstr "Nincs átalakítás" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Nincs" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Nincs (normál viselkedés)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norvég" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Még nem vagy tag elég régóta" @@ -23798,9 +23589,9 @@ msgstr "Tárgyak" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Ki" @@ -23848,7 +23639,7 @@ msgstr "Először a legrégebbiek" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Be" @@ -23884,11 +23675,6 @@ msgstr "Egy vagy több mellékletet nem sikerült beolvasni vagy feltölteni. Le msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Egy vagy több feltölteni kívánt fájl meghaladja a(z) {maxSizeFormatted} maximális fájlméretet." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Egy gyors ellenőrzés" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Csak hangszórók" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Ezt a beállítást csak a közösség tulajdonosa módosíthatja" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Emoji megnyitása böngészőben" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Emojiválasztó megnyitása" @@ -24382,12 +24168,8 @@ msgstr "Menü megnyitása ikon" msgid "Open message history threshold" msgstr "Üzenetelőzmények küszöbértékének megnyitása" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Fedvény megnyitása" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Felugró ablak megnyitása" @@ -24485,11 +24267,6 @@ msgstr "Nyisd meg az új alkalmazást. Már be vagy jelentkezve." msgid "Open the shortcuts list for quick actions." msgstr "Nyisd meg a billentyűparancsok listáját a gyorsműveletekhez." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Nyisd meg az ellenőrző e-mailt, és használd a benne lévő linket. Ez az ablak frissül, miután megnyílt a link." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Hang és videó beállítások megnyitása" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Nyisd meg a böngésződet, jelentkezz be, majd add meg az alábbi kódot a fiókod összekapcsolásához." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Nyisd meg az üzeneteidet" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Nyisd meg a régi {PRODUCT_NAME} alkalmazásodat, válaszd az „Új eszköz csatolása” lehetőséget, majd add meg az alábbi kódot." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Nyisd meg a telefonod üzenetküldő alkalmazását, és hozz létre egy új szöveges üzenetet." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Nyisd meg a telefonod üzenetküldő alkalmazását, és kezdj új szöveges üzenetet." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "További reakciók…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Jelenleg nem elérhető a telefonszám-ellenőrzésünk. Ez a mi hibánk, nem a számé. Várj pár percet, és próbáld meg újra ugyanazzal a számmal." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Adathalászat, csalás, rosszindulatú hivatkozások vagy valós károkat okozó hamis állítások." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefonszám" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Telefonszám" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Telefonszám megadása kötelező" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Telefonszám ellenőrizve" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Telefonszám újbóli ellenőrzése szükséges" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Telefonos lépés" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "A telefonszám-ellenőrzés nem érhető el ehhez a fiókhoz. Használj másik módszert, vagy fordulj az ügyfélszolgálathoz." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Telefonszám-ellenőrzés szükséges" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Válaszd ki a 4 számjegyű számot a felhasználóneved után" msgid "Pick the appearance this administrator account should start with." msgstr "Válaszd ki a megjelenést, amellyel ez a rendszergazdai fiók induljon." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Válassz olyan módszert, amellyel most el tudod végezni az ellenőrzést." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Kép a képben" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Rögzítés" @@ -25471,7 +25176,7 @@ msgstr "Csoportos beszélgetés rögzítése" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Bármelyik üzenet rögzítése vagy rögzítésének megszüntetése." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Rögzítsd ezt az üzenetet a csatornában, hogy mindenki láthassa." @@ -26227,18 +25932,18 @@ msgstr "Profilszín" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Profil testreszabása" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Profil testreszabása ehhez: {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Profil testreszabási űrlap" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Profiltípus" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profil frissítve" @@ -26340,7 +26045,7 @@ msgstr "Rákérdezés új hangeszközök csatlakoztatásakor" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Összehangolt támadás szervezése" msgid "Rate" msgstr "Sebesség" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Túl sok kérés" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Beágyazott tartalom nyers JSON-ja" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Eltávolítod {userName} nevű felhasználót az ismerőseid közül?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Összes eltávolítása" @@ -27290,7 +26990,7 @@ msgstr "Eltávolítod az összes {emojiNameWithColons} reakciót erről az üzen #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Összes reakció eltávolítása" @@ -27899,20 +27599,10 @@ msgstr "Bejelentett felhasználó címkéje (opcionális)" msgid "Reposts: <0>{countLabel}" msgstr "Újraközlések: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Előbb kérj egy új kódot." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Új jelszó-visszaállító link kérése" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Előbb kérj egy ellenőrző kódot." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Kérelmek" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Kétlépcsős azonosítás megkövetelése a moderálási műveletekhez" @@ -27958,7 +27648,7 @@ msgstr "OAuth2 engedélyezési kód megkövetelése" msgid "Require passkey" msgstr "Jelszókulcs megkövetelése" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Kétlépcsős azonosítás megkövetelése a moderátoroktól tagok kitiltásához, kirúgásához vagy ideiglenes korlátozásához, illetve üzenetek törléséhez." @@ -27972,46 +27662,6 @@ msgstr "Kötelező" msgid "Required 2FA for moderation actions" msgstr "Moderálási műveletekhez 2FA szükséges" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Kötelező művelet alapértelmezett lapja" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Kötelező műveletfolyam" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Kötelező művelet: telefonszám megadása" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Kötelező művelet újraküldése folyamatban" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Kötelező művelet újraküldésének eredménye" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Kötelező művelet ismételt ellenőrzésének szövege" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Kötelező művelet változata" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Kötelező műveletek fedvénye" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "A bot meghívásához átirányítási URI és engedélyezési kód szükséges." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Megerősített e-mail-cím és legalább 5 perce létrehozott fiók szükséges." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Megerősített e-mail-cím szükséges." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Igazolt telefonszám szükséges." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "A közepes szint minden feltételét megköveteli, továbbá legalább 10 perces közösségi tagságot." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Újraküldés ({resendSecondsRemaining} mp múlva)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Újraküldés ({secondsRemaining} mp)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Újraküldés gomb betöltése" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Kód újraküldése" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "E-mail újraküldése" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Újraküldés eredménye" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Újraküldve" @@ -28518,21 +28152,6 @@ msgstr "Felfedés" msgid "Reveal spoiler" msgstr "Spoiler felfedése" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "A(z) {productName} további használatához erősítsd meg újra az e-mail-címedet, vagy igazold a telefonszámodat." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "A(z) {productName} további használatához erősítsd meg újra az e-mail-címedet." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "A(z) {productName} további használatához igazold újra a telefonszámodat." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Telítettség" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Előnézet tekerés közben" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Csatornák keresése" msgid "Search communities" msgstr "Közösségek keresése" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Országok keresése..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Országok keresése…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Válaszd ki a lakóhelyed szerinti országot." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Kiválasztás…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Küldés" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Küldés ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Másik bejelentés küldése" msgid "Send button" msgstr "Küldés gomb" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Kód küldése" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Üzenetek küldése" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Üzenetküldés letiltva" @@ -30151,32 +29759,11 @@ msgstr "Mentett média küldése: {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Felolvasandó üzenetek küldése a /tts paranccsal. Azok a tagok, akik bekapcsolták a szövegfelolvasást, hallják ezeket az üzeneteket." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Küldd el a(z) <0>{0} kódot ide: <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Küldd el a kódot az alábbi telefonszámra." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Küldd el ezt a kódot" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Visszaküldöd ezt a rögzítést az időben?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Küldés ide" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Hangüzenet küldése" msgid "Send:" msgstr "Küldés:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Túl drága lenne a(z) {PRODUCT_NAME} számára, ha SMS-t küldenénk erre a telefonszámra, ezért arra kérünk, hogy te küldj nekünk egy SMS-t. Tudjuk, hogy ez nem ideális. Megkérheted ennek a példánynak az adminisztrátorait is, hogy oldják fel ezt a korlátozást a fiókodon." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Túl drága lenne a(z) {PRODUCT_NAME} számára, ha SMS-t küldenénk erre a telefonszámra, ezért arra kérünk, hogy te küldj nekünk egy SMS-t. Tudjuk, hogy ez nem ideális. Felveheted a kapcsolatot a(z) <0>{SUPPORT_EMAIL} címen is, hogy feloldjuk ezt a korlátozást a fiókodon." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Sorrendben küldés" msgid "Serve the token file" msgstr "Tokenfájl kiszolgálása" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Szolgáltatási hiba" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Egyéni billentyűparancs beállítása ehhez: „{label}”" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Egyéni állapot beállítása" @@ -30486,18 +30060,6 @@ msgstr "A hangcsatorna régiója beállítva erre: {region}" msgid "Set the voice region to automatic" msgstr "A hangcsatorna régiójának automatikusra állítása" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Tedd félre ezt az ellenőrzést" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Elhalasztod ezt az ellenőrzést?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Névmások beállítása" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Állapot beállítása" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "A billentyűparancsok a rögzítés idejére szünetelnek." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Rövidítsd le az üzenetet, és próbáld újra." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "A(z) {productName} ikonjának megjelenítése az értesítési területen vagy a menüsoron" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Tartalmi figyelmeztetés megjelenítése" @@ -31672,7 +31234,7 @@ msgstr "Lassú mód · hátralévő várakozás: {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Lassú mód aktív" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "A lassú mód {durationLabel} értékre van állítva. Várj, mielőtt újabb üzenetet küldenél." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Lassú mód hátralévő ideje" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Lassú mód szimulálása" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Lassú mód hátralévő ideje" @@ -31807,11 +31369,6 @@ msgstr "Gördülékeny görgetés" msgid "Smoother video" msgstr "Folyamatosabb videó" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Az SMS-ellenőrzés jelenleg nem érhető el. Próbáld újra később, vagy fordulj az ügyfélszolgálathoz." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Hiba történt a matrica előkészítése során. Próbálj meg egy másik fájlt, vagy próbáld újra később." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Valami hiba történt a közzététel során. Próbáld meg később újra." @@ -32009,11 +31566,9 @@ msgstr "Valami hiba történt. Töltsd be újra az oldalt, vagy jelentkezz be is msgid "Something went wrong. Try again later." msgstr "Hiba történt. Próbáld újra később." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Hiba történt. Próbáld újra." @@ -32352,11 +31907,6 @@ msgstr "Az SSO-bejelentkezés időtúllépés miatt megszakadt. Próbáld újra. msgid "Staff controls" msgstr "Személyzeti vezérlők" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "A szolgáltatód szokásos üzenetküldési díjai érvényesek lehetnek." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Animáció kedvencnek jelölése" msgid "Starred channels" msgstr "Csillagozott csatornák" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Fogadó adatátviteli kapcsolata:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Előfizetés" @@ -33051,14 +32599,12 @@ msgstr "Előfizetési forgatókönyvek" msgid "Subtext" msgstr "Alcím" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Sikerült" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "A legtöbb közösség számára ajánlott" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Rendszer és üdvözlés" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Rendszerüzenetek a(z) {productName} munkatársaitól. Itt nem válaszolhatsz." @@ -33765,11 +33311,6 @@ msgstr "Szövegkijelölés" msgid "Text size" msgstr "Szövegméret" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Küldj nekünk SMS-t a telefonodról" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Thai" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Köszönjük, hogy segítesz megőrizni a(z) {productName} biztonságát. A bejelentésedet a lehető leghamarabb megvizsgáljuk." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Ez a kód nem működött. Ellenőrizd, és próbáld újra." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Ez a kód lejárt. Kérj új kódot." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Ez nem fejeződött be. Lehetséges, hogy egyes közösségekből már kiléptél, és a fiókod még mindig zárolva van. Nyomd meg újra a „Tedd félre ezt az ellenőrzést” gombot a befejezéshez." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Nem sikerült. Nem változott semmi. Próbáld újra." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Ez nem tűnik érvényes színnek. Próbálj meg hexadecimális, rgb(), msgid "That doesn't look like a valid URL." msgstr "Ez nem tűnik érvényes URL-nek." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Ez az e-mail-cím már használatban van." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "A felülbírálás megtagadta a(z) {permissions} hozzáférést" msgid "The page you're looking for doesn't exist or has been moved." msgstr "A keresett oldal nem létezik, vagy áthelyezték." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "A telefonos ellenőrzést félretetted. Még egy e-mailes lépés van hátra." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Nincsenek elérhető csatornák, amelyekhez meghívót lehetne létrehoz msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Jelenleg nincsenek kiosztható szerepkörök ebben a közösségben, de létrehozhatsz egy újat itt: <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Ehhez a csatornához nincsenek konfigurálva webhookok. Hozz létre egy webhookot, hogy külső alkalmazások üzeneteket küldhessenek." @@ -34273,7 +33784,7 @@ msgstr "Hiba történt a meghívók betöltésekor. Próbáld újra." msgid "There was an error loading the stickers. Try again." msgstr "Hiba történt a matricák betöltésekor. Próbáld újra." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Hiba történt a csatorna webhookjainak betöltésekor. Próbáld újra." @@ -34417,7 +33928,7 @@ msgstr "Ez a csatorna 10 üzenetet küldhet egymás után, majd továbbiakat 6 p msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Ez a csatorna 10 üzenetet küldhet egymás után, majd továbbiakat 6 percenként. Próbáld meg újra néhány perc múlva." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Ez a csatorna nem támogatja a webhookokat." @@ -34550,12 +34061,12 @@ msgstr "Ez a kapcsolat még nincs ellenőrizve." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Ez érzékeny tartalmat tartalmaz." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Ez a beszélgetés már nem elérhető." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Túl sokan vannak ebben a csoportban" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Ez a csoport megtelt. Távolíts el valakit, mielőtt további személyeket adnál hozzá." @@ -34715,11 +34226,6 @@ msgstr "Ez egy egyedi matrica egy közösségből." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Ez egy korhatáros csatorna. Frissítések csak korhatáros csatornákra küldhetők." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Ez egy spamellenőrzés. A telefonszámod nincs összekapcsolva a fiókoddal." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Ez le van tiltva" msgid "This is how messages appear" msgstr "Így jelennek meg az üzenetek" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Ez most nem érhető el a fiókodban. Kérd meg ennek a példánynak az adminisztrátorait, hogy vizsgálják felül." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Ez jelenleg nem érhető el a fiókodban. Írj e-mailt a(z) {supportEmail} címre, és egy munkatársunk átnézi." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Ez nem az a csatorna, amit keresel." @@ -34792,11 +34288,6 @@ msgstr "Ez az utolsó jelszókulcsod, és a jelszókulcsok a második hitelesít msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Ez az utolsó jelszókulcsod. Ha törlöd, nem tudsz többé jelszókulcsot használni második hitelesítési tényezőként." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Ez nem mobiltelefonszám, így nem tudunk rá SMS-t küldeni. Próbálkozz egy mobiltelefonszámmal, vagy vedd fel a kapcsolatot az ügyfélszolgálattal, ha úgy gondolod, hogy ez hiba." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Ezt az üzenetet már törölték." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Ez az üzenet már közzé lett téve" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Ez az üzenet már nem létezik." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Ez a becenév csak ebben a közösségben lesz látható" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Ezt a számot úgy igazolhatod, hogy te küldesz nekünk SMS-t. Lépj vissza, és indítsd újra a telefonos ellenőrzést, hogy megkapd az elküldendő kódot és a címzett telefonszámát." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Ezt a számot nekünk küldött SMS-sel kell igazolnod, tőlünk kapott SMS helyett." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Ennél a résztvevőnél ki van kapcsolva a hang" msgid "This participant was deafened by moderators" msgstr "A moderátorok kikapcsolták a hangot ennél a résztvevőnél" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Ez a telefonszám nem használható. Próbálj másik mobilszámot, vagy fordulj az ügyfélszolgálathoz." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Ezt a telefonszámot már használták. Próbálj másik számot, vagy fordulj az ügyfélszolgálathoz." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Ennek a felhasználónak nincsenek szerepkörei ebben a közösségben." msgid "This user is already banned from the community." msgstr "Ez a felhasználó már ki van tiltva a közösségből." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Ez a felhasználó már nem elérhető." @@ -35065,11 +34536,6 @@ msgstr "Ezt a felhasználót egy platformadminisztrátor közvetlenül hozzáadt msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Ez az ellenőrzési munkamenet lejárt. Térj vissza a(z) {productName} alkalmazásba, és indítsd újra a fizetést." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Ez az ellenőrzési munkamenet lejárt. Kezdd újra." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Ez kijelentkeztet, törli a gyorsítótárazott fájlokat és a mentett msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Ez megbízhatónak jelöl minden külső hivatkozást, és kihagyja a figyelmeztetést minden domain esetében. A meglévő megbízható domainjeid felülíródnak. Ez kevésbé biztonságos." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Ez az ablak automatikusan frissül, amint megkapjuk az üzenetedet." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Címsor" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Címsor platform" @@ -35470,18 +34931,11 @@ msgstr "Tónus" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "A HDR képek tónusleképezése normál tartományba, csökkentve a csúcsfényerőt." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Túl sok próbálkozás. Várj egy kicsit, majd próbáld újra." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Túl sok közösség" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Túl sok kérés. Próbáld újra később." @@ -36151,8 +35605,10 @@ msgstr "Nem sikerült előkészíteni egyetlen emojit sem a feltöltéshez. A k #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Nem elérhető" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Besorolatlan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Befejezetlen regisztrációjú fiók" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Rendezetlen" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Rögzítés feloldása" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Üzenet rögzítésének feloldása" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Feloldod ennek az üzenetnek a rögzítését?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Nem mentett változások" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Nem támogatott hangfájl." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Amíg vissza nem kapcsolom" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Nem ellenőrzött e-mail-cím" @@ -36958,12 +36414,7 @@ msgstr "Az üzenet megtekintéséhez frissítsd a(z) {productName} alkalmazást. msgid "Update app" msgstr "Alkalmazás frissítése" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "E-mail-cím módosítása" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Állapotom frissítése" @@ -37306,18 +36757,13 @@ msgstr "A kép URL-jének beillesztési helyén használd a(z) {url} helyőrzőt msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Külön ablakban állíthatod be az üzenetelőzmények küszöbdátumát a(z) {readMessageHistoryPermissionLabel} jogosultsággal nem rendelkező tagok számára." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Használj másik e-mail-címet, és erősítsd meg egy kóddal." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Tényleges állapot használata" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Tényleges prémiumtípus használata" @@ -37335,16 +36781,6 @@ msgstr "Másik fizetési mód használata" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Használj hitelesítő alkalmazást a kétlépcsős azonosításhoz szükséges kódok generálásához" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Olyan e-mail-címet használj, amit meg tudsz nyitni. Kódot küldünk oda." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Olyan e-mail-címet használj, amely eltér a jelenlegitől." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Sötét téma használata az alkalmazásban" msgid "Use default" msgstr "Alapértelmezett használata" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Másik e-mail-cím használata" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "E-mail használata" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Bekapcsolod a jelszókulcsos kétlépcsős azonosítást?" msgid "Use passkeys to sign in without a password" msgstr "Használj jelszókulcsokat a jelszó nélküli bejelentkezéshez" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Telefon használata" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Újraellenőrzési szöveg használata" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Felhasználó csatornát vált" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "A felhasználó nem található" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Ellenőrzés" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Ellenőrzés és tagsági korlátok" @@ -37970,15 +37387,8 @@ msgstr "Ellenőrző kód" msgid "Verification code sent" msgstr "Ellenőrző kód elküldve" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Az ellenőrző kódot elküldtük. Nézd meg az új e-mail-fiókod beérkezett üzeneteit." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Ellenőrző e-mail elküldve. Nézd meg a beérkező üzeneteidet." @@ -38038,23 +37448,6 @@ msgstr "Személyazonosság-ellenőrző űrlap" msgid "Verify it's you" msgstr "Igazold, hogy te vagy az" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Telefonszám ellenőrzése" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Telefonszám ellenőrzése" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Telefonszám-ellenőrző űrlap" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Hitelesítő alkalmazás hozzáadása előtt erősítsd meg az e-mail-címedet." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Erősítsd meg az e-mail-címedet, mielőtt módosítod a közösségi becenevedet, profilképedet, borítóképedet, bemutatkozásodat, névmásaidat vagy kiemelőszínedet." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Erősítsd meg az e-mail-címedet, mielőtt módosítod a felhasználónevedet, megjelenítendő nevedet, profilképedet, borítóképedet, bemutatkozásodat, névmásaidat, időzónádat vagy a(z) {premiumProductName} jelvényed adatvédelmi beállításait." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Erősítsd meg az e-mail-címedet a közösségi profil szerkesztése előtt. Az előnézetét itt továbbra is megtekintheted." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Erősítsd meg az e-mail-címedet a profilod szerkesztése előtt. Az előnézetét itt továbbra is megtekintheted." @@ -38113,11 +37506,6 @@ msgstr "Ismerősjelölések küldése előtt erősítsd meg az e-mail-címedet." msgid "Verify your email first" msgstr "Előbb erősítsd meg az e-mail-címedet" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "A(z) {productName} további használatához erősítsd meg az e-mail-címedet, vagy igazold a telefonszámodat." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Erősítsd meg az e-mail címedet az ajándékok vásárlásához." msgid "Verify your email to change your username" msgstr "A felhasználóneved módosításához erősítsd meg az e-mail-címedet" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "A(z) {productName} további használatához erősítsd meg az e-mail-címedet." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "A közösségi profil szerkesztéséhez erősítsd meg az e-mail-címedet" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "A profilod szerkesztéséhez erősítsd meg az e-mail-címedet" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Verzió" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Nagyon magas" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Hangerő növelése" msgid "Wait a moment before deleting more messages." msgstr "Várj egy pillanatot, mielőtt további üzeneteket törölsz." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Várj egy pillanatot. Ez az ablak automatikusan bezáródik, amint megkapjuk az üzenetedet." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Várakozás az üzenetek között. A(z) „{bypassSlowmodePermissionLabel}” jogosultsággal rendelkező tagok ezt megkerülhetik." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Várj itt" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Várakozás a jelszókulcsra…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Várakozás, amíg a lassú mód lejár a következő csatornán: {forwardChannelDisplayName}." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Várakozás, amíg a lassú mód lejár egy vagy több kiválasztott csatornán." @@ -39115,16 +38482,6 @@ msgstr "Nem tudtuk beolvasni ezt a témát. Lehet, hogy sérült vagy érvényte msgid "We couldn't remove that account. Try again." msgstr "Nem sikerült eltávolítani a fiókot. Próbáld újra." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Nem tudtuk automatikusan ellenőrizni ezt a számot. Vedd fel a kapcsolatot az ügyfélszolgálattal, és egy munkatárs átnézi a fiókodat." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Nem küldünk ellenőrző SMS-eket ebbe az országba. Próbálkozz egy másik országból származó mobilszámmal, vagy lépj kapcsolatba az ügyfélszolgálattal." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "A fiókhoz már tartozik {premiumProductFullName} előfizetés. A bizton msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Brazíliában csökkentettük a(z) {premiumProductName} árát. Mostantól havi {monthlyPrice}, vagy évi {yearlyPrice}." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "A folytatáshoz egy ellenőrzési lépés szükséges. Ez segít megvédeni a fiókokat és távol tartani a spamet a(z) {productName} felületétől." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Két ellenőrzési lépésre van szükségünk, mielőtt folytathatnád. Egyszerre egy lépést fogunk megjeleníteni." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Mentsd el most ezeket a kódokat, hogy később is hozzáférhess a fiókodhoz." @@ -39167,11 +38514,6 @@ msgstr "Kódot küldtünk a következő címre: {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Előre kitöltjük a(z) {prefillEmail} címet, amint megnyílik a böngészős bejelentkezés." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "SMS-kódot küldünk, amint elérhetővé válik." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Szívesen adnánk az életre szólónál is hosszabb {PREMIUM_PRODUCT_NAME}-hozzáférést, de az felborítaná a téridő-kontinuumot. Inkább elküldöd az ajándékot egy ismerősödnek?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "A lehető leghamarabb feldolgozzuk. E-mailt kapsz, ha az archívumod elkészült." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Visszaállítjuk az előző e-mail-címedet, kijelentkeztetjük a régi munkameneteket, eltávolítjuk a telefonszámokat, letiltjuk az MFA-t, és új jelszóval biztosítjuk a fiókodat." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Visszaállítjuk az előző e-mail címedet, kijelentkeztetünk a régi munkamenetekből, letiltjuk a többfaktoros hitelesítést, és új jelszóval biztosítjuk a fiókodat." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Jelszóváltoztatás előtt ellenőrző kódot küldünk az e-mail-címe msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "A biztonsági kódjaid megtekintése előtt ellenőrző kódot küldünk az e-mail-címedre." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "SMS-kódot küldünk, amint elérhető lesz. A számod nincs összekapcsolva a fiókoddal. Csak egy titkosított jelölőt tárolunk, felhasználói azonosító nélkül, korlátozott ideig." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Az egyszer használatos kódokkal ellenőrizzük a jelenlegi, majd az új e-mail-címedet." @@ -39307,7 +38645,7 @@ msgstr "Webhook: {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook létrehozva" @@ -39331,7 +38669,7 @@ msgstr "Webhook frissítve" msgid "Webhook URL" msgstr "Webhook URL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhookok" @@ -39486,8 +38824,8 @@ msgstr "A megosztott tartalom nem frissül" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Mi újság?" @@ -39967,21 +39305,11 @@ msgstr "A(z) <2>{rolesSettingsPath} beállításainál elveheted a(z) <0>{re msgid "You can sign back in at any time." msgstr "Bármikor újra bejelentkezhetsz." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Ennek a példánynak az adminisztrátoraitól bármikor kérhetsz emberi felülvizsgálatot." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Továbbra is létrehozhatsz fiókot vagy bejelentkezhetsz. Ha később újra engedélyezik a meghívókat, ugyanezzel a linkkel csatlakozhatsz." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Bármikor kérhetsz emberi felülvizsgálatot a(z) {supportEmail} címen." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Használhatsz linkeket, emojikat és Markdown-formázást." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Nem adhatsz hozzá kifejezéseket oda" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Az ideiglenes korlátozás alatt nem adhatsz hozzá új reakciókat." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Nem jelölheted be magad ismerősnek" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Itt nem módosíthatod a becenevedet" @@ -40094,7 +39422,7 @@ msgstr "Nem küldhetsz magadnak ismerősjelölést." msgid "You can't send messages in this channel." msgstr "Ebben a csatornában nem küldhetsz üzeneteket." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Ebben a közösségben nem küldhetsz üzeneteket." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Nincs jogosultságod ehhez a művelethez ennél a tagnál." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Nincs jogosultságod csatlakozni ehhez a hangcsatornához" @@ -40243,7 +39571,7 @@ msgstr "Nincs jogosultságod az emoji átnevezéséhez. A név visszaállt az er msgid "You have been banned from this community." msgstr "Ki lettél tiltva ebből a közösségből." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Letiltottad a(z) {username} felhasználót. Az üzenetküldéshez oldd fel a letiltását." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Nem mentett módosításaid vannak." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Nem mentett módosításaid vannak. Mentsd el vagy állítsd vissza, mielőtt elnavigálsz." @@ -40270,7 +39598,7 @@ msgstr "Nem mentett módosításaid vannak. Mentsd el vagy állítsd vissza, mie msgid "You haven't authorized any applications to access your account." msgstr "Még egyetlen alkalmazásnak sem adtál hozzáférést a fiókodhoz." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Még nem vagy elég régóta tagja ennek a közösségnek ahhoz, hogy üzeneteket küldhess." @@ -40326,11 +39654,6 @@ msgstr "A fiók létrehozásához el kell fogadnod a Szolgáltatási feltételek msgid "You must verify your email before sending a report." msgstr "Bejelentés küldése előtt meg kell erősítened az e-mail-címedet." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Az e-mail-címed megváltoztatásához hozzá kell férned a jelenlegi címedhez. Használj telefonos ellenőrzést, ha elérhető, vagy vedd fel a kapcsolatot az ügyfélszolgálattal." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "E jogosultságok szerkesztéséhez a(z) „{manageRolesPermissionLabel} msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "E jogosultságok szerkesztéséhez a(z) „{manageRolesPermissionLabel}” jogosultság szükséges." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "A(z) „{manageWebhooksPermissionLabel}” jogosultságra van szükséged ahhoz, hogy megtekinthesd és szerkeszthesd a csatorna webhookjait." @@ -40384,18 +39707,14 @@ msgstr "Közösség létrehozása előtt be kell fejezned a fiókod regisztráci msgid "You need to claim your account before you can start a direct message." msgstr "Közvetlen beszélgetés indítása előtt be kell fejezned a fiókod regisztrációját." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Közvetlen üzenetek küldéséhez be kell fejezned a fiókod regisztrációját." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Ahhoz, hogy ebben a közösségben üzeneteket küldhess, be kell fejezned a fiókod regisztrációját." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Telefonszámot kell igazolnod, hogy üzeneteket küldhess ebben a közösségben." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Közvetlen beszélgetés indítása előtt meg kell erősítened az e-ma msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Az e-mail-címedet igazolnod kell, mielőtt megvásárolhatnád a(z) {premiumProductFullName} terméket." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Ahhoz, hogy üzeneteket küldhess ebben a közösségben, igazolnod kell az e-mail-címedet." @@ -40424,11 +39743,6 @@ msgstr "Ahhoz, hogy üzeneteket küldhess ebben a közösségben, igazolnod kell msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Te vagy valamelyik hozzáadandó felhasználó már elérte a nyitott csoportos beszélgetések maximális számát. Lépj ki egyből, majd próbáld újra." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Itt maradsz: {ownedNames}. A tulajdonosok nem hagyhatják el a saját közösségüket." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "A moderátorok kikapcsolták nálad a hangot" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Az engedélyezés után átirányítjuk a következőre: {redirectHostname}." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Kilépsz {count, plural, one {# közösségből} other {# közösségből}}, amelyre ez az ellenőrzés vonatkozik, és a fiókod ismét rendesen fog működni." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Elhagyod ezeket: {guildNames}. Semmi sem törlődik abból, amit közzétettél, és később újra csatlakozhatsz." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Az e-mailes lépést még be kell fejezned." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Túl gyors vagy" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Túl gyorsan haladsz. Várj egy pillanatot, és próbáld újra." @@ -40636,7 +39935,7 @@ msgstr "Túl gyorsan küldesz üzeneteket" msgid "You're streaming!" msgstr "Élőben közvetítesz!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Ideiglenes korlátozás alatt állsz. A lejártáig nem küldhetsz üzeneteket, nem reagálhatsz és nem csatlakozhatsz hangbeszélgetéshez." @@ -40764,25 +40063,25 @@ msgstr "A(z) {storeName} megújítási fizetés sikertelen volt, de a(z) <0/> to msgid "Your account" msgstr "A fiókod" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Fiókod azonnal visszaáll a normál állapotba, és most nem lesz szükséged telefonszámra. Ez nem végleges mentesség, és később kérhetünk újabb ellenőrzést." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Fiókod sikeresen összekapcsolva. Most már bezárhatod ezt az oldalt, és visszatérhetsz az alkalmazásba." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "A fiókod ismét rendben van." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "A fiókod korlátozott" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Fiókod korlátozott. A korlátozás feloldásához ellenőrizd az e-mailjeidet." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "A fiókod regisztrációja még nincs befejezve. E-mail-cím és jelszó nélkül nem tudsz más eszközökről bejelentkezni, és elveszítheted a hozzáférést a fiókodhoz. Fejezd be most a regisztrációt, hogy biztonságban legyen a fiókod." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "A fiókod túl új ahhoz, hogy üzeneteket küldj ebben a közösségben." @@ -40800,11 +40099,6 @@ msgstr "A fiókodhoz többlépcsős azonosítás szükséges, de ezen az eszköz msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "A fiókodat már nem védi kétlépcsős azonosítás, amikor jelszóval jelentkezel be. Emellett elveszíted az emelt szintű jogosultságaidat azokban a közösségekben, amelyek kétlépcsős azonosítást követelnek meg." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "A fiókod azonnal újra a szokásos módon működik, és semmit sem távolítunk el. Később újra kérhetjük ezt az ellenőrzést." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Ellenőrizzük a kártyádat a helyi árazáshoz. Ez általában csak eg msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "A kártyád megfelel a feltételeknek. Most átirányítunk a fizetési oldalra." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "A szolgáltatód szerint ez a szám nem aktív. Ellenőrizd, és próbáld újra, vagy vedd fel a kapcsolatot az ügyfélszolgálattal, ha a szám helyes." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "A módosításaid eljutnak minden, ezt a csatornát követő közösséghez, ami egy percet vehet igénybe. Minden közzétett üzenetnél 3 gyors szerkesztés lehetséges, utána pedig 20 percenként 1." @@ -40869,21 +40158,6 @@ msgstr "Az eszközöd megkér, hogy ments el egy frissített jelszókulcsot ehhe msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Az eszközöd megkér, hogy ments el egy frissített jelszókulcsot ehhez: {name}. Használd ugyanazt a telefont vagy biztonsági kulcsot, amelyet az előbb használtál." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Az e-mail-címed frissült." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Az e-mail-címed nem tudott üzeneteket fogadni. Adj meg egy működő e-mail-címet, hogy elérhető maradjon a fiókod." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Az e-mail-címed nem tudott üzeneteket fogadni. Frissítsd, hogy továbbra is használni tudd a(z) {productName} alkalmazást." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Megerősítettük az e-mail-címedet. Most már bejelentkezhetsz a fiókodba." @@ -41000,21 +40274,11 @@ msgstr "Az üzenet frissítése sikertelen" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "A legutóbbi vásárlásod már kívül esik a visszatérítési időszakon. Számlázási problémák esetén vedd fel a kapcsolatot az ügyfélszolgálattal." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "az új e-mail-címed" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Az új beceneved, vagy hagyd üresen az alapértelmezés visszaállításához." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "A számod nincs összekapcsolva a fiókoddal. Csak egy titkosított jelölőt tárolunk, felhasználói azonosító nélkül, korlátozott ideig." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "A fizetés megszakadt. Most már bezárhatod ezt a lapot, és visszatérhetsz az alkalmazásba." @@ -41054,11 +40318,6 @@ msgstr "Megvásárolt ajándékaid" msgid "your region" msgstr "saját" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "A regisztrációdhoz még egy spamellenőrzés szükséges, mielőtt folytathatnád." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/id/messages.po b/fluxer_app/src/features/i18n/locales/id/messages.po index e9a2805f4..dc99dfa8f 100644 --- a/fluxer_app/src/features/i18n/locales/id/messages.po +++ b/fluxer_app/src/features/i18n/locales/id/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reaksi} other {# reaksi}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# orang} other {# orang}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# detik} other {# detik}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} pukul {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, other {Tautan undanganmu akan kedaluwarsa dalam # detik.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} dipilih" @@ -2252,7 +2252,7 @@ msgstr "1 menit" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 jam" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 bulan (1 tahun)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Pencadangan 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Wajib 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 anggota (mengetik)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 bulan" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 jam" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 bulan" @@ -2575,11 +2575,6 @@ msgstr "satu menit" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Versi desktop baru sudah tersedia. Unduh penginstalnya, lalu jalankan untuk memperbarui {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Kode verifikasi baru telah dikirim." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Data akun" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Akun ini ada untuk mengirim spam, menipu, atau menyalahgunakan platform." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Akun dibatasi" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Status akun" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Akun terlalu baru" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Verifikasi akun diperlukan" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Tambahkan bot ke komunitas dengan izin yang diminta" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Tambah komentar (opsional)" @@ -3054,8 +3052,10 @@ msgstr "Tambahkan topik ke saluran ini" msgid "Add a word…" msgstr "Tambahkan kata…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Tambahkan email yang aktif" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Tambahkan akun untuk melanjutkan." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Tambahkan email dan kata sandi ke akunmu terlebih dahulu." @@ -3424,11 +3424,6 @@ msgstr "Ditambahkan: {createdDate} • terakhir digunakan: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Komentar tambahan (opsional)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Verifikasi tambahan diperlukan" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Semua bahasa" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Sudah diatur untuk dibatalkan" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Laporkan juga pesan ini ke Tim Keamanan {productName}" @@ -4713,11 +4708,6 @@ msgstr "Tanyakan sebelum memulai panggilan" msgid "Ask for a passkey after your password when you sign in" msgstr "Minta passkey setelah kata sandimu saat kamu masuk" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Minta administrator instance ini untuk meninjau akunmu. Instance ini dijalankan secara independen, dan hanya administratornya yang dapat mengubah akunmu." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Hapus parameter pelacakan (seperti utm_source, fbclid, gclid) secara oto msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Hapus parameter pelacakan secara otomatis dari URL di pesan yang kamu kirim" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Saring pesan secara otomatis dari konten eksplisit di saluran yang tidak ditandai sebagai konten dewasa." @@ -5359,8 +5349,6 @@ msgstr "Sedang tidak di tempat" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Kembali" @@ -6506,11 +6494,6 @@ msgstr "Kamera dan perangkat tangkapan virtual dipilih di sini di {productName}, msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Kamera mati jika peserta lebih dari {voiceChannelCameraUserLimit}" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Tidak bisa mengakses email itu?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Tidak bisa mengunggah file di sini" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Tidak bisa mengunggah file di sini" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Ubah email" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Ganti emoji" @@ -7201,7 +7184,7 @@ msgstr "Mengubah batas pengguna dari {oldCount} menjadi {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Mengubah URL kustom dari {oldCode} menjadi {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Mengubah tingkat verifikasi dari {oldLevel} ke {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Saluran atau kategori" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Penggantian izin saluran" @@ -7509,8 +7492,6 @@ msgstr "Periksa koneksimu dan coba lagi." msgid "Check your connection, then try again." msgstr "Periksa koneksimu, lalu coba lagi." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Pilih layar di pemilih sistemmu" msgid "Choose a GIF" msgstr "Pilih GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Pilih metode" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Pilih kata sandi baru." @@ -7680,8 +7656,8 @@ msgstr "Pilih tindakan." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Pilih emoji" @@ -7749,11 +7725,6 @@ msgstr "Pilih cara kerja instance kamu" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Pilih salah satu metode di bawah untuk membuktikan kepemilikan domain. Kamu hanya perlu menyelesaikan satu." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Pilih salah satu metode verifikasi. Salah satu metode dapat menyelesaikan pemeriksaan ini." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Pilih apa yang dapat dilakukan {clientLabel} di komunitasmu. Hapus centa msgid "Choose what friends see in their active now panel" msgstr "Pilih apa yang dilihat teman di panel Aktif sekarang mereka" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Pilih apa yang harus dimiliki anggota sebelum mereka dapat memposting atau mengirim DM ke anggota komunitas." @@ -8030,8 +8001,8 @@ msgstr "Membersihkan mikrofonmu agar suara lebih jernih." msgid "Clear" msgstr "Hapus" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Hapus setelah" @@ -8053,7 +8024,7 @@ msgstr "Hapus semua lampiran tiruan" msgid "Clear all token overrides" msgstr "Hapus semua penggantian token" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Hapus lampiran tiruan" @@ -8066,14 +8037,14 @@ msgstr "Hapus perintah" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Hapus status kustom" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Hapus semua reaksi dari pesan ini?" @@ -8124,7 +8095,7 @@ msgstr "Hapus input pencarian" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Tema batu bara" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Perintah" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Komentar dinonaktifkan karena satu atau beberapa saluran yang dipilih mengaktifkan mode lambat. Komentar akan langsung diblokir mode lambat setelah pesan diteruskan." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Komentar dinonaktifkan karena mode lambat aktif di {forwardChannelDisplayName}. Komentar akan langsung diblokir mode lambat setelah pesan diteruskan." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Komentar tidak tersedia saat mode lambat aktif." @@ -8670,11 +8639,11 @@ msgstr "Komunitas" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Komunitas dan channel tempat Anda tidak dapat mengelola webhook akan disembunyikan." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Komunitas yang tercantum di Discovery wajib memindai pesan dari semua anggota. Pengaturan ini tidak dapat diubah selama Discovery aktif." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Komunitas yang tercantum di Discovery minimal memerlukan verifikasi email. Opsi \"Tidak ada\" tidak dapat dipilih selama Discovery aktif." @@ -8827,7 +8796,7 @@ msgstr "Nama komunitas" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Nama panggilan komunitas" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Profil komunitas" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Profil komunitas diperbarui" @@ -8907,7 +8876,7 @@ msgstr "Level lencana belum dibaca komunitas" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Komunitas diperbarui" @@ -8952,11 +8921,6 @@ msgstr "Perbandingan" msgid "Complete mature content check" msgstr "Selesaikan pemeriksaan konten dewasa" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Selesaikan salah satu jalur verifikasi di bawah untuk terus menggunakan {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Selesaikan pembayaran" msgid "Complete the mature content check to unlock mature media." msgstr "Selesaikan pemeriksaan konten dewasa untuk membuka media dewasa." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Selesaikan langkah verifikasi email dan telepon yang diperlukan di bawah untuk terus menggunakan {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Selesaikan verifikasi yang diperlukan untuk terus menggunakan {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Konfigurasi lencana profilmu" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Koneksi diurutkan ulang" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Perlu persetujuan" @@ -9349,16 +9304,6 @@ msgstr "Buat URL otorisasi dengan cakupan dan izin." msgid "Contact" msgstr "Kontak" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Hubungi dukungan" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Hubungi administrator instance ini untuk mendapatkan bantuan." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Kreator konten" msgid "Content filter" msgstr "Filter konten" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Filter konten" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Petunjuk konten" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Gerbang keamanan konten" @@ -9416,12 +9361,10 @@ msgstr "Menu konteks dapat dibuka dengan klik kiri (pada tombol) atau klik kanan #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Kontrol perilaku indikator belum dibaca untuk saluran yang dibisukan di msgid "Control which chat updates are announced by assistive technology." msgstr "Kontrol pembaruan obrolan mana yang diumumkan oleh teknologi bantu." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Percakapan tidak ditemukan" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Tidak dapat menambahkan tag" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Tidak dapat menambahkan teman ini ke grup. Silakan coba lagi." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Tidak dapat menambahkan ke grup" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Tidak dapat membuat tautan tema" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Tidak dapat membuat tautan undangan" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Tidak dapat mengakhiri masa tenggangmu" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Tidak dapat membuat tautan undangan. Silakan coba lagi." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Tidak dapat memproses gambar" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Tidak dapat mempublikasikan pesan ini" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Tidak dapat bergabung kembali ke komunitas Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Tidak dapat menghapus suara masuk" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Tidak dapat menyimpan pengaturan saluran" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Tidak dapat menyimpan suara masuk" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Tidak dapat menarik pengajuan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Timer hitung mundur" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Negara" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Buat akun administrator" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Buat DM grup dengan {addableCount, plural, other {# penerima yang tersisa}} dan lewati yang lain?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Buat webhook" @@ -10948,7 +10884,7 @@ msgstr "Emoji kustom {emojiName} dari komunitas" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Suara masuk khusus tidak diaktifkan di instance ini." @@ -11108,7 +11044,7 @@ msgstr "Pemrosesan suara khusus" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Teks peringatan khusus" @@ -11530,11 +11466,6 @@ msgstr "Mesin pencari default" msgid "Default shortcuts" msgstr "Pintasan default" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Tab default" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Hapus pesan ini" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Hapus pesan ini? Tidak dapat dibatalkan." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Hapus pesan ini? Tidak dapat dibatalkan. Pesan ini juga akan dihapus dari setiap komunitas yang mengikuti saluran ini." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Mode pengembang" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Opsi pengembang" @@ -12299,7 +12230,7 @@ msgstr "Input langsung" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Mode tampilan" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Nama tampilan" @@ -12858,7 +12789,7 @@ msgstr "Apakah Anda ingin bergabung dengan {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Dok, saya dari masa depan. Saya datang ke sini dengan mesin waktu yang kamu ciptakan. Sekarang, saya butuh bantuanmu untuk kembali ke tahun 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Edit waktu lokal profil" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Edit pesan yang dipublikasikan?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Edit pesan Anda di atas atau di bawah" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Edit tampilan profilmu dan lihat pratinjau langsung" @@ -13590,10 +13521,8 @@ msgstr "Memenuhi syarat untuk pengembalian dana hingga {windowEndsOn}. Ini juga msgid "Email" msgstr "Email" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Alamat email wajib diisi." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Email berhasil diubah" @@ -13616,49 +13547,17 @@ msgstr "Email berhasil diubah" msgid "Email delivery" msgstr "Pengiriman email" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Email atau telepon" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Verifikasi ulang email atau telepon diperlukan" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Verifikasi ulang email diperlukan" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Email tidak tersedia" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Pembaruan email tidak tersedia saat ini. Coba lagi nanti atau hubungi dukungan." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Pembaruan email diperlukan" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Kirim email kepada kami dan seseorang akan meninjau akunmu. Beri tahu kami bahwa kamu tidak dapat memverifikasi melalui SMS dan kami akan menanganinya. Balasan dikirim melalui email, jadi ini tidak instan." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Bilah notifikasi verifikasi email" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Verifikasi email diperlukan" @@ -13675,6 +13574,10 @@ msgstr "Penggantian email terverifikasi" msgid "Email verified successfully" msgstr "Email berhasil diverifikasi" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Email ke alamat Anda saat ini tidak terkirim. Masukkan email baru dan kami akan mengirimkan kode ke sana." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Sematan" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Sematan disembunyikan" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Sematan ditampilkan lagi" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Aktifkan pemutaran suara /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Aktifkan 2FA di akunmu untuk mengubah pengaturan ini" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Masukkan URL atau kode template {theOtherPlatform} yang valid." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Masukkan alamat email yang valid." @@ -14298,33 +14199,11 @@ msgstr "Masukkan alamat email yang valid." msgid "Enter a valid message link." msgstr "Masukkan tautan pesan yang valid." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Masukkan nomor ponsel yang valid." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Masukkan nomor telepon yang valid" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Masukkan nama pengguna yang valid ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Masukkan alamat email yang bisa kamu akses. Kami akan mengirimkan kode ke sana." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Masukkan kode" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Masuk mode layar penuh" msgid "Enter gift code…" msgstr "Masukkan kode hadiah…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Masukkan email baru" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Masukkan salah satu kode cadanganmu jika kamu tidak bisa menggunakan pas msgid "Enter one of your backup codes." msgstr "Masukkan salah satu kode cadanganmu." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Masukkan nomor telepon" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Masukkan kode {digitCount} digit dari aplikasi autentikatormu atau salah msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Masukkan kode {digitCount} digit dari aplikasi autentikatormu." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Masukkan kode {digitCount} digit yang dikirim ke {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Masukkan kode {MFA_CODE_DIGIT_COUNT} digit yang dikirim ke {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Masukkan kode" @@ -14408,11 +14267,6 @@ msgstr "Masukkan kode sebelum melanjutkan." msgid "Enter the code from your authenticator app." msgstr "Masukkan kode dari aplikasi autentikatormu." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Masukkan kode yang dikirim ke {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Masukkan kode yang dikirim ke emailmu saat ini." @@ -14426,6 +14280,7 @@ msgstr "Masukkan kode yang dikirim ke alamat emailmu." msgid "Enter the code shown in the app to continue." msgstr "Masukkan kode yang ditampilkan di aplikasi untuk melanjutkan." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Masukkan kode yang kami kirimkan ke alamat email barumu." @@ -14434,11 +14289,6 @@ msgstr "Masukkan kode yang kami kirimkan ke alamat email barumu." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Masukkan kode yang kami kirim ke emailmu untuk memverifikasinya. Kata sandimu akan diatur setelah kode dikonfirmasi." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Masukkan kode email" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Masukkan tautan undangan untuk bergabung ke komunitas." @@ -14452,11 +14302,6 @@ msgstr "Masukkan email baru yang ingin kamu gunakan. Kami akan mengirimkan kode msgid "Enter the PIN for your security key to continue." msgstr "Masukkan PIN kunci keamananmu untuk melanjutkan." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Masukkan kode SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Masukkan kode ini di browsermu untuk menyelesaikan proses masuk." @@ -14492,11 +14337,6 @@ msgstr "Masukkan namamu" msgid "Enter your password." msgstr "Masukkan kata sandimu." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Masukkan nomor teleponmu" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Suara masuk" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Ukuran file suara masuk harus {limit} atau kurang." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Pustaka suara masuk penuh" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Suara masuk dihapus" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Suara masuk disimpan" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Suara masuk" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Suara masuk tidak tersedia" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Kedaluwarsa:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Pengaturan filter konten eksplisit" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Gagal menyalin ke papan klip" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Gagal membuat webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Gagal memuat URL kustom. Coba lagi." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Gagal memuat webhook" @@ -15190,11 +15030,6 @@ msgstr "Gagal menghapus URL kustom. Coba lagi." msgid "Failed to resend code. Try again." msgstr "Gagal mengirim ulang kode. Coba lagi." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Gagal mengirim ulang kode verifikasi. Coba lagi nanti." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Gagal mengirim pesan. Tahan untuk opsi." msgid "Failed to send report. Try again." msgstr "Gagal mengirim laporan. Coba lagi." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Gagal mengirim email verifikasi. Coba lagi nanti." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Gagal memulai" @@ -15551,15 +15381,15 @@ msgstr "Filter berdasarkan pengguna" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filter semua orang" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filter anggota tanpa peran" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Ikuti saluran ini" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Ikuti untuk mendapatkan pengumuman ini di saluran yang Anda pilih." @@ -15773,7 +15603,7 @@ msgstr "Saluran yang diikuti {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Saluran yang diikuti" @@ -15857,11 +15687,6 @@ msgstr "Hanya untuk orang Inggris..." msgid "For me" msgstr "Untuk saya" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Untuk pemeriksaan ini, kamu mengirimkan SMS kepada kami, bukan menerima SMS dari kami." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Demi keamananmu, konfirmasi dulu bahwa ini benar kamu untuk melanjutkan." @@ -15905,7 +15730,7 @@ msgstr "Paksa kerangka pemuatan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Paksa media dewasa" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Paksa pindah ke saluran AFK" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Paksa tidak ada izin {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Paksa tampilkan penafian URL kustom" msgid "Force show voice connection" msgstr "Paksa tampilkan koneksi suara" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Paksa mode lambat aktif" @@ -16020,7 +15845,7 @@ msgstr "Teruskan media" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Teruskan pesan" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Overlay blokir geo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Dibatasi secara geografis" @@ -16490,12 +16315,6 @@ msgstr "Dapatkan avatar dan banner animasi, lencana pelanggan, tag empat digit y msgid "Get monthly" msgstr "Dapatkan bulanan" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Dapatkan kode baru" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Kode hadiah" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Durasi hadiah" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventaris hadiah" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Alur inventaris hadiah" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Hadiah tidak ditemukan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Hadiah ditukarkan" @@ -17030,7 +16849,7 @@ msgstr "Pesan langsung grup" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hai {displayName}, klaim akunmu agar tidak kehilangan akses." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hai {displayName}, mohon verifikasi alamat emailmu." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hai {displayName}, kami tidak dapat mengirim email ke alamat Anda. Tambahkan email yang valid untuk memverifikasi akun Anda." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Sembunyikan berbagi layarmu sendiri?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Tinggi" @@ -17755,11 +17579,6 @@ msgstr "Saya adalah tooltip" msgid "I changed my mind" msgstr "Saya berubah pikiran" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Saya butuh cara lain" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Jika laporan ini tentang pesan tertentu, laporkan pesan itu saja. Lapora msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Jika laporan ini tentang pesan tertentu, laporkan pesan yang paling relevan saja. Laporan pesan memberikan konteks yang paling jelas kepada tim keamanan kami, dan menambahkan detail di komentar dapat membantu kami meninjaunya lebih cepat. Lanjutkan melaporkan pengguna secara keseluruhan hanya jika melaporkan pesan tidak dapat menangkap masalah yang lebih luas." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Jika kamu tidak dapat memverifikasi melalui SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Jika kamu tidak dapat menggunakan metode verifikasi apa pun, hubungi dukungan untuk mendapatkan bantuan." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Ukuran antarmuka" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "File audio tidak valid" @@ -18674,8 +18483,10 @@ msgstr "JSON tidak valid. Tempel respons lengkap dari URL di atas." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Gabung panggilan suara" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Gabung ke saluran suara" @@ -19613,16 +19424,6 @@ msgstr "Selengkapnya tentang Visionary" msgid "Leave" msgstr "Keluar" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Tinggalkan {count, plural, one {# komunitas} other {# komunitas}} dan kesampingkan pemeriksaan ini?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Tinggalkan dan kesampingkan" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Biarkan pembaca layar mengumumkan pesan baru yang masuk di saluran yang sedang dibuka. Suara notifikasi tidak terpengaruh." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Biarkan komunitas memoderasi sendiri" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Pustaka" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Pustaka penuh (maks. {max} suara). Hapus satu sebelum menambahkan yang lain." @@ -19812,7 +19613,7 @@ msgstr "Pustaka: {count} dari {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Seumur hidup" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Memuat..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Memuat…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Rendah" @@ -20416,7 +20217,7 @@ msgstr "Kelola fitur komunitas" msgid "Manage emoji & stickers" msgstr "Kelola emoji & stiker" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Kelola webhook masuk yang dapat mengirim pesan ke saluran ini." @@ -20514,7 +20315,7 @@ msgstr "Langsung tandai semua saluran kotak masuk yang belum dibaca sebagai suda msgid "Mark as read" msgstr "Tandai sudah dibaca" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Tandai sebagai sudah ditukarkan" @@ -20676,14 +20477,14 @@ msgstr "Komunitas dewasa" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Konten dewasa" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Konten dewasa & peringatan konten" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Masa pakai maksimum (hari)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Perlindungan maksimal untuk ruang yang ramah keluarga" @@ -20924,7 +20725,7 @@ msgstr "Hentikan pemutaran" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Pemblokiran anggota dibatalkan" msgid "Member updated" msgstr "Anggota diperbarui" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Verifikasi anggota" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Level verifikasi anggota" @@ -21048,7 +20849,7 @@ msgstr "Anggota akan dikeluarkan saat offline kecuali diberi peran." msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Anggota dengan izin \"{pinMessagesPermissionLabel}\" dapat menyematkan pesan untuk semua orang." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Anggota dengan peran dapat melewati pemeriksaan ini. Untuk ruang publik, kami sarankan untuk mengaktifkan verifikasi." @@ -21153,7 +20954,7 @@ msgstr "Sebutan untukmu akan muncul di sini selama {retentionDays} hari." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Hanya sebutan" @@ -21292,7 +21093,7 @@ msgstr "Pengaturan tampilan pesan hanya tersedia di desktop." msgid "Message editing" msgstr "Edit pesan" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Pesan diteruskan" @@ -21341,7 +21142,7 @@ msgstr "Tombol input pesan" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Pesan terlalu panjang" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Pratinjau pesan di daftar DM" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Pesan dipublikasikan" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Pesan yang dipublikasikan di #{sourceName} kini akan muncul di #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Pesan yang dipublikasikan di saluran pengumuman ini disalin ke sini." @@ -21504,7 +21305,7 @@ msgstr "Pesan yang dipublikasikan di saluran pengumuman ini disalin ke saluran A msgid "Messages you can bookmark" msgstr "Pesan yang bisa Anda sematkan" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Pengiriman pesan di komunitas ini dijeda sementara." @@ -21733,30 +21534,30 @@ msgstr "Tiru kedaluwarsa dalam 1 hari" msgid "Mock expires in 7 days" msgstr "Tiru kedaluwarsa dalam 7 hari" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Overlay blokir geo tiruan" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Inventaris hadiah tiruan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Panggilan masuk tiruan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Alasan gerbang saluran konten dewasa tiruan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Alasan gerbang media konten dewasa tiruan" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Geo Inggris Raya tiruan" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Avatar pengguna tiruan dalam berbagai ukuran dan semua permutasi status." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Varian tiruan" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Alur produk tiruan" @@ -22698,14 +22494,16 @@ msgstr "Komunitas baru dibisukan" msgid "New direct message" msgstr "Pesan langsung baru" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Email baru" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formulir email baru" @@ -22816,9 +22614,7 @@ msgstr "Terbaru dulu" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Berikutnya" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Tidak" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Tidak ada izin {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Tidak ada izin {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Tidak ada perubahan untuk disimpan" msgid "No channels available" msgstr "Tidak ada saluran yang tersedia" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Tidak ada saluran yang ditemukan" @@ -23233,11 +23029,6 @@ msgstr "Tidak ada izin yang ditemukan" msgid "No personal words yet." msgstr "Belum ada kata pribadi." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Tidak ada nomor telepon" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Tidak ada hasil" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Tidak ada hasil" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Tidak ada pengguna yang ditemukan" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Tidak perlu verifikasi." @@ -23452,7 +23243,7 @@ msgstr "Tidak perlu verifikasi." msgid "No verification methods available" msgstr "Metode verifikasi tidak tersedia" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Tidak ada webhook" @@ -23504,7 +23295,7 @@ msgstr "Tanpa konversi" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Tidak ada" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Tidak ada (perilaku normal)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norwegia" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Belum cukup lama menjadi anggota" @@ -23798,9 +23589,9 @@ msgstr "Objek" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Nonaktif" @@ -23848,7 +23639,7 @@ msgstr "Terlama dulu" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Aktif" @@ -23884,11 +23675,6 @@ msgstr "Satu atau beberapa lampiran tidak dapat dibaca atau diunggah. File mungk msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Satu atau beberapa file yang kamu coba unggah melebihi batas ukuran maksimum {maxSizeFormatted} per file." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Satu pemeriksaan cepat" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Hanya speaker" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Hanya pemilik komunitas yang dapat mengubah pengaturan ini" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Buka emoji di browser" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Buka pemilih emoji" @@ -24382,12 +24168,8 @@ msgstr "Buka menu" msgid "Open message history threshold" msgstr "Buka batas riwayat pesan" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Buka overlay" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Buka popup" @@ -24485,11 +24267,6 @@ msgstr "Buka aplikasi baru. Kamu sudah masuk." msgid "Open the shortcuts list for quick actions." msgstr "Buka daftar pintasan untuk tindakan cepat." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Buka email verifikasi dan gunakan tautan di dalamnya. Jendela ini akan diperbarui setelah tautan terbuka." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Buka pengaturan suara & video" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Buka browsermu, masuk, lalu masukkan kode di bawah untuk menautkan akunmu." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Buka pesanmu" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Buka aplikasi {PRODUCT_NAME} lamamu dan pilih Tautkan perangkat baru, lalu masukkan kode di bawah ini." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Buka aplikasi pesan di ponselmu dan buat pesan teks baru." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Buka aplikasi pesan di ponselmu dan mulai pesan teks baru." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Reaksi lain…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Pemeriksaan nomor telepon kami sedang tidak berfungsi. Ini masalah di sisi kami, bukan nomormu. Tunggu beberapa menit, lalu coba nomor yang sama lagi." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, penipuan, tautan berbahaya, atau klaim palsu yang berpotensi menimbulkan kerugian di dunia nyata." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telepon" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Nomor telepon" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Nomor telepon wajib diisi" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Nomor telepon terverifikasi" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Verifikasi ulang telepon diperlukan" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Langkah telepon" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Verifikasi telepon tidak tersedia untuk akun ini. Gunakan metode lain atau hubungi dukungan." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Verifikasi telepon diperlukan" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Pilih angka 4 digit setelah nama pengguna Anda" msgid "Pick the appearance this administrator account should start with." msgstr "Pilih tampilan awal untuk akun administrator ini." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Pilih metode yang bisa kamu selesaikan sekarang." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Gambar dalam gambar" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Sematkan" @@ -25471,7 +25176,7 @@ msgstr "Sematkan DM grup" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Sematkan atau batalkan sematan pesan apa pun." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Sematkan pesan ini ke saluran agar semua orang bisa melihatnya." @@ -26227,18 +25932,18 @@ msgstr "Warna profil" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Kustomisasi profil" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Kustomisasi profil untuk {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formulir kustomisasi profil" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Jenis profil" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profil diperbarui" @@ -26340,7 +26045,7 @@ msgstr "Tanya saat ada perangkat audio baru" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Koordinasi penyerangan" msgid "Rate" msgstr "Kecepatan" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Dibatasi kecepatan" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "JSON sematan mentah" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Hapus {userName} dari daftar temanmu?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Hapus semua" @@ -27290,7 +26990,7 @@ msgstr "Hapus semua reaksi {emojiNameWithColons} dari pesan ini?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Hapus semua reaksi" @@ -27899,20 +27599,10 @@ msgstr "Tag pengguna yang dilaporkan (opsional)" msgid "Reposts: <0>{countLabel}" msgstr "Postingan ulang: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Minta kode baru terlebih dahulu." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Minta tautan setel ulang baru" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Minta kode verifikasi terlebih dahulu." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Permintaan" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Wajibkan 2FA untuk tindakan moderasi" @@ -27958,7 +27648,7 @@ msgstr "Wajibkan pemberian kode OAuth2" msgid "Require passkey" msgstr "Wajibkan passkey" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Wajibkan autentikasi dua faktor untuk moderator sebelum mereka dapat memblokir, mengeluarkan, memberi batas waktu, atau menghapus pesan." @@ -27972,46 +27662,6 @@ msgstr "Wajib" msgid "Required 2FA for moderation actions" msgstr "Mewajibkan 2FA untuk tindakan moderasi" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Tab default tindakan wajib" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Alur tindakan wajib" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Langkah telepon tindakan wajib" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Memuat kirim ulang tindakan wajib" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Hasil kirim ulang tindakan wajib" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Teks verifikasi ulang tindakan wajib" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Varian tindakan wajib" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Overlay tindakan wajib" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Memerlukan URI pengalihan dan kode otorisasi saat mengundang bot ini." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Memerlukan alamat email terverifikasi dan akun yang berusia minimal 5 menit." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Memerlukan alamat email terverifikasi." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Memerlukan nomor telepon terverifikasi." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Memerlukan semua yang ada di tingkat sedang, ditambah menjadi anggota komunitas setidaknya selama 10 menit." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Kirim ulang ({resendSecondsRemaining} dtk)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Kirim ulang ({secondsRemaining} dtk)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Tombol kirim ulang sedang memuat" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Kirim ulang kode" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Kirim ulang email" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Hasil kirim ulang" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Dikirim ulang" @@ -28518,21 +28152,6 @@ msgstr "Tampilkan" msgid "Reveal spoiler" msgstr "Tampilkan spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Verifikasi ulang email Anda atau verifikasi telepon Anda untuk terus menggunakan {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Verifikasi ulang email Anda untuk terus menggunakan {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Verifikasi ulang nomor telepon Anda untuk melanjutkan penggunaan {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Saturasi" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Pratinjau geser video" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Cari saluran" msgid "Search communities" msgstr "Cari komunitas" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Cari negara..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Cari negara…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Pilih negara tempat tinggalmu." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Pilih…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Kirim" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Kirim ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Kirim laporan lain" msgid "Send button" msgstr "Tombol kirim" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Kirim kode" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Kirim pesan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Pengiriman pesan dinonaktifkan" @@ -30151,32 +29759,11 @@ msgstr "Kirim media tersimpan {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Kirim pesan text-to-speech dengan /tts. Anggota yang mengaktifkan text-to-speech akan mendengarnya dibacakan." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Kirim kode <0>{0} ke <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Kirim kode ke nomor telepon di bawah." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Kirim kode ini" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Kirim sematan ini kembali ke masa lalu?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Kirim ke" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Kirim pesan suara" msgid "Send:" msgstr "Kirim:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Mengirim SMS ke nomor telepon ini terlalu mahal untuk {PRODUCT_NAME}, jadi kami minta kamu yang mengirim SMS ke kami. Kami tahu ini kurang ideal. Kamu juga bisa meminta administrator instance ini untuk menghapus persyaratan ini dari akunmu." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Mengirim SMS ke nomor telepon ini terlalu mahal untuk {PRODUCT_NAME}, jadi kami minta kamu yang mengirim SMS ke kami. Kami tahu ini kurang ideal. Kamu juga bisa menghubungi <0>{SUPPORT_EMAIL} agar kami menghapus persyaratan ini dari akunmu." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Kirim satu per satu" msgid "Serve the token file" msgstr "Sajikan file token" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Kesalahan layanan" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Atur pintasan khusus untuk \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Atur status kustom" @@ -30486,18 +30060,6 @@ msgstr "Mengatur wilayah suara ke {region}" msgid "Set the voice region to automatic" msgstr "Mengatur wilayah suara ke otomatis" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Kesampingkan pemeriksaan ini" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Kesampingkan pemeriksaan ini?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Atur kata gantimu" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Atur statusmu" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Pintasan dijeda selama perekaman." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Persingkat pesan dan coba lagi." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Tampilkan ikon {productName} di baki sistem atau bilah menu" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Tampilkan peringatan konten" @@ -31672,7 +31234,7 @@ msgstr "Mode lambat · tunggu {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Mode lambat aktif" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Mode lambat diatur ke {durationLabel}. Tunggu sebelum mengirim pesan lagi." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Sisa mode lambat" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulasi mode lambat" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Sisa waktu mode lambat" @@ -31807,11 +31369,6 @@ msgstr "Gulir mulus" msgid "Smoother video" msgstr "Video lebih lancar" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Verifikasi SMS tidak tersedia saat ini. Coba lagi nanti atau hubungi dukungan." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Terjadi kesalahan saat menyiapkan stiker ini. Coba file lain atau coba lagi sebentar lagi." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Terjadi kesalahan saat mempublikasikan. Coba lagi sebentar lagi." @@ -32009,11 +31566,9 @@ msgstr "Terjadi kesalahan. Muat ulang halaman atau masuk lagi." msgid "Something went wrong. Try again later." msgstr "Terjadi kesalahan. Coba lagi nanti." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Terjadi kesalahan. Coba lagi." @@ -32352,11 +31907,6 @@ msgstr "Waktu masuk SSO habis. Coba lagi." msgid "Staff controls" msgstr "Kontrol staf" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Tarif pesan standar dari operatormu mungkin berlaku." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Animasi bintang" msgid "Starred channels" msgstr "Saluran berbintang" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Transport subscriber:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Langganan" @@ -33051,14 +32599,12 @@ msgstr "Skenario langganan" msgid "Subtext" msgstr "Subteks" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Berhasil" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Disarankan untuk sebagian besar komunitas" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Sistem & sambutan" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Pengumuman sistem dari staf {productName}. Kamu tidak bisa membalas di sini." @@ -33765,11 +33311,6 @@ msgstr "Pilihan teks" msgid "Text size" msgstr "Ukuran teks" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Kirim SMS ke kami dari ponselmu" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Thailand" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Terima kasih telah membantu menjaga {productName} tetap aman. Kami akan meninjau laporanmu sesegera mungkin." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Kode itu tidak berfungsi. Periksa dan coba lagi." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Kode tersebut sudah kedaluwarsa. Minta kode baru." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Proses itu tidak selesai. Beberapa komunitas mungkin sudah ditinggalkan, dan akunmu masih terkunci. Tekan Tunda pemeriksaan ini lagi untuk menyelesaikannya." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Itu tidak berhasil. Tidak ada yang berubah. Coba lagi." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Itu bukan warna yang valid. Coba hex, rgb(), hsl(), atau nama warna CSS. msgid "That doesn't look like a valid URL." msgstr "Itu bukan URL yang valid." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Email tersebut sudah digunakan." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Penimpaan tersebut menolak {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Halaman yang kamu cari tidak ada atau sudah dipindahkan." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Pemeriksaan telepon ditunda. Tinggal satu langkah email lagi." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Tidak ada saluran yang tersedia untuk dibuatkan undangan." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Saat ini tidak ada peran untuk ditetapkan di komunitas ini, tetapi kamu bisa membuat peran baru di <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Tidak ada webhook yang dikonfigurasi untuk saluran ini. Buat webhook agar aplikasi eksternal dapat mengirim pesan." @@ -34273,7 +33784,7 @@ msgstr "Terjadi error saat memuat undangan. Coba lagi." msgid "There was an error loading the stickers. Try again." msgstr "Terjadi error saat memuat stiker. Coba lagi." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Terjadi error saat memuat webhook untuk saluran ini. Coba lagi." @@ -34417,7 +33928,7 @@ msgstr "Saluran ini dapat mempublikasikan 10 pesan berturut-turut, lalu satu lag msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Saluran ini dapat mempublikasikan 10 pesan berturut-turut, lalu satu lagi setiap 6 menit. Coba lagi dalam beberapa menit." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Saluran ini tidak mendukung webhook." @@ -34550,12 +34061,12 @@ msgstr "Koneksi ini belum diverifikasi." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Ini berisi konten sensitif." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Percakapan ini sudah tidak tersedia." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Grup ini terlalu banyak orangnya" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Grup ini penuh. Keluarkan seseorang sebelum menambahkan orang lain." @@ -34715,11 +34226,6 @@ msgstr "Ini adalah stiker kustom dari sebuah komunitas." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Saluran ini dibatasi usia. Pembaruan hanya dapat dikirim ke saluran yang dibatasi usia." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Ini adalah pemeriksaan antispam. Nomor teleponmu tidak ditautkan ke akunmu." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Ini dinonaktifkan" msgid "This is how messages appear" msgstr "Begini tampilan pesan" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Ini tidak tersedia untuk akunmu saat ini. Minta administrator instance ini untuk meninjaunya." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Ini tidak tersedia di akunmu saat ini. Kirim email ke {supportEmail} dan seseorang akan meninjaunya." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Ini bukan saluran yang kamu cari." @@ -34792,11 +34288,6 @@ msgstr "Ini passkey terakhirmu dan passkey adalah faktor keduamu. Menghapusnya a msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Ini passkey terakhirmu. Setelah dihapus, kamu tidak bisa lagi menggunakan passkey sebagai faktor keduamu." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Ini bukan nomor ponsel, jadi tidak bisa menerima SMS kami. Coba gunakan nomor ponsel, atau hubungi dukungan jika kamu merasa ini salah." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Pesan ini sudah dihapus." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Pesan ini sudah dipublikasikan" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Pesan ini sudah tidak ada." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Nama panggilan ini hanya akan terlihat di komunitas ini" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Nomor ini diverifikasi dengan mengirim SMS ke kami. Kembali dan mulai lagi verifikasi telepon untuk mendapatkan kode dan nomor tujuan SMS-nya." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Nomor ini perlu diverifikasi dengan mengirim SMS ke kami, bukan menerima SMS dari kami." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Suara masuk peserta ini dibisukan" msgid "This participant was deafened by moderators" msgstr "Suara masuk peserta ini dibisukan oleh moderator" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Nomor telepon ini tidak dapat digunakan. Coba nomor ponsel lain atau hubungi dukungan." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Nomor telepon ini sudah digunakan. Coba nomor lain atau hubungi dukungan." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Pengguna ini tidak memiliki peran di komunitas ini." msgid "This user is already banned from the community." msgstr "Pengguna ini sudah diblokir dari komunitas." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Pengguna ini sudah tidak tersedia." @@ -35065,11 +34536,6 @@ msgstr "Pengguna ini ditambahkan secara paksa ke komunitas ini oleh administrato msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Sesi verifikasi ini telah kedaluwarsa. Kembali ke {productName} dan mulai pembayaran lagi." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Sesi verifikasi ini telah kedaluwarsa. Mulai lagi." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Ini akan mengeluarkanmu dari akun, menghapus file cache dan sesi tersimp msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Ini akan memercayai semua tautan eksternal dan melewati peringatan untuk setiap domain. Domain tepercayamu yang sudah ada akan diganti. Ini kurang aman." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Jendela ini akan diperbarui secara otomatis setelah kami menerima pesanmu." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Bilah judul" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Platform bilah judul" @@ -35470,18 +34931,11 @@ msgstr "Nada" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Petakan nada gambar HDR ke rentang standar untuk mengurangi kecerahan puncak." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Terlalu banyak percobaan. Tunggu sebentar, lalu coba lagi." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Terlalu banyak komunitas" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Terlalu banyak permintaan. Coba lagi nanti." @@ -36151,8 +35605,10 @@ msgstr "Tidak ada emoji yang dapat disiapkan untuk diunggah. Terjadi kesalahan b #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Tidak tersedia" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Tanpa kategori" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Akun belum diklaim" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Tanpa nomor" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Lepas sematan" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Lepas sematan pesan" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Lepas sematan pesan ini?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Perubahan belum disimpan" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "File audio tidak didukung." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Sampai saya mengaktifkannya lagi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Email belum terverifikasi" @@ -36958,12 +36414,7 @@ msgstr "Perbarui {productName} untuk melihat pesan ini." msgid "Update app" msgstr "Perbarui aplikasi" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Perbarui email" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Perbarui status saya" @@ -37306,18 +36757,13 @@ msgstr "Gunakan {url} di tempat URL gambar akan disisipkan." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Gunakan modal khusus untuk menetapkan tanggal batas riwayat pesan bagi anggota yang tidak memiliki izin {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Gunakan alamat email lain dan verifikasi dengan kode." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Gunakan yang sebenarnya" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Gunakan tipe premium sebenarnya" @@ -37335,16 +36781,6 @@ msgstr "Gunakan metode alternatif" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Gunakan aplikasi autentikator untuk membuat kode autentikasi dua faktor" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Gunakan email yang bisa kamu akses. Kami akan mengirimkan kode ke sana." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Gunakan email yang berbeda dari emailmu saat ini." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Gunakan tema gelap di seluruh aplikasi" msgid "Use default" msgstr "Gunakan default" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Gunakan email lain" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Gunakan email" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Gunakan passkey untuk autentikasi dua faktor?" msgid "Use passkeys to sign in without a password" msgstr "Gunakan passkey untuk masuk tanpa kata sandi" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Gunakan telepon" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Gunakan teks verifikasi ulang" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Pengguna berpindah saluran" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Pengguna tidak ditemukan" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Verifikasi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Pembatas verifikasi & keanggotaan" @@ -37970,15 +37387,8 @@ msgstr "Kode verifikasi" msgid "Verification code sent" msgstr "Kode verifikasi terkirim" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Kode verifikasi terkirim. Periksa kotak masuk email barumu." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Email verifikasi telah dikirim. Periksa kotak masukmu." @@ -38038,23 +37448,6 @@ msgstr "Formulir verifikasi identitas" msgid "Verify it's you" msgstr "Verifikasi bahwa ini kamu" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Verifikasi telepon" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Verifikasi nomor telepon" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formulir verifikasi nomor telepon" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Verifikasi emailmu sebelum menambahkan aplikasi autentikator." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Verifikasi emailmu sebelum mengubah nama panggilan komunitas, avatar, banner, bio, kata ganti, atau warna aksenmu." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Verifikasi emailmu sebelum mengubah nama pengguna, nama tampilan, avatar, banner, bio, kata ganti, zona waktu, atau privasi lencana {premiumProductName} milikmu." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Verifikasi emailmu sebelum mengedit profil komunitas ini. Kamu masih bisa melihat pratinjaunya di sini." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Verifikasi emailmu sebelum mengedit profil. Kamu masih bisa melihat pratinjaunya di sini." @@ -38113,11 +37506,6 @@ msgstr "Verifikasi emailmu sebelum mengirim permintaan pertemanan." msgid "Verify your email first" msgstr "Verifikasi emailmu terlebih dahulu" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Verifikasi email atau teleponmu untuk terus menggunakan {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Verifikasi email Anda untuk membeli hadiah." msgid "Verify your email to change your username" msgstr "Verifikasi emailmu untuk mengubah nama pengguna" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Verifikasi emailmu untuk terus menggunakan {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Verifikasi emailmu untuk mengedit profil komunitas ini" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Verifikasi emailmu untuk mengedit profil" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Versi" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Sangat tinggi" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Naikkan volume" msgid "Wait a moment before deleting more messages." msgstr "Tunggu sebentar sebelum menghapus pesan lagi." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Tunggu sebentar. Jendela ini akan tertutup otomatis setelah kami menerima pesanmu." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Jeda antar pesan. Anggota dengan \"{bypassSlowmodePermissionLabel}\" dapat melewati ini." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Tunggu di sini" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Menunggu passkey…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Menunggu mode lambat di {forwardChannelDisplayName} berakhir." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Menunggu mode lambat di satu atau beberapa saluran yang dipilih berakhir." @@ -39115,16 +38482,6 @@ msgstr "Kami tidak dapat membaca tema ini. Mungkin rusak atau tidak valid." msgid "We couldn't remove that account. Try again." msgstr "Kami tidak dapat menghapus akun tersebut. Coba lagi." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Kami tidak dapat memverifikasi nomor ini secara otomatis. Hubungi dukungan dan seseorang akan meninjau akunmu." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Kami tidak mengirim SMS verifikasi ke negara ini. Coba nomor ponsel dari negara lain, atau hubungi dukungan." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Kami menemukan langganan {premiumProductFullName} yang sudah ada untuk a msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Kami menurunkan harga {premiumProductName} di Brasil. Harganya kini {monthlyPrice} per bulan atau {yearlyPrice} per tahun." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Kami memerlukan satu langkah verifikasi sebelum kamu melanjutkan. Ini membantu melindungi akun dan menjaga {productName} bebas dari spam." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Kami memerlukan dua langkah verifikasi sebelum kamu melanjutkan. Kami akan menampilkan satu langkah pada satu waktu." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Kami sarankan kamu menyimpan kode ini sekarang agar tidak terkunci dari akunmu." @@ -39167,11 +38514,6 @@ msgstr "Kami telah mengirim kode ke {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Kami akan mengisi otomatis {prefillEmail} setelah login browser terbuka." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Kami akan mengirimkan kode SMS jika tersedia." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Kami ingin sekali memberimu lebih dari {PREMIUM_PRODUCT_NAME} seumur hidup, tetapi itu akan merusak ruang-waktu. Kirim hadiahnya ke teman saja?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Kami akan memproses ini sesegera mungkin. Kamu akan menerima email saat arsipmu siap." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Kami akan memulihkan email lamamu, mengeluarkan sesi lama, menghapus nomor telepon, menonaktifkan MFA, dan mengamankan akunmu dengan kata sandi baru." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Kami akan memulihkan email Anda sebelumnya, keluar dari sesi lama, menonaktifkan MFA, dan mengamankan akun Anda dengan kata sandi baru." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Kami akan mengirimkan kode verifikasi ke emailmu sebelum kamu dapat meng msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Kami akan mengirimkan kode verifikasi ke emailmu sebelum kamu dapat melihat kode cadanganmu." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Kami akan mengirimkan kode SMS jika tersedia. Nomor Anda tidak ditautkan ke akun Anda. Kami hanya menyimpan penanda terenkripsi, tanpa ID pengguna, untuk waktu terbatas." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Kami akan memverifikasi emailmu saat ini, lalu email barumu dengan kode satu kali." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook dibuat" @@ -39331,7 +38669,7 @@ msgstr "Webhook diperbarui" msgid "Webhook URL" msgstr "URL webhook" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhook" @@ -39486,8 +38824,8 @@ msgstr "Apa yang Anda bagikan tidak diperbarui" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Ada apa?" @@ -39967,21 +39305,11 @@ msgstr "Kamu dapat menghapus izin <0>{readMessageHistoryPermissionLabel} dar msgid "You can sign back in at any time." msgstr "Kamu dapat masuk kembali kapan saja." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Kamu tetap bisa meminta peninjauan oleh manusia dari administrator instance ini kapan saja." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Kamu masih bisa membuat akun atau masuk. Jika undangan diaktifkan kembali nanti, kamu bisa memakai tautan yang sama untuk bergabung." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Kamu masih dapat mengirim email ke {supportEmail} untuk peninjauan manual kapan saja." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Kamu bisa pakai tautan, emoji, dan Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Kamu tidak dapat menambahkan ekspresi di sana" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Kamu tidak bisa menambahkan reaksi baru saat sedang diberi batas waktu." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Kamu tidak bisa berteman dengan diri sendiri" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Kamu tidak dapat mengubah nama panggilan di sini" @@ -40094,7 +39422,7 @@ msgstr "Kamu tidak bisa mengirim permintaan pertemanan ke diri sendiri." msgid "You can't send messages in this channel." msgstr "Kamu tidak dapat mengirim pesan di saluran ini." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Kamu tidak dapat mengirim pesan di komunitas ini." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Kamu tidak memiliki izin untuk melakukan ini pada anggota ini." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Kamu tidak memiliki izin untuk bergabung ke saluran suara ini" @@ -40243,7 +39571,7 @@ msgstr "Kamu tidak memiliki izin untuk mengganti nama emoji ini. Nama dikembalik msgid "You have been banned from this community." msgstr "Kamu telah diblokir dari komunitas ini." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Kamu telah memblokir {username}. Buka blokirnya untuk mengirim pesan." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Ada perubahan yang belum disimpan." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Ada perubahan yang belum disimpan. Simpan atau setel ulang sebelum keluar." @@ -40270,7 +39598,7 @@ msgstr "Ada perubahan yang belum disimpan. Simpan atau setel ulang sebelum kelua msgid "You haven't authorized any applications to access your account." msgstr "Kamu belum mengizinkan aplikasi apa pun untuk mengakses akunmu." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Kamu belum cukup lama menjadi anggota komunitas ini untuk bisa mengirim pesan." @@ -40326,11 +39654,6 @@ msgstr "Kamu harus menyetujui ketentuan layanan untuk membuat akun" msgid "You must verify your email before sending a report." msgstr "Kamu harus memverifikasi emailmu sebelum mengirim laporan." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Kamu perlu akses ke email saat ini untuk mengubahnya dari sini. Gunakan verifikasi telepon jika tersedia atau hubungi dukungan." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Kamu memerlukan izin \"{manageRolesPermissionLabel}\" untuk mengedit izi msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Kamu memerlukan izin \"{manageRolesPermissionLabel}\" untuk mengedit izin ini." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Kamu memerlukan izin \"{manageWebhooksPermissionLabel}\" untuk melihat dan mengedit webhook untuk saluran ini." @@ -40384,18 +39707,14 @@ msgstr "Kamu perlu mengklaim akunmu sebelum bisa membuat komunitas." msgid "You need to claim your account before you can start a direct message." msgstr "Kamu perlu mengklaim akunmu sebelum bisa memulai pesan langsung." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Kamu perlu mengklaim akunmu untuk mengirim pesan langsung." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Kamu perlu mengklaim akunmu untuk mengirim pesan di komunitas ini." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Kamu perlu memverifikasi nomor telepon untuk mengirim pesan di komunitas ini." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Kamu perlu memverifikasi alamat emailmu sebelum bisa memulai pesan langs msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Kamu perlu memverifikasi emailmu sebelum bisa membeli {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Kamu perlu memverifikasi email untuk mengirim pesan di komunitas ini." @@ -40424,11 +39743,6 @@ msgstr "Kamu perlu memverifikasi email untuk mengirim pesan di komunitas ini." msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Kamu atau orang yang kamu tambahkan sudah mencapai jumlah maksimum DM grup yang terbuka. Keluar dari salah satunya lalu coba lagi." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Kamu tetap berada di {ownedNames}. Pemilik tidak bisa keluar dari komunitasnya sendiri." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Suara masukmu dibisukan oleh moderator" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Kamu akan diarahkan ke {redirectHostname} setelah memberikan otorisasi." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Kamu akan keluar dari {count, plural, one {# komunitas} other {# komunitas}} yang terkena pemeriksaan ini, dan akunmu akan berfungsi normal lagi." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Kamu akan keluar dari {guildNames}. Tidak ada yang pernah kamu kirim yang dihapus, dan kamu bisa bergabung lagi nanti." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Kamu masih perlu menyelesaikan langkah email." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Kamu terlalu cepat" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Kamu terlalu cepat. Tunggu sebentar dan coba lagi." @@ -40636,7 +39935,7 @@ msgstr "Kamu mengirim pesan terlalu cepat" msgid "You're streaming!" msgstr "Kamu sedang streaming!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Kamu sedang diberi batas waktu. Pesan, reaksi, dan suara dijeda sampai batas waktunya berakhir." @@ -40764,25 +40063,25 @@ msgstr "Pembayaran perpanjangan {storeName}-mu gagal, tetapi <0/> tetap aktif hi msgid "Your account" msgstr "Akunmu" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Akun Anda akan kembali normal segera dan Anda tidak akan memerlukan nomor telepon sekarang. Ini bukan pengecualian permanen, dan kami dapat meminta pemeriksaan ini lagi nanti." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Akunmu berhasil ditautkan. Sekarang kamu bisa menutup tab ini dan kembali ke aplikasi." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Akunmu kembali normal." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Akun Anda dibatasi" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Akun Anda dibatasi. Periksa email Anda untuk cara mengatasinya." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Akunmu belum diklaim. Tanpa email dan kata sandi, kamu tidak bisa masuk dari perangkat lain dan bisa kehilangan akses ke akunmu. Klaim akunmu sekarang untuk mengamankannya." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Akunmu terlalu baru untuk mengirim pesan di komunitas ini." @@ -40800,11 +40099,6 @@ msgstr "Akunmu memerlukan autentikasi multifaktor, tetapi tidak ada metode yang msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Akunmu tidak akan lagi dilindungi autentikasi dua faktor saat kamu masuk dengan kata sandi. Kamu juga akan kehilangan izin yang lebih tinggi di komunitas yang mewajibkan autentikasi dua faktor." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Akunmu langsung berfungsi normal lagi dan tidak ada yang dihapus. Kami bisa meminta pemeriksaan ini lagi nanti." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Kartumu sedang diperiksa untuk harga lokal. Ini biasanya hanya sebentar. msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Kartumu memenuhi syarat. Kamu akan dialihkan ke halaman pembayaran sekarang." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Operatormu menyatakan nomor ini tidak aktif. Periksa kembali lalu coba lagi, atau hubungi dukungan jika nomornya sudah benar." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Perubahan Anda menjangkau setiap komunitas yang mengikuti saluran ini, yang mungkin memerlukan waktu semenit. Setiap pesan yang dipublikasikan mengizinkan 3 pengeditan cepat, lalu 1 setiap 20 menit." @@ -40869,21 +40158,6 @@ msgstr "Perangkatmu akan meminta kamu menyimpan passkey yang diperbarui untuk {n msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Perangkatmu akan meminta kamu menyimpan passkey yang diperbarui untuk {name}. Gunakan ponsel atau kunci keamanan yang sama dengan yang baru saja kamu gunakan." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Alamat emailmu telah diperbarui." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Emailmu tidak dapat menerima pesan. Tambahkan email yang aktif agar kami tetap bisa menghubungi akunmu." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Emailmu tidak dapat menerima pesan. Perbarui emailmu untuk terus menggunakan {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Emailmu sudah diverifikasi. Sekarang kamu bisa masuk ke akunmu." @@ -41000,21 +40274,11 @@ msgstr "Pesanmu gagal diperbarui" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Pembelian terbarumu tidak lagi berada dalam jangka waktu pengembalian dana. Hubungi dukungan untuk masalah penagihan." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "email barumu" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Nama panggilan barumu, atau kosongkan untuk mengatur ulang." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Nomor Anda tidak tertaut ke akun Anda. Kami hanya menyimpan penanda terenkripsi, tanpa ID pengguna, untuk waktu yang terbatas." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Pembayaranmu dibatalkan. Sekarang kamu bisa menutup tab ini dan kembali ke aplikasi." @@ -41054,11 +40318,6 @@ msgstr "Hadiah yang kamu beli" msgid "your region" msgstr "wilayahmu" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Pendaftaranmu memerlukan pemeriksaan anti-spam tambahan sebelum kamu bisa melanjutkan." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/it/messages.po b/fluxer_app/src/features/i18n/locales/it/messages.po index 85db9223a..b31975956 100644 --- a/fluxer_app/src/features/i18n/locales/it/messages.po +++ b/fluxer_app/src/features/i18n/locales/it/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reazione} other {# reazioni}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# persona che ha reagito} other {# persone che hanno reagito}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# secondo} other {# secondi}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} alle {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Il tuo link d'invito scade tra # secondo.} many {Il tuo link d'invito scade tra # secondi.} other {Il tuo link d'invito scade tra # secondi.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Selezionati: {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 minuto" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 ore" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 mesi (1 anno)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Codici di backup 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Requisito 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 membri (stanno scrivendo)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 mesi" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 ore" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 mesi" @@ -2575,11 +2575,6 @@ msgstr "un minuto" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "È disponibile una nuova versione per desktop. Scarica il programma di installazione e avvialo per aggiornare {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "È stato inviato un nuovo codice di verifica." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Dati account" msgid "Account exists to spam, scam, or abuse the platform." msgstr "L'account esiste per inviare spam, truffare o abusare della piattaforma." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Account limitato" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Stato dell'account" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Account troppo recente" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Verifica dell'account richiesta" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Aggiungi un bot a una community con le autorizzazioni richieste" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Aggiungi un commento (facoltativo)" @@ -3054,8 +3052,10 @@ msgstr "Aggiungi un argomento a questo canale" msgid "Add a word…" msgstr "Aggiungi una parola…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Aggiungi un'email funzionante" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Aggiungi un account per continuare." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Prima aggiungi un'email e una password al tuo account." @@ -3424,11 +3424,6 @@ msgstr "Aggiunto: {createdDate} • ultimo utilizzo: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Commenti aggiuntivi (facoltativi)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Verifica aggiuntiva richiesta" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Tutte le lingue" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Già impostato per l'annullamento" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Segnala questo messaggio anche al team di sicurezza di {productName}" @@ -4713,11 +4708,6 @@ msgstr "Chiedi prima di avviare le chiamate" msgid "Ask for a passkey after your password when you sign in" msgstr "Richiedi una passkey dopo la password quando accedi" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Chiedi agli amministratori di questa istanza di rivedere il tuo account. Questa istanza è gestita in modo indipendente e solo i suoi amministratori possono modificare il tuo account." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Rimuovi automaticamente i parametri di tracciamento (come utm_source, fb msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Rimuovi automaticamente i parametri di tracciamento dagli URL nei messaggi che invii" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Controlla automaticamente la presenza di contenuti sessualmente espliciti nei messaggi dei canali non contrassegnati per contenuti per adulti." @@ -5359,8 +5349,6 @@ msgstr "Assente in questo momento" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Indietro" @@ -6506,11 +6494,6 @@ msgstr "Le fotocamere e i dispositivi di acquisizione virtuale vengono seleziona msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Le fotocamere sono disattivate oltre i {voiceChannelCameraUserLimit} partecipanti" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Non riesci ad accedere a quell'email?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Impossibile caricare file qui" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Impossibile caricare file qui" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Cambia email" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Cambia emoji" @@ -7201,7 +7184,7 @@ msgstr "Modificato il limite di utenti da {oldCount} a {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Modificato l'URL personalizzato da {oldCode} a {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Modificato il livello di verifica da {oldLevel} a {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Canale o categoria" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Eccezioni ai permessi del canale" @@ -7509,8 +7492,6 @@ msgstr "Controlla la tua connessione e riprova." msgid "Check your connection, then try again." msgstr "Controlla la tua connessione, poi riprova." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Scegli uno schermo dal selettore di sistema" msgid "Choose a GIF" msgstr "Scegli una GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Scegli un metodo" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Scegli una nuova password." @@ -7680,8 +7656,8 @@ msgstr "Scegli un'azione." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Scegli un'emoji" @@ -7749,11 +7725,6 @@ msgstr "Scegli come funziona la tua istanza" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Scegli uno dei metodi seguenti per dimostrare la proprietà del dominio. Devi completarne solo uno." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Scegli un metodo di verifica. Entrambi i metodi possono superare questo controllo." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Scegli cosa può fare {clientLabel} nella tua community. Deseleziona le msgid "Choose what friends see in their active now panel" msgstr "Scegli cosa vedono i tuoi amici nel pannello \"Attivi ora\"" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Scegli cosa devono avere i membri prima di poter pubblicare messaggi o inviare messaggi diretti ai membri della community." @@ -8030,8 +8001,8 @@ msgstr "Ripulisce l’audio del microfono per rendere più chiara la voce." msgid "Clear" msgstr "Cancella" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Cancella dopo" @@ -8053,7 +8024,7 @@ msgstr "Cancella tutti i mock degli allegati" msgid "Clear all token overrides" msgstr "Cancella tutte le sostituzioni dei token" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Cancella allegati di prova" @@ -8066,14 +8037,14 @@ msgstr "Cancella comando" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Cancella stato personalizzato" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Cancellare tutte le reazioni da questo messaggio?" @@ -8124,7 +8095,7 @@ msgstr "Svuota il campo di ricerca" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Tema carbone" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Comandi" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "I commenti sono disabilitati perché uno o più canali selezionati hanno la modalità lenta attiva. Il commento verrebbe bloccato dalla modalità lenta subito dopo l'inoltro." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "I commenti sono disabilitati perché la modalità lenta è attiva in {forwardChannelDisplayName}. Il commento verrebbe bloccato dalla modalità lenta subito dopo l'inoltro." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "I commenti non sono disponibili con la modalità lenta attiva." @@ -8670,11 +8639,11 @@ msgstr "Community" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Le community e i canali in cui non puoi gestire gli webhook sono nascosti." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Le community elencate in Scopri devono controllare i messaggi di tutti i membri. Questa impostazione non può essere modificata mentre Scopri è attivo." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Le community elencate in Scopri devono richiedere almeno la verifica dell’email. Non è possibile selezionare \"Nessuno\" mentre Scopri è attivo." @@ -8827,7 +8796,7 @@ msgstr "Nome della community" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Soprannome nella community" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Profilo della community" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Profilo della community aggiornato" @@ -8907,7 +8876,7 @@ msgstr "Livello badge non letti della community" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Community aggiornata" @@ -8952,11 +8921,6 @@ msgstr "Confronto" msgid "Complete mature content check" msgstr "Completa la verifica dei contenuti per adulti" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Completa uno dei percorsi di verifica qui sotto per continuare a usare {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Completa il pagamento" msgid "Complete the mature content check to unlock mature media." msgstr "Completa il controllo dei contenuti per adulti per sbloccare i contenuti multimediali per adulti." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Completa i passaggi di verifica dell'email e del telefono richiesti qui sotto per continuare a usare {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Completa la verifica richiesta per continuare a usare {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Configura il tuo badge del profilo" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Connessioni riordinate" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Consenso richiesto" @@ -9349,16 +9304,6 @@ msgstr "Crea un URL di autorizzazione con ambiti di autorizzazione e permessi." msgid "Contact" msgstr "Contatto" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Contatta l'assistenza" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Contatta gli amministratori di questa istanza per ricevere assistenza." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Creatore di contenuti" msgid "Content filter" msgstr "Filtro contenuti" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Filtro contenuti" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Indicazione del tipo di contenuto" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Controlli di sicurezza dei contenuti" @@ -9416,12 +9361,10 @@ msgstr "I menu contestuali si aprono con un clic sinistro (sui pulsanti) o destr #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Controlla il comportamento dell'indicatore dei messaggi non letti per i msgid "Control which chat updates are announced by assistive technology." msgstr "Controlla quali aggiornamenti della chat vengono annunciati dalla tecnologia assistiva." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Conversazione non trovata" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Impossibile aggiungere il tag" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Non è stato possibile aggiungere questo amico al gruppo. Riprova." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Impossibile aggiungere al gruppo" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Impossibile creare un link al tema" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Impossibile creare il link d'invito" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Impossibile terminare il periodo di tolleranza" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Non è stato possibile generare un link d'invito. Riprova." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Impossibile elaborare l'immagine" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Impossibile pubblicare questo messaggio" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Impossibile rientrare nella community Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Impossibile rimuovere il suono d'ingresso" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Impossibile salvare le impostazioni del canale" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Impossibile salvare il suono d'ingresso" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Impossibile ritirare la candidatura" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Timer conto alla rovescia" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Paese" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Crea l'account amministratore" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Vuoi creare il DM di gruppo con {addableCount, plural, one {il destinatario rimanente} many {i # destinatari rimanenti} other {i # destinatari rimanenti}} e saltare gli altri?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Crea webhook" @@ -10948,7 +10884,7 @@ msgstr "Emoji personalizzata {emojiName} di una community" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "I suoni d'ingresso personalizzati non sono abilitati su questa istanza." @@ -11108,7 +11044,7 @@ msgstr "Elaborazione vocale personalizzata" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Testo di avviso personalizzato" @@ -11530,11 +11466,6 @@ msgstr "Motore di ricerca predefinito" msgid "Default shortcuts" msgstr "Scorciatoie predefinite" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Scheda predefinita" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Elimina questo messaggio" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Eliminare questo messaggio? L'operazione non può essere annullata." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Eliminare questo messaggio? Non sarà possibile annullare l'operazione. Questo messaggio verrà rimosso anche da ogni community che segue questo canale." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Modalità sviluppatore" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Opzione sviluppatore" @@ -12299,7 +12230,7 @@ msgstr "Input diretto" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Modalità di visualizzazione" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Nome visualizzato" @@ -12858,7 +12789,7 @@ msgstr "Vuoi unirti a {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, vengo dal futuro. Sono qui grazie a una macchina del tempo che hai inventato tu. Ora ho bisogno del tuo aiuto per tornare nel 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Modifica l'ora locale del profilo" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Modifica messaggio pubblicato?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Modifica i tuoi messaggi sopra o sotto" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Modifica l'aspetto del tuo profilo e guarda l'anteprima dal vivo" @@ -13590,10 +13521,8 @@ msgstr "Idoneo per un rimborso fino al {windowEndsOn}. Questo annullerà anche i msgid "Email" msgstr "Email" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Indirizzo email obbligatorio." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Email modificata" @@ -13616,49 +13547,17 @@ msgstr "Email modificata" msgid "Email delivery" msgstr "Consegna email" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Email o telefono" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "È richiesta una nuova verifica di email o telefono" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "È richiesta una nuova verifica dell’email" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Email non disponibile" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "L'aggiornamento dell'email non è disponibile al momento. Riprova più tardi o contatta l'assistenza." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Aggiornamento email richiesto" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Inviaci un'email e una persona esaminerà il tuo account. Dicci che non puoi verificare tramite SMS e ci occuperemo noi del resto. Le risposte arrivano via email, quindi non è istantaneo." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Banner di verifica email" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Verifica email richiesta" @@ -13675,6 +13574,10 @@ msgstr "Ignora verifica email" msgid "Email verified successfully" msgstr "Email verificata" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Le email al tuo indirizzo attuale non vengono recapitate. Inserisci un nuovo indirizzo email e ti invieremo un codice lì." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Contenuti incorporati" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Contenuti incorporati nascosti" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Contenuti incorporati nuovamente visibili" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Abilita la riproduzione vocale /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Abilita l'autenticazione a due fattori sul tuo account per modificare questa impostazione" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Inserisci un URL o un codice modello {theOtherPlatform} valido." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Inserisci un indirizzo email valido." @@ -14298,33 +14199,11 @@ msgstr "Inserisci un indirizzo email valido." msgid "Enter a valid message link." msgstr "Inserisci un link del messaggio valido." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Inserisci un numero di cellulare valido." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Inserisci un numero di telefono valido" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Inserisci un nome utente valido ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Inserisci un indirizzo email a cui hai accesso. Ti invieremo un codice a quell’indirizzo." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Inserisci codice" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Attiva schermo intero" msgid "Enter gift code…" msgstr "Inserisci codice regalo…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Inserisci la nuova email" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Inserisci uno dei tuoi codici di backup se non riesci a usare la tua pas msgid "Enter one of your backup codes." msgstr "Inserisci uno dei tuoi codici di backup." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Inserisci numero di telefono" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Inserisci il codice di {digitCount} cifre dalla tua app di autenticazion msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Inserisci il codice di {digitCount} cifre dalla tua app di autenticazione." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Inserisci il codice di {digitCount} cifre inviato a {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Inserisci il codice di {MFA_CODE_DIGIT_COUNT} cifre inviato a {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Inserisci il codice" @@ -14408,11 +14267,6 @@ msgstr "Inserisci il codice prima di continuare." msgid "Enter the code from your authenticator app." msgstr "Inserisci il codice dalla tua app di autenticazione." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Inserisci il codice inviato a {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Inserisci il codice inviato alla tua email attuale." @@ -14426,6 +14280,7 @@ msgstr "Inserisci il codice inviato al tuo indirizzo email." msgid "Enter the code shown in the app to continue." msgstr "Inserisci il codice mostrato nell'app per continuare." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Inserisci il codice che ti abbiamo inviato via email al tuo nuovo indirizzo." @@ -14434,11 +14289,6 @@ msgstr "Inserisci il codice che ti abbiamo inviato via email al tuo nuovo indiri msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Inserisci il codice che ti abbiamo inviato via email per verificarla. La tua password verrà impostata una volta confermato il codice." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Inserisci il codice email" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Inserisci il link d'invito per unirti a una community." @@ -14452,11 +14302,6 @@ msgstr "Inserisci la nuova email che vuoi usare. Ti invieremo un codice lì." msgid "Enter the PIN for your security key to continue." msgstr "Inserisci il PIN della tua chiave di sicurezza per continuare." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Inserisci il codice SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Inserisci questo codice nel browser per completare l'accesso." @@ -14492,11 +14337,6 @@ msgstr "Inserisci il tuo nome" msgid "Enter your password." msgstr "Inserisci la tua password." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Inserisci il tuo numero di telefono" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Suono d'ingresso" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "I file dei suoni d’ingresso non devono superare {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Libreria suoni d'ingresso piena" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Suono d'ingresso rimosso" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Suono d'ingresso salvato" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Suoni d'ingresso" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Suoni d’ingresso non disponibili" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Scade:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Impostazione del filtro per contenuti sessualmente espliciti" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Copia negli appunti non riuscita" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Impossibile creare il webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Impossibile caricare l'URL personalizzato. Riprova." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Impossibile caricare i webhook" @@ -15190,11 +15030,6 @@ msgstr "Impossibile rimuovere l'URL personalizzato. Riprova." msgid "Failed to resend code. Try again." msgstr "Nuovo invio del codice non riuscito. Riprova." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Nuovo invio del codice di verifica non riuscito. Riprova più tardi." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Impossibile inviare il messaggio. Tieni premuto per le opzioni." msgid "Failed to send report. Try again." msgstr "Invio della segnalazione non riuscito. Riprova." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Invio dell'email di verifica non riuscito. Riprova più tardi." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Avvio non riuscito" @@ -15551,15 +15381,15 @@ msgstr "Filtra per utente" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtra tutti" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtra membri senza ruoli" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Segui questo canale" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Segui per ricevere questi annunci in un canale a tua scelta." @@ -15773,7 +15603,7 @@ msgstr "Canale seguito {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Canali seguiti" @@ -15857,11 +15687,6 @@ msgstr "Solo per i britannici..." msgid "For me" msgstr "Per me" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Per questo controllo, devi inviarci un SMS anziché riceverne uno da noi." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Per la tua sicurezza, conferma la tua identità per continuare." @@ -15905,7 +15730,7 @@ msgstr "Forza il segnaposto di caricamento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forza la classificazione dei media come contenuti per adulti" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Forza spostamento al canale AFK" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Forza nessun permesso {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Forza la visualizzazione dell'avviso sull'URL personalizzato" msgid "Force show voice connection" msgstr "Forza visualizzazione connessione vocale" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Modalità lenta forzata attiva" @@ -16020,7 +15845,7 @@ msgstr "Inoltra contenuto multimediale" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Inoltra messaggio" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Sovrapposizione blocco geografico" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Con restrizioni geografiche" @@ -16490,12 +16315,6 @@ msgstr "Ottieni un avatar e un banner animati, un badge per gli iscritti, il tag msgid "Get monthly" msgstr "Ottieni mensile" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Ricevi nuovo codice" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Codici regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Durata regalo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventario regali" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Flusso inventario regali" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Regalo non trovato" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Regalo riscattato" @@ -17030,7 +16849,7 @@ msgstr "DM di gruppo" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Ciao {displayName}, completa la registrazione del tuo account per non perdere l’accesso." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Ciao {displayName}, verifica il tuo indirizzo email." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Ciao {displayName}, non possiamo inviare email al tuo indirizzo. Aggiungi un'email valida per verificare il tuo account." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Nascondere la tua condivisione schermo?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Alta" @@ -17755,11 +17579,6 @@ msgstr "Sono un suggerimento" msgid "I changed my mind" msgstr "Ho cambiato idea" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Ho bisogno di un altro metodo" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Se questa segnalazione riguarda un messaggio specifico, segnala direttam msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Se questa segnalazione riguarda messaggi specifici, segnala direttamente quello più pertinente. Le segnalazioni dei messaggi danno al nostro team di sicurezza un contesto più chiaro; aggiungere dettagli nei commenti può aiutarci a esaminarle più rapidamente. Segnala l’utente nel suo complesso solo se la segnalazione di un singolo messaggio non descriverebbe adeguatamente il problema più ampio." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Se non riesci a verificare via SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Se non riesci a usare alcun metodo di verifica, contatta il supporto per ricevere assistenza." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Dimensione interfaccia" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "File audio non valido" @@ -18674,8 +18483,10 @@ msgstr "JSON non valido. Incolla la risposta completa dall'URL qui sopra." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Partecipa alla chiamata vocale" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Partecipa al canale vocale" @@ -19613,16 +19424,6 @@ msgstr "Scopri di più su Visionary" msgid "Leave" msgstr "Abbandona" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Lasciare {count, plural, one {# community} other {# community}} e mettere da parte questo controllo?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Lascia e metti da parte" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Consenti ai lettori schermo di annunciare i nuovi messaggi non appena arrivano nel canale aperto. I suoni di notifica non saranno influenzati." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Consenti alla community di auto-moderarsi" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Libreria" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Libreria piena (max {max} suoni). Elimina un suono prima di aggiungerne un altro." @@ -19812,7 +19613,7 @@ msgstr "Libreria: {count} di {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "A vita" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Caricamento..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Caricamento…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Basso" @@ -20416,7 +20217,7 @@ msgstr "Gestisci le funzionalità della community" msgid "Manage emoji & stickers" msgstr "Gestisci emoji e sticker" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Gestisci i webhook in entrata che possono pubblicare messaggi in questo canale." @@ -20514,7 +20315,7 @@ msgstr "Segna subito come letti tutti i canali non letti nella posta in arrivo, msgid "Mark as read" msgstr "Segna come letto" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Segna come riscattato" @@ -20676,14 +20477,14 @@ msgstr "Community per adulti" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Contenuti per adulti" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Contenuti per adulti e avvisi sui contenuti" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Durata massima (giorni)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Massima protezione per gli spazi adatti alle famiglie" @@ -20924,7 +20725,7 @@ msgstr "Interrompi riproduzione" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Ban del membro revocato" msgid "Member updated" msgstr "Membro aggiornato" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Verifica membri" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Livello di verifica membri" @@ -21048,7 +20849,7 @@ msgstr "I membri vengono rimossi quando sono offline, a meno che non venga asseg msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "I membri con il permesso \"{pinMessagesPermissionLabel}\" possono fissare messaggi per tutti." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "I membri con ruoli possono ignorare questi controlli. Per gli spazi pubblici, consigliamo di abilitare la verifica." @@ -21153,7 +20954,7 @@ msgstr "Le menzioni che ti riguardano vengono visualizzate qui per {retentionDay #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Solo menzioni" @@ -21292,7 +21093,7 @@ msgstr "Le impostazioni di visualizzazione dei messaggi sono disponibili solo su msgid "Message editing" msgstr "Modifica messaggi" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Messaggio inoltrato" @@ -21341,7 +21142,7 @@ msgstr "Pulsanti di input del messaggio" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Il messaggio è troppo lungo" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Anteprime dei messaggi nell’elenco dei DM" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Messaggio pubblicato" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "I messaggi pubblicati in #{sourceName} appariranno ora in #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "I messaggi pubblicati in questi canali di annunci vengono copiati qui." @@ -21504,7 +21305,7 @@ msgstr "I messaggi pubblicati in questi canali di annunci vengono copiati nei tu msgid "Messages you can bookmark" msgstr "Messaggi che puoi aggiungere ai preferiti" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "La messaggistica è temporaneamente in pausa in questa community." @@ -21733,30 +21534,30 @@ msgstr "Simula scadenza tra 1 giorno" msgid "Mock expires in 7 days" msgstr "Simula scadenza tra 7 giorni" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Simula overlay blocco geografico" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Inventario regali di prova" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simula chiamata in arrivo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Simula motivo blocco canale contenuti per adulti" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Simula il motivo del blocco di accesso ai media per adulti" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Simula posizione UK" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Avatar utente di prova in varie dimensioni e con tutte le permutazioni di stato." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Variante simulata" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Flussi di prodotto simulati" @@ -22698,14 +22494,16 @@ msgstr "Nuova community silenziata" msgid "New direct message" msgstr "Nuovo messaggio diretto" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Nuova email" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Modulo per il nuovo indirizzo email" @@ -22816,9 +22614,7 @@ msgstr "Più recenti prima" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Avanti" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "No" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Nessun permesso {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Nessun permesso {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Nessuna modifica da salvare" msgid "No channels available" msgstr "Nessun canale disponibile" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Nessun canale trovato" @@ -23233,11 +23029,6 @@ msgstr "Nessun permesso trovato" msgid "No personal words yet." msgstr "Ancora nessuna parola personale." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Nessun numero di telefono" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Nessun risultato" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Nessun risultato trovato" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Nessun utente trovato" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Nessuna verifica richiesta." @@ -23452,7 +23243,7 @@ msgstr "Nessuna verifica richiesta." msgid "No verification methods available" msgstr "Nessun metodo di verifica disponibile" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Nessun webhook" @@ -23504,7 +23295,7 @@ msgstr "Nessuna conversione" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Nessuno" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Nessuno (comportamento normale)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norvegese" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Non sei membro da abbastanza tempo" @@ -23798,9 +23589,9 @@ msgstr "Oggetti" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Disattivato" @@ -23848,7 +23639,7 @@ msgstr "Dal meno recente" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Attivato" @@ -23884,11 +23675,6 @@ msgstr "Impossibile leggere o caricare uno o più allegati. Il file potrebbe ess msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Uno o più file che stai cercando di caricare superano la dimensione massima consentita di {maxSizeFormatted} per file." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Un rapido controllo" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Solo altoparlanti" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Solo il proprietario della community può modificare questa impostazione" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Apri emoji nel browser" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Apri selettore emoji" @@ -24382,12 +24168,8 @@ msgstr "Icona per aprire il menu" msgid "Open message history threshold" msgstr "Apri le impostazioni della soglia della cronologia messaggi" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Apri overlay" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Apri popup" @@ -24485,11 +24267,6 @@ msgstr "Apri la nuova app. Sei già connesso." msgid "Open the shortcuts list for quick actions." msgstr "Apri l'elenco delle scorciatoie per azioni rapide." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Apri l'email di verifica e usa il link al suo interno. Questa finestra si aggiornerà dopo l'apertura del link." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Apri le impostazioni audio e video" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Apri il browser, accedi, quindi inserisci il codice qui sotto per collegare il tuo account." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Apri i tuoi messaggi" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Apri la tua vecchia app {PRODUCT_NAME} e scegli Collega un nuovo dispositivo, quindi inserisci il codice qui sotto." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Apri l'app Messaggi del tuo telefono e crea un nuovo SMS." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Apri l’app di messaggistica del tuo telefono e crea un nuovo SMS." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Altra reazione…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Il nostro servizio di verifica dei numeri di telefono è temporaneamente fuori servizio. Il problema dipende da noi, non dal tuo numero. Attendi qualche minuto e riprova con lo stesso numero." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PagSu" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, frodi, link dannosi o affermazioni false che possono causare danni nel mondo reale." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefono" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Numero di telefono" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Numero di telefono obbligatorio" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Numero di telefono verificato" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "È richiesta una nuova verifica del numero di telefono" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Passaggio telefonico" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "La verifica telefonica non è disponibile per questo account. Usa un altro metodo o contatta l'assistenza." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Verifica del telefono richiesta" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Scegli il numero di 4 cifre dopo il tuo nome utente" msgid "Pick the appearance this administrator account should start with." msgstr "Scegli l'aspetto che questo account amministratore dovrebbe avere all'inizio." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Scegli il metodo che puoi completare ora." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Picture-in-picture" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Fissa" @@ -25471,7 +25176,7 @@ msgstr "Fissa DM di gruppo" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Aggiungi o rimuovi qualsiasi messaggio dai messaggi fissati." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Fissa questo messaggio al canale in modo che tutti possano vederlo." @@ -26227,18 +25932,18 @@ msgstr "Colore profilo" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Personalizzazione profilo" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Personalizzazione del profilo per {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Modulo di personalizzazione del profilo" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Tipo di profilo" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profilo aggiornato" @@ -26340,7 +26045,7 @@ msgstr "Chiedi conferma per i nuovi dispositivi audio" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Coordinamento raid" msgid "Rate" msgstr "Velocità" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Limite di frequenza raggiunto" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "JSON grezzo del contenuto incorporato" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Rimuovere {userName} dai tuoi amici?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Rimuovi tutto" @@ -27290,7 +26990,7 @@ msgstr "Rimuovere tutte le reazioni {emojiNameWithColons} da questo messaggio?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Rimuovi tutte le reazioni" @@ -27899,20 +27599,10 @@ msgstr "Tag utente segnalato (facoltativo)" msgid "Reposts: <0>{countLabel}" msgstr "Ripubblicazioni: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Richiedi prima un nuovo codice." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Richiedi un nuovo link per reimpostare la password" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Richiedi prima un codice di verifica." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Richieste" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Richiedi 2FA per le azioni di moderazione" @@ -27958,7 +27648,7 @@ msgstr "Richiedi il flusso OAuth2 con codice di autorizzazione" msgid "Require passkey" msgstr "Richiedi passkey" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Richiedi l’autenticazione a due fattori per i moderatori prima che possano bannare, espellere o mettere in timeout i membri, oppure eliminare messaggi." @@ -27972,46 +27662,6 @@ msgstr "Obbligatorio" msgid "Required 2FA for moderation actions" msgstr "Autenticazione a due fattori obbligatoria per le azioni di moderazione" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Scheda predefinita azione richiesta" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Flusso azione richiesta" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Passaggio telefonico azione richiesta" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Caricamento azione richiesta (nuovo invio)" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Esito del nuovo invio dell'azione richiesta" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Testo di riverifica dell'azione richiesta" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Variante azione richiesta" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Overlay azioni richieste" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Richiede un URI di reindirizzamento e un codice di autorizzazione quando si invita questo bot." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Richiede un indirizzo email verificato e un account creato da almeno 5 minuti." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Richiede un indirizzo email verificato." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Richiede un numero di telefono verificato." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Richiede tutti i requisiti del livello medio e l’appartenenza alla community da almeno 10 minuti." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Invia di nuovo ({resendSecondsRemaining}s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Invia di nuovo ({secondsRemaining}s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Pulsante Invia di nuovo in caricamento" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Reinvia codice" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Invia di nuovo l'email" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Esito del nuovo invio" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Inviato di nuovo" @@ -28518,21 +28152,6 @@ msgstr "Mostra" msgid "Reveal spoiler" msgstr "Mostra spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Per continuare a usare {productName}, verifica di nuovo la tua email o verifica il tuo telefono." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Verifica di nuovo la tua email per continuare a usare {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Verifica di nuovo il tuo numero di telefono per continuare a usare {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Saturazione" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Anteprima durante lo scorrimento del video" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Cerca canali" msgid "Search communities" msgstr "Cerca community" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Cerca Paesi..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Cerca Paesi…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Seleziona il tuo Paese di residenza." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Seleziona…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Invia" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Invia ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Invia un'altra segnalazione" msgid "Send button" msgstr "Pulsante invia" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Invia codice" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Invia messaggi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Invio messaggi disabilitato" @@ -30151,32 +29759,11 @@ msgstr "Invia elemento multimediale salvato {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Invia messaggi di sintesi vocale con /tts. I membri che hanno attivato la sintesi vocale li sentono letti ad alta voce." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Invia il codice <0>{0} a <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Invia il codice al numero di telefono qui sotto." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Invia questo codice" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Vuoi rimandare indietro nel tempo questo messaggio fissato?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Invia a" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Invia messaggio vocale" msgid "Send:" msgstr "Invio:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Inviare un SMS a questo numero di telefono è troppo costoso per {PRODUCT_NAME}, quindi abbiamo bisogno che sia tu a inviarci un SMS. Sappiamo che non è l'ideale. Puoi anche chiedere agli amministratori di questa istanza di rimuovere questo requisito dal tuo account." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Inviare un SMS a questo numero di telefono è troppo costoso per {PRODUCT_NAME}, quindi abbiamo bisogno che sia tu a inviarci un SMS. Sappiamo che non è l'ideale. Puoi anche contattare <0>{SUPPORT_EMAIL} per chiederci di rimuovere questo requisito dal tuo account." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Invio seriale" msgid "Serve the token file" msgstr "Rendi disponibile il file del token sul server" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Errore del servizio" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Imposta scorciatoia personalizzata per \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Imposta stato personalizzato" @@ -30486,18 +30060,6 @@ msgstr "Impostata la regione vocale su {region}" msgid "Set the voice region to automatic" msgstr "Impostata la regione vocale su automatica" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Rimanda questo controllo" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Rimandare questo controllo?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Imposta i tuoi pronomi" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Imposta il tuo stato" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Le scorciatoie sono sospese durante la registrazione." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Accorcia il messaggio e riprova." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Mostra un’icona di {productName} nell’area di notifica o nella barra dei menu" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Mostra un avviso sui contenuti" @@ -31672,7 +31234,7 @@ msgstr "Modalità lenta · attendi {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Modalità lenta attiva" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "La modalità lenta è impostata a {durationLabel}. Attendi prima di inviare un altro messaggio." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Tempo rimanente per la modalità lenta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulazione modalità lenta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Tempo rimanente per la modalità lenta" @@ -31807,11 +31369,6 @@ msgstr "Scorrimento fluido" msgid "Smoother video" msgstr "Video più fluido" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "La verifica SMS non è disponibile al momento. Riprova più tardi o contatta l'assistenza." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Si è verificato un errore durante la preparazione di questo sticker. Prova un altro file o riprova tra un momento." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Si è verificato un errore durante la pubblicazione. Riprova tra poco." @@ -32009,11 +31566,9 @@ msgstr "Si è verificato un errore. Ricarica la pagina o accedi di nuovo." msgid "Something went wrong. Try again later." msgstr "Si è verificato un errore. Riprova più tardi." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Si è verificato un errore. Riprova." @@ -32352,11 +31907,6 @@ msgstr "Accesso SSO scaduto. Riprova." msgid "Staff controls" msgstr "Controlli staff" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Potrebbero essere applicate le tariffe standard per i messaggi del tuo operatore." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Animazione stella" msgid "Starred channels" msgstr "Canali preferiti" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Trasporto sottoscrittore:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Abbonamento" @@ -33051,14 +32599,12 @@ msgstr "Scenari di abbonamento" msgid "Subtext" msgstr "Sottotesto" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Completato" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Consigliato per la maggior parte delle community" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Sistema e benvenuto" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Annunci di sistema dallo staff di {productName}. Non puoi rispondere qui." @@ -33765,11 +33311,6 @@ msgstr "Selezione testo" msgid "Text size" msgstr "Dimensione testo" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Inviaci un SMS dal tuo telefono" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Tailandese" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Grazie per aver contribuito a rendere {productName} un luogo sicuro. Esamineremo la tua segnalazione il prima possibile." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Il codice non ha funzionato. Controllalo e riprova." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Il codice è scaduto. Richiedine uno nuovo." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "L’operazione non è terminata. Potresti aver già abbandonato alcune community e il tuo account è ancora bloccato. Premi di nuovo \"Rimanda questo controllo\" per completare." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Non è andato a buon fine. Non è cambiato nulla. Riprova." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Non sembra un colore valido. Prova un valore esadecimale, rgb(), hsl() o msgid "That doesn't look like a valid URL." msgstr "Non sembra un URL valido." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Questa email è già in uso." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "L'eccezione ai permessi negava {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "La pagina che cerchi non esiste o è stata spostata." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Il controllo del telefono è stato rimandato. Rimane un passaggio via email." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Nessun canale disponibile per creare un invito." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Al momento non ci sono ruoli da assegnare in questa community, ma puoi crearne uno nuovo in <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Nessun webhook configurato per questo canale. Creane uno per consentire alle applicazioni esterne di pubblicare messaggi." @@ -34273,7 +33784,7 @@ msgstr "Si è verificato un errore durante il caricamento degli inviti. Riprova. msgid "There was an error loading the stickers. Try again." msgstr "Si è verificato un errore durante il caricamento degli sticker. Riprova." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Si è verificato un errore durante il caricamento dei webhook per questo canale. Riprova." @@ -34417,7 +33928,7 @@ msgstr "Questo canale può pubblicare 10 messaggi di seguito, poi uno ogni 6 min msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Questo canale può pubblicare 10 messaggi di seguito, poi uno ogni 6 minuti. Riprova tra qualche minuto." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Questo canale non supporta i webhook." @@ -34550,12 +34061,12 @@ msgstr "Questa connessione non è stata verificata." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Contenuto sensibile." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Questa conversazione non è più disponibile." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Questo gruppo ha troppe persone" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Questo gruppo è al completo. Rimuovi qualcuno prima di aggiungere altre persone." @@ -34715,11 +34226,6 @@ msgstr "Questo è un adesivo personalizzato di una community." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Questo è un canale con restrizioni d'età. Gli aggiornamenti possono essere inviati solo a canali con restrizioni d'età." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Questo è un controllo anti-spam. Il tuo numero di telefono non è collegato al tuo account." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Questa opzione è disabilitata" msgid "This is how messages appear" msgstr "Ecco come appaiono i messaggi" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Al momento non è disponibile per il tuo account. Chiedi agli amministratori di questa istanza di verificarlo." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Al momento non è disponibile per il tuo account. Invia un'email a {supportEmail} e una persona esaminerà la richiesta." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Questo non è il canale che stai cercando." @@ -34792,11 +34288,6 @@ msgstr "Questa è la tua ultima passkey e le passkey sono il tuo secondo fattore msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Questa è la tua ultima passkey. Una volta eliminata, non potrai più usare una passkey come secondo fattore." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Questo non è un numero di cellulare, quindi non può ricevere i nostri SMS. Prova con un numero di cellulare o contatta il supporto se pensi che ci sia un errore." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Questo messaggio è già stato eliminato." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Questo messaggio è già stato pubblicato" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Questo messaggio non esiste più." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Questo soprannome sarà visibile solo in questa community" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Questo numero va verificato inviandoci un SMS. Torna indietro e avvia di nuovo la verifica telefonica per ottenere il codice e il numero a cui inviarlo." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Questo numero richiede che sia tu a inviarci un SMS, anziché riceverne uno da noi." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Questo partecipante ha l’audio disattivato" msgid "This participant was deafened by moderators" msgstr "I moderatori hanno disattivato l’audio di questo partecipante" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Questo numero di telefono non può essere usato. Prova un altro numero di cellulare o contatta l'assistenza." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Questo numero di telefono è già stato utilizzato. Prova un altro numero o contatta l'assistenza." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Questo utente non ha ruoli in questa community." msgid "This user is already banned from the community." msgstr "Questo utente è già bannato dalla community." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Questo utente non è più disponibile." @@ -35065,11 +34536,6 @@ msgstr "Un amministratore della piattaforma ha forzato l’aggiunta di questo ut msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "La sessione di verifica è scaduta. Torna a {productName} e ricomincia la procedura di acquisto." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Questa sessione di verifica è scaduta. Riprova." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Questo processo ti disconnetterà, cancellerà i file memorizzati nella msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "In questo modo tutti i link esterni verranno considerati attendibili e l'avviso per ogni dominio verrà ignorato. I domini attendibili esistenti verranno sostituiti. Questa operazione è meno sicura." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Questa finestra si aggiorna automaticamente dopo aver ricevuto il tuo messaggio." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Barra del titolo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Piattaforma della barra del titolo" @@ -35470,18 +34931,11 @@ msgstr "Tono" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Mappa le immagini HDR all'intervallo standard, riducendo la luminosità di picco." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Troppi tentativi. Attendi un attimo, poi riprova." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Troppe community" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Troppe richieste. Riprova più tardi." @@ -36151,8 +35605,10 @@ msgstr "Impossibile preparare le emoji per il caricamento. Si sono verificati i #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Non disponibile" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Senza categoria" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Account con registrazione incompleta" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Non ordinato" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Rimuovi dai messaggi fissati" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Rimuovi dai messaggi fissati" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Rimuovere questo messaggio dai messaggi fissati?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Modifiche non salvate" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "File audio non supportato." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Finché non lo riattivo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Email non verificata" @@ -36958,12 +36414,7 @@ msgstr "Aggiorna {productName} per visualizzare questo messaggio." msgid "Update app" msgstr "Aggiorna l'app" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Aggiorna email" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Aggiorna il mio stato" @@ -37306,18 +36757,13 @@ msgstr "Usa {url} dove l'URL dell'immagine dovrebbe essere inserito." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Usa una finestra dedicata per impostare una data limite per la cronologia dei messaggi per i membri che non hanno il permesso {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Usa un indirizzo email diverso e verificalo con un codice." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Usa effettivo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Usa il tipo premium effettivo" @@ -37335,16 +36781,6 @@ msgstr "Usa un metodo alternativo" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Usa un’app di autenticazione per generare i codici per l’autenticazione a due fattori" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Usa un indirizzo email a cui hai accesso. Ti invieremo un codice a quell’indirizzo." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Usa un'email diversa da quella attuale." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Usa il tema scuro in tutta l'applicazione" msgid "Use default" msgstr "Usa predefinito" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Usa un'altra email" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Usa l'email" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Usare le passkey per l'autenticazione a due fattori?" msgid "Use passkeys to sign in without a password" msgstr "Usa le passkey per accedere senza password" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Usa il telefono" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Usa testo di riverifica" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "L’utente cambia canale" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Utente non trovato" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Verifica" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Verifica e barriere di accesso" @@ -37970,15 +37387,8 @@ msgstr "Codice di verifica" msgid "Verification code sent" msgstr "Codice di verifica inviato" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Codice di verifica inviato. Controlla la tua nuova casella email." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Email di verifica inviata. Controlla la tua casella di posta." @@ -38038,23 +37448,6 @@ msgstr "Modulo di verifica dell'identità" msgid "Verify it's you" msgstr "Verifica la tua identità" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Verifica telefono" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Verifica numero di telefono" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Modulo di verifica del numero di telefono" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Verifica la tua email prima di aggiungere un'app di autenticazione." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Verifica la tua email prima di cambiare soprannome, avatar, banner, biografia, pronomi o colore accento del tuo profilo nella community." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Verifica la tua email prima di cambiare nome utente, nome visualizzato, avatar, banner, biografia, pronomi, fuso orario o la privacy del badge {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Verifica la tua email prima di modificare il profilo di questa community. Puoi comunque vederne un'anteprima qui." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Verifica la tua email prima di modificare il profilo. Puoi comunque vederne un'anteprima qui." @@ -38113,11 +37506,6 @@ msgstr "Verifica la tua email prima di inviare richieste di amicizia." msgid "Verify your email first" msgstr "Verifica prima la tua email" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Verifica la tua email o il tuo telefono per continuare a usare {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Verifica la tua email per acquistare regali." msgid "Verify your email to change your username" msgstr "Verifica la tua email per cambiare il tuo nome utente" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Verifica la tua email per continuare a usare {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Verifica la tua email per modificare il profilo di questa community" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Verifica la tua email per modificare il profilo" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Versione" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Molto alta" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Alza volume" msgid "Wait a moment before deleting more messages." msgstr "Attendi un momento prima di eliminare altri messaggi." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Attendi un momento. Questa finestra si chiuderà automaticamente quando riceveremo il tuo messaggio." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Tempo di attesa tra i messaggi. I membri con il permesso \"{bypassSlowmodePermissionLabel}\" possono ignorarlo." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Attendi qui" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "In attesa della passkey…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "In attesa che la modalità lenta in {forwardChannelDisplayName} scada." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "In attesa che la modalità lenta scada in uno o più canali selezionati." @@ -39115,16 +38482,6 @@ msgstr "Non è stato possibile leggere questo tema. Potrebbe essere danneggiato msgid "We couldn't remove that account. Try again." msgstr "Non è stato possibile rimuovere l'account. Riprova." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Non siamo riusciti a verificare questo numero automaticamente. Contatta il supporto e una persona esaminerà il tuo account." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Non inviamo SMS di verifica in questo paese. Prova con un numero di cellulare di un altro paese o contatta il supporto." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Abbiamo trovato un abbonamento {premiumProductFullName} esistente per qu msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Abbiamo abbassato il prezzo di {premiumProductName} in Brasile. Ora costa {monthlyPrice} al mese o {yearlyPrice} all'anno." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Abbiamo bisogno di un passaggio di verifica prima che tu possa continuare. Questo aiuta a proteggere gli account e a tenere lo spam lontano da {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Sono necessari due passaggi di verifica prima di continuare. Ti mostreremo un passaggio alla volta." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Ti consigliamo di salvare questi codici ora per non perdere l'accesso al tuo account." @@ -39167,11 +38514,6 @@ msgstr "Abbiamo inviato un codice a {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Precompileremo {prefillEmail} quando si aprirà l'accesso tramite browser." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Ti invieremo un codice SMS quando disponibile." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Ci piacerebbe darti più di una vita di {PREMIUM_PRODUCT_NAME}, ma questo infrangerebbe il continuum spazio-temporale. Vuoi inviare il regalo a un amico, invece?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Lo elaboreremo il prima possibile. Riceverai un'email quando il tuo archivio sarà pronto." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Ripristineremo la tua email precedente, disconnetteremo le vecchie sessioni, rimuoveremo i numeri di telefono, disabiliteremo l'MFA e proteggeremo il tuo account con una nuova password." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Ripristineremo la tua email precedente, disconnetteremo le sessioni attive, disabiliteremo l'autenticazione a più fattori e metteremo in sicurezza il tuo account con una nuova password." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Ti invieremo un codice di verifica via email prima che tu possa cambiare msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Ti invieremo un codice di verifica alla tua email prima che tu possa visualizzare i tuoi codici di backup." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Ti invieremo un codice SMS quando sarà disponibile. Il tuo numero non è collegato al tuo account. Conserviamo solo un marcatore crittografato, senza ID utente, per un tempo limitato." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Verificheremo la tua email attuale e poi quella nuova con codici monouso." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook creato" @@ -39331,7 +38669,7 @@ msgstr "Webhook aggiornato" msgid "Webhook URL" msgstr "URL webhook" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhook" @@ -39486,8 +38824,8 @@ msgstr "Ciò che stai condividendo non si aggiorna" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Cosa succede?" @@ -39967,21 +39305,11 @@ msgstr "Puoi rimuovere il permesso <0>{readMessageHistoryPermissionLabel} da msgid "You can sign back in at any time." msgstr "Puoi accedere di nuovo in qualsiasi momento." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Puoi comunque chiedere in qualsiasi momento una revisione umana agli amministratori di questa istanza." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Puoi comunque creare un account o accedere. Se gli inviti verranno riabilitati in seguito, potrai usare lo stesso link per unirti." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Puoi comunque inviare un'email a {supportEmail} per una revisione umana in qualsiasi momento." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Puoi usare link, emoji e Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Non puoi aggiungere espressioni lì" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Non puoi aggiungere nuove reazioni mentre sei in timeout." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Non puoi essere amico di te stesso" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Non puoi cambiare il tuo soprannome qui" @@ -40094,7 +39422,7 @@ msgstr "Non puoi inviare una richiesta d'amicizia a te stesso." msgid "You can't send messages in this channel." msgstr "Non puoi inviare messaggi in questo canale." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Non puoi inviare messaggi in questa community." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Non hai il permesso di farlo a questo membro." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Non hai il permesso di unirti a questo canale vocale" @@ -40243,7 +39571,7 @@ msgstr "Non hai il permesso di rinominare questa emoji. Il nome è stato riprist msgid "You have been banned from this community." msgstr "Sei stato bannato da questa community." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Hai bloccato {username}. Sbloccalo per inviare messaggi." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Hai modifiche non salvate." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Hai delle modifiche non salvate. Salva o annulla prima di uscire." @@ -40270,7 +39598,7 @@ msgstr "Hai delle modifiche non salvate. Salva o annulla prima di uscire." msgid "You haven't authorized any applications to access your account." msgstr "Non hai autorizzato alcuna applicazione ad accedere al tuo account." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Non fai parte di questa community da abbastanza tempo per inviare messaggi." @@ -40326,11 +39654,6 @@ msgstr "Devi accettare i termini di servizio per creare un account" msgid "You must verify your email before sending a report." msgstr "Devi verificare la tua email prima di inviare una segnalazione." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Per modificare l'email da qui, devi avere accesso a quella attuale. Usa la verifica telefonica se disponibile o contatta il supporto." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Ti serve il permesso \"{manageRolesPermissionLabel}\" per modificare que msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Ti serve il permesso \"{manageRolesPermissionLabel}\" per modificare queste autorizzazioni." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Hai bisogno del permesso \"{manageWebhooksPermissionLabel}\" per visualizzare e modificare i webhook di questo canale." @@ -40384,18 +39707,14 @@ msgstr "Devi completare la registrazione del tuo account prima di poter creare u msgid "You need to claim your account before you can start a direct message." msgstr "Devi completare la registrazione del tuo account prima di poter avviare un DM." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Devi completare la registrazione del tuo account per inviare messaggi diretti." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Devi completare la registrazione del tuo account per inviare messaggi in questa community." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Devi verificare un numero di telefono per inviare messaggi in questa community." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Devi verificare il tuo indirizzo email prima di poter avviare un DM." msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Devi verificare la tua email prima di poter acquistare {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Devi verificare la tua email per inviare messaggi in questa community." @@ -40424,11 +39743,6 @@ msgstr "Devi verificare la tua email per inviare messaggi in questa community." msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Tu o una delle persone che stai aggiungendo avete già il numero massimo di DM di gruppo aperti. Lasciane uno e riprova." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Rimani in {ownedNames}. I proprietari non possono abbandonare la propria community." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "I moderatori hanno disattivato il tuo audio" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Dopo l'autorizzazione, verrai reindirizzato a {redirectHostname}." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Lascerai {count, plural, one {# community} other {# community}} a cui si applica questo controllo e il tuo account tornerà a funzionare normalmente." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Lascerai {guildNames}. Nulla di ciò che hai pubblicato viene eliminato e potrai unirti di nuovo in seguito." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Dovrai comunque completare il passaggio dell'email." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Stai andando troppo veloce" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Stai andando troppo veloce. Attendi un momento e riprova." @@ -40636,7 +39935,7 @@ msgstr "Stai inviando messaggi troppo velocemente" msgid "You're streaming!" msgstr "Stai trasmettendo in streaming!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Sei in timeout. Messaggi, reazioni e chiamate vocali sono in pausa fino alla scadenza del timeout." @@ -40764,25 +40063,25 @@ msgstr "Il pagamento del rinnovo tramite {storeName} non è andato a buon fine, msgid "Your account" msgstr "Il tuo account" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Il tuo account tornerà subito alla normalità e non avrai bisogno di un numero di telefono. Questa non è un'esenzione permanente e potremmo richiedere nuovamente questa verifica in futuro." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Il tuo account è stato collegato. Ora puoi chiudere questa scheda e tornare all'app." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Il tuo account è tornato alla normalità." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Il tuo account è limitato" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Il tuo account è limitato. Controlla la tua email per sapere come rimuovere la limitazione." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Non hai ancora completato la registrazione del tuo account. Senza email e password, non potrai accedere da altri dispositivi e potresti perdere l’accesso al tuo account. Completa la registrazione ora per proteggerlo." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Il tuo account è troppo nuovo per inviare messaggi in questa community." @@ -40800,11 +40099,6 @@ msgstr "Il tuo account richiede l'autenticazione a più fattori, ma nessun metod msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Il tuo account non sarà più protetto dall'autenticazione a due fattori quando accedi con la password. Perderai anche i permessi elevati nelle community che richiedono l'autenticazione a due fattori." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Il tuo account tornerà a funzionare normalmente subito e non verrà rimosso nulla. Possiamo richiedere nuovamente questo controllo in seguito." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Stiamo verificando la tua carta per i prezzi localizzati. Di solito ci v msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "La tua carta è idonea. Ti stiamo reindirizzando alla pagina di pagamento." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Il tuo operatore indica che questo numero non è attivo. Controllalo e riprova, oppure contatta il supporto se è corretto." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Le tue modifiche raggiungono tutte le community che seguono questo canale e potrebbero richiedere un minuto. Ogni messaggio pubblicato consente 3 modifiche rapide, poi 1 ogni 20 minuti." @@ -40869,21 +40158,6 @@ msgstr "Il tuo dispositivo ti chiederà di salvare una passkey aggiornata per {n msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Il tuo dispositivo ti chiederà di salvare una passkey aggiornata per {name}. Usa lo stesso telefono o la stessa chiave di sicurezza che hai appena utilizzato." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Il tuo indirizzo email è stato aggiornato." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "La tua email non può ricevere messaggi. Aggiungi un'email funzionante in modo che possiamo mantenere il tuo account raggiungibile." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Non è stato possibile recapitare messaggi alla tua email. Aggiornala per continuare a usare {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "La tua email è stata verificata. Ora puoi accedere al tuo account." @@ -41000,21 +40274,11 @@ msgstr "Non è stato possibile aggiornare il messaggio" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Il tuo acquisto più recente non rientra più nel periodo di rimborso. Contatta l'assistenza per problemi di fatturazione." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "la tua nuova email" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Il tuo nuovo soprannome; lascia vuoto per reimpostarlo." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Il tuo numero non è collegato al tuo account. Conserviamo solo un marcatore crittografato, senza ID utente, per un tempo limitato." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Pagamento annullato. Ora puoi chiudere questa scheda e tornare all'app." @@ -41054,11 +40318,6 @@ msgstr "I tuoi regali acquistati" msgid "your region" msgstr "la tua regione" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "La tua registrazione richiede un controllo anti-spam aggiuntivo prima di poter continuare." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/ja/messages.po b/fluxer_app/src/features/i18n/locales/ja/messages.po index 1a450b4fb..5931bbde9 100644 --- a/fluxer_app/src/features/i18n/locales/ja/messages.po +++ b/fluxer_app/src/features/i18n/locales/ja/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {#件のリアクション} other {#件のリアク msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {#人がリアクション} other {#人がリアクション}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {#秒} other {#秒}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel}の{timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {招待リンクは#秒後に期限切れになります。} other {招待リンクは#秒後に期限切れになります。}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount}件選択済み" @@ -2252,7 +2252,7 @@ msgstr "1分" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12時間" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12か月(1年)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "2段階認証のバックアップ" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2段階認証の必須化" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3人のメンバー(入力中)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3か月" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6時間" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6か月" @@ -2575,11 +2575,6 @@ msgstr "1分" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "新しいデスクトップ版が利用可能です。インストーラーをダウンロードして実行し、{productName}を更新してください。" -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "新しい認証コードを送信しました。" - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "アカウントデータ" msgid "Account exists to spam, scam, or abuse the platform." msgstr "スパム、詐欺、またはプラットフォームの悪用を目的としたアカウントです。" +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "アカウント制限中" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "アカウントの状態" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "アカウントが新しすぎます" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "アカウント認証が必要です" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "リクエストされた権限でボットをコミュニティに追加" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "コメントを追加(任意)" @@ -3054,8 +3052,10 @@ msgstr "このチャンネルにトピックを追加" msgid "Add a word…" msgstr "単語を追加…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "有効なメールアドレスを追加" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "続けるにはアカウントを追加してください。" #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "まずアカウントにメールアドレスとパスワードを追加してください。" @@ -3424,11 +3424,6 @@ msgstr "追加日: {createdDate} • 最終使用日: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "その他のコメント(任意)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "追加認証が必要です" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "すべての言語" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "キャンセル設定済み" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "このメッセージを{productName}安全チームにも報告する" @@ -4713,11 +4708,6 @@ msgstr "通話を開始する前に確認する" msgid "Ask for a passkey after your password when you sign in" msgstr "サインイン時にパスワードの入力後にパスキーを求める" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "このインスタンスの管理者にアカウントの確認を依頼してください。このインスタンスは独立して運営されており、アカウントを変更できるのはその管理者のみです。" - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "送信するメッセージ内のURLからトラッキングパラメー msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "送信するメッセージ内のURLからトラッキングパラメーターを自動的に削除" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "成人向けコンテンツとして指定されていないチャンネルで、不適切なコンテンツのメッセージを自動的に検出します。" @@ -5359,8 +5349,6 @@ msgstr "現在離席中" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "戻る" @@ -6506,11 +6494,6 @@ msgstr "カメラと仮想キャプチャデバイスは、Waylandシステム msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "{voiceChannelCameraUserLimit}人を超えるとカメラはオフになります" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "そのメールアドレスにアクセスできませんか?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "ここにファイルをアップロードできません" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "ここにファイルをアップロードできません" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "メールアドレスを変更" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "絵文字を変更" @@ -7201,7 +7184,7 @@ msgstr "ユーザー制限を {oldCount} から {newCount} に変更しました msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "カスタムURLを {oldCode} から {newCode} に変更しました" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "認証レベルを {oldLevel} から {newLevel} に変更しました" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "チャンネルまたはカテゴリ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "チャンネル権限のオーバーライド" @@ -7509,8 +7492,6 @@ msgstr "接続を確認して、もう一度お試しください。" msgid "Check your connection, then try again." msgstr "接続を確認して、もう一度お試しください。" -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "システムピッカーでディスプレイを選択" msgid "Choose a GIF" msgstr "GIFを選択" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "認証方法を選択" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "新しいパスワードを設定してください。" @@ -7680,8 +7656,8 @@ msgstr "アクションを選択してください。" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "絵文字を選択" @@ -7749,11 +7725,6 @@ msgstr "インスタンスの動作方法を選択" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "以下のいずれかの方法でドメインの所有権を証明してください。1つ完了すれば十分です。" -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "いずれかの方法で認証してください。どちらの方法でもこの確認を完了できます。" - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "{clientLabel} がコミュニティでできることを選択してく msgid "Choose what friends see in their active now panel" msgstr "友達の「オンライン中」パネルに表示される内容を選択" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "メンバーが投稿やコミュニティメンバーへのDMを行うために必要な条件を選択してください。" @@ -8030,8 +8001,8 @@ msgstr "マイクの音声をクリアにします。" msgid "Clear" msgstr "クリア" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "期限" @@ -8053,7 +8024,7 @@ msgstr "添付ファイルのモックをすべてクリア" msgid "Clear all token overrides" msgstr "すべてのトークンオーバーライドをクリア" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "添付ファイルのモックをクリア" @@ -8066,14 +8037,14 @@ msgstr "コマンドをクリア" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "カスタムステータスを削除" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "このメッセージのリアクションをすべて消去しますか?" @@ -8124,7 +8095,7 @@ msgstr "検索入力をクリア" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "石炭テーマ" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "コマンド" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "選択したチャンネルのいずれかでスローモードがオンになっているため、コメントは無効です。転送後すぐにスローモードによってコメントがブロックされます。" #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "{forwardChannelDisplayName}ではスローモードがオンになっているため、コメントは無効です。転送直後にスローモードによってコメントがブロックされます。" #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "スローモード中はコメントできません。" @@ -8670,11 +8639,11 @@ msgstr "コミュニティ" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Webhookを管理できないコミュニティやチャンネルは非表示になります。" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "「見つける」に掲載されているコミュニティは、すべてのメンバーのメッセージをスキャンする必要があります。「見つける」が有効な間は、この設定を変更できません。" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "「見つける」に掲載されているコミュニティには、少なくともメールアドレスの認証が必要です。「見つける」が有効な間は「なし」を選択できません。" @@ -8827,7 +8796,7 @@ msgstr "コミュニティ名" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "コミュニティニックネーム" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "コミュニティプロフィール" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "コミュニティプロフィールを更新しました" @@ -8907,7 +8876,7 @@ msgstr "コミュニティの未読バッジレベル" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "コミュニティを更新しました" @@ -8952,11 +8921,6 @@ msgstr "比較" msgid "Complete mature content check" msgstr "成人向けコンテンツの確認を完了する" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "{productName}を継続して利用するには、以下のいずれかの認証方法を完了してください。" - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "支払いを完了" msgid "Complete the mature content check to unlock mature media." msgstr "成人向けコンテンツの確認を完了して、成人向けメディアのロックを解除してください。" -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "{productName}を継続して利用するには、以下のメールと電話番号の認証ステップを完了してください。" - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "{productName}を継続して利用するには、必要な認証を完了してください。" - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "プロフィールバッジを設定" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "接続の並び順を変更しました" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "同意が必要です" @@ -9349,16 +9304,6 @@ msgstr "スコープと権限で認証URLを構築します。" msgid "Contact" msgstr "連絡先" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "サポートに問い合わせる" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "サポートが必要な場合は、このインスタンスの管理者にお問い合わせください。" - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "コンテンツクリエイター" msgid "Content filter" msgstr "コンテンツフィルター" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "コンテンツフィルター" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "コンテンツヒント" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "コンテンツ安全ゲート" @@ -9416,12 +9361,10 @@ msgstr "左クリック(ボタン上)または右クリック(その他の #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "チャンネルリストでミュート中のチャンネルの未読バ msgid "Control which chat updates are announced by assistive technology." msgstr "支援技術で読み上げるチャットの更新を管理します。" -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "会話が見つかりません" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "タグを追加できませんでした" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "グループにこの友達を追加できませんでした。もう一度お試しください。" #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "グループに追加できませんでした" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "テーマのリンクを作成できませんでした" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "招待リンクを作成できませんでした" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "猶予期間を終了できませんでした" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "招待リンクを生成できませんでした。もう一度お試しください。" @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "画像を処理できませんでした" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "このメッセージを公開できませんでした" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Visionaryコミュニティに再参加できませんでした" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "入場サウンドを削除できませんでした" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "チャンネル設定を保存できませんでした" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "入場サウンドを保存できませんでした" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "申請を取り下げられませんでした" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "カウントダウンタイマー" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "国" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "管理者アカウントを作成" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "{addableCount, plural, other {残りの#人}}でグループDMを作成し、他の人はスキップしますか?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "ウェブフックを作成" @@ -10948,7 +10884,7 @@ msgstr "コミュニティのカスタム絵文字 {emojiName}" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "カスタム入室サウンドは、このインスタンスでは有効になっていません。" @@ -11108,7 +11044,7 @@ msgstr "カスタム音声処理" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "カスタム警告文" @@ -11530,11 +11466,6 @@ msgstr "デフォルトの検索エンジン" msgid "Default shortcuts" msgstr "デフォルトのショートカット" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "デフォルトタブ" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "デラウェア州" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "このメッセージを削除" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "このメッセージを削除しますか?この操作は元に戻せません。" #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "このメッセージを削除しますか?元に戻すことはできません。このメッセージは、このチャンネルをフォローしているすべてのコミュニティからも削除されます。" @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "開発者モード" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "開発者向けオプション" @@ -12299,7 +12230,7 @@ msgstr "ダイレクト入力" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "表示モード" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "表示名" @@ -12858,7 +12789,7 @@ msgstr "{communityName} に参加しますか?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "博士、私は未来から来ました。あなたが発明したタイムマシンに乗って。1985年に戻るには、あなたの助けが必要です。" @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "プロフィールの現地時間を編集" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "投稿メッセージを編集しますか?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "上または下の自分のメッセージを編集" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "プロフィールを編集して、ライブプレビューを確認" @@ -13590,10 +13521,8 @@ msgstr "{windowEndsOn}まで払い戻しの対象となります。これによ msgid "Email" msgstr "メールアドレス" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "メールアドレスは必須です。" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "メールアドレスを変更しました" @@ -13616,49 +13547,17 @@ msgstr "メールアドレスを変更しました" msgid "Email delivery" msgstr "メール配信" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "メールアドレスまたは電話番号" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "メールアドレスまたは電話番号の再認証が必要です" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "メールアドレスの再認証が必要です" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "メールアドレスを利用できません" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "現在、メールアドレスの更新はできません。しばらくしてからもう一度お試しいただくか、サポートにお問い合わせください。" - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "メールアドレスの更新が必要です" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "メールでご連絡ください。担当者がアカウントを確認します。SMSでの本人確認ができない旨をお伝えいただければ、その後の対応をいたします。返信はメールで行われるため、すぐには対応できません。" - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "メール認証ナグバー" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "メールアドレスの認証が必要です" @@ -13675,6 +13574,10 @@ msgstr "メール認証済み設定を上書き" msgid "Email verified successfully" msgstr "メールアドレスの認証が完了しました" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "現在のメールアドレスへのメールが届いていません。新しいメールアドレスを入力すると、コードが送信されます。" + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "埋め込み" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "埋め込みを非表示にしました" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "埋め込みを再表示しました" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "/tts 音声読み上げを有効にする" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "この設定を変更するには、アカウントで2段階認証を有効にしてください" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "有効な{theOtherPlatform}テンプレートURLまたはコードを入力してください。" #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "有効なメールアドレスを入力してください。" @@ -14298,33 +14199,11 @@ msgstr "有効なメールアドレスを入力してください。" msgid "Enter a valid message link." msgstr "有効なメッセージリンクを入力してください。" -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "有効な携帯電話番号を入力してください。" - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "有効な電話番号を入力してください" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "有効なユーザー名を入力してください({exampleFluxerTagFull})。" -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "受信できるメールアドレスを入力してください。そのアドレスにコードをお送りします。" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "コードを入力" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "全画面表示" msgid "Enter gift code…" msgstr "ギフトコードを入力…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "新しいメールアドレスを入力" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "パスキーが使えない場合は、バックアップコードのい msgid "Enter one of your backup codes." msgstr "バックアップコードのいずれかを入力してください。" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "電話番号を入力" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "認証アプリの{digitCount}桁のコード、またはバックアッ msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "認証アプリに表示された{digitCount}桁のコードを入力してください。" -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "{phoneNumber}に送信された{digitCount}桁のコードを入力してください。" - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "{0}に送信された{MFA_CODE_DIGIT_COUNT}桁のコードを入力してください。" - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "コードを入力" @@ -14408,11 +14267,6 @@ msgstr "続行する前にコードを入力してください。" msgid "Enter the code from your authenticator app." msgstr "認証アプリのコードを入力してください。" -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "{emailAddress}に送信されたコードを入力してください。" - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "現在のメールアドレスに送信されたコードを入力してください。" @@ -14426,6 +14280,7 @@ msgstr "メールアドレスに送信されたコードを入力してくださ msgid "Enter the code shown in the app to continue." msgstr "アプリに表示されているコードを入力して続行してください。" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "新しいメールアドレスに送信されたコードを入力してください。" @@ -14434,11 +14289,6 @@ msgstr "新しいメールアドレスに送信されたコードを入力して msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "メールアドレスに送信されたコードを入力して認証してください。コードが確認されると、パスワードが設定されます。" -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "メールコードを入力" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "コミュニティに参加するための招待リンクを入力してください。" @@ -14452,11 +14302,6 @@ msgstr "新しいメールアドレスを入力してください。このアド msgid "Enter the PIN for your security key to continue." msgstr "セキュリティキーのPINを入力して続行してください。" -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "SMSコードを入力" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "サインインを完了するには、ブラウザでこのコードを入力してください。" @@ -14492,11 +14337,6 @@ msgstr "名前を入力" msgid "Enter your password." msgstr "パスワードを入力してください。" -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "電話番号を入力" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "入室サウンド" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "入室サウンドのファイルサイズは{limit}以下にしてください。" #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "入室サウンドライブラリがいっぱいです" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "入室サウンドを削除しました" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "入室サウンドを保存しました" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "入室サウンド" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "入室サウンドを利用できません" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "有効期限:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "不適切なコンテンツのフィルター設定" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "クリップボードへのコピーに失敗しました" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "ウェブフックの作成に失敗しました" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "カスタムURLの読み込みに失敗しました。もう一度お試しください。" #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "ウェブフックの読み込みに失敗しました" @@ -15190,11 +15030,6 @@ msgstr "カスタムURLの削除に失敗しました。もう一度お試しく msgid "Failed to resend code. Try again." msgstr "コードの再送信に失敗しました。もう一度お試しください。" -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "認証コードの再送信に失敗しました。後でもう一度お試しください。" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "メッセージを送信できませんでした。長押しでオプシ msgid "Failed to send report. Try again." msgstr "報告の送信に失敗しました。もう一度お試しください。" -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "確認メールの送信に失敗しました。後でもう一度お試しください。" - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "起動できませんでした" @@ -15551,15 +15381,15 @@ msgstr "ユーザーで絞り込む" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "全員をフィルター" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "ロールがないメンバーをフィルター" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "このチャンネルをフォローする" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "フォローすると、選択したチャンネルでこれらの通知を受け取れます。" @@ -15773,7 +15603,7 @@ msgstr "フォロー中のチャンネル {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "フォロー中のチャンネル" @@ -15857,11 +15687,6 @@ msgstr "英国の方だけのお楽しみ…" msgid "For me" msgstr "自分用" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "この確認では、こちらからテキストメッセージを受け取るのではなく、こちらにテキストメッセージを送信していただきます。" - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "セキュリティ保護のため、ご本人確認をお願いします。" @@ -15905,7 +15730,7 @@ msgstr "ローディングスケルトンを強制表示" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "成人向けメディアを強制表示" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "AFKチャンネルへ強制移動" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "{permissionName}の権限がない状態を強制する" @@ -15948,7 +15773,7 @@ msgstr "カスタムURLの免責事項を常に表示" msgid "Force show voice connection" msgstr "音声接続を強制的に表示" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "スローモードを強制的に有効にする" @@ -16020,7 +15845,7 @@ msgstr "メディアを転送" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "メッセージを転送" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "ジオブロックオーバーレイ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "地域制限あり" @@ -16490,12 +16315,6 @@ msgstr "プロフィールごとにコミュニティを分けられるほか、 msgid "Get monthly" msgstr "毎月購入" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "新しいコードを取得" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "ギフトコード" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "ギフト期間" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "ギフトインベントリ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "ギフトインベントリフロー" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "ギフトが見つかりません" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "ギフトを引き換えました" @@ -17030,7 +16849,7 @@ msgstr "グループダイレクトメッセージ" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "{displayName}さん、アカウントを登録してアクセス権を失わないようにしましょう。" #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "{displayName}さん、メールアドレスの確認をお願いします。" +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "{displayName}さん、ご登録のメールアドレスにメールを送信できませんでした。アカウントを認証するには、有効なメールアドレスを追加してください。" + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "自分の画面共有を非表示にしますか?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "高" @@ -17755,11 +17579,6 @@ msgstr "ツールチップです" msgid "I changed my mind" msgstr "やっぱりやめます" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "別の方法を試す" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "特定のメッセージに関する報告の場合は、そのメッセ msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "特定のメッセージに関する報告の場合は、最も関連性の高いメッセージを報告してください。メッセージを報告していただくと、安全チームが状況をより正確に把握できます。コメントで詳細を追加すると、より迅速に確認できます。メッセージの報告では問題の全体像を伝えきれない場合にのみ、ユーザー全体を報告する手続きに進んでください。" -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "SMSで認証できない場合" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "いずれの認証方法も利用できない場合は、サポートにお問い合わせください。" - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "インターフェースのサイズ" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "無効な音声ファイル" @@ -18674,8 +18483,10 @@ msgstr "JSONが無効です。上記のURLからの応答をすべて貼り付 #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "音声通話に参加" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "ボイスチャンネルに参加" @@ -19613,16 +19424,6 @@ msgstr "Visionary について詳しく見る" msgid "Leave" msgstr "脱退" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "{count, plural, one {コミュニティ#件} other {コミュニティ#件}}を脱退し、このチェックを保留しますか?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "脱退して保留にする" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "開いているチャンネルに新しいメッセージが届いたときに、スクリーンリーダーで読み上げます。通知音には影響しません。" #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "コミュニティに自主的なモデレーションを許可する" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "ライブラリ" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "ライブラリがいっぱいです(最大{max}個のサウンド)。追加する前にいずれかを削除してください。" @@ -19812,7 +19613,7 @@ msgstr "ライブラリ: {count}/{max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "永久" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "読み込み中..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "読み込み中…" @@ -20261,7 +20062,7 @@ msgstr "ルイジアナ州" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "低" @@ -20416,7 +20217,7 @@ msgstr "コミュニティ機能を管理" msgid "Manage emoji & stickers" msgstr "絵文字とスタンプを管理" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "このチャンネルにメッセージを投稿できる受信ウェブフックを管理します。" @@ -20514,7 +20315,7 @@ msgstr "受信箱の未読チャンネルをすべて、確認なしですぐに msgid "Mark as read" msgstr "既読にする" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "使用済みにする" @@ -20676,14 +20477,14 @@ msgstr "成人向けコミュニティ" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "成人向けコンテンツ" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "成人向けコンテンツとコンテンツ警告" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "最大有効期間(日)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "ファミリー向けスペースを最大限保護" @@ -20924,7 +20725,7 @@ msgstr "再生停止" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "メンバーのBANを解除しました" msgid "Member updated" msgstr "メンバーを更新しました" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "メンバー認証" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "メンバー認証レベル" @@ -21048,7 +20849,7 @@ msgstr "ロールが付与されていない限り、オフラインになると msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "「{pinMessagesPermissionLabel}」の権限を持つメンバーは、すべてのユーザー向けにメッセージをピン留めできます。" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "ロールを持つメンバーはこれらのチェックをバイパスできます。公開スペースでは、認証を有効にすることをおすすめします。" @@ -21153,7 +20954,7 @@ msgstr "あなたへのメンションは{retentionDays}日間ここに表示さ #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "メンションのみ" @@ -21292,7 +21093,7 @@ msgstr "メッセージ表示設定はデスクトップ版でのみ利用でき msgid "Message editing" msgstr "メッセージの編集" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "メッセージを転送しました" @@ -21341,7 +21142,7 @@ msgstr "メッセージ入力ボタン" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "メッセージが長すぎます" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "DMリストのメッセージプレビュー" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "メッセージを公開しました" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "#{sourceName} に投稿されたメッセージが #{targetName} に表示されるようになりました。" #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "これらのアナウンスチャンネルで公開されたメッセージは、ここにコピーされます。" @@ -21504,7 +21305,7 @@ msgstr "これらのアナウンスチャンネルに投稿されたメッセー msgid "Messages you can bookmark" msgstr "ブックマークできるメッセージ" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "このコミュニティでのメッセージ送信は一時停止されています。" @@ -21733,30 +21534,30 @@ msgstr "1日後に期限切れをモック" msgid "Mock expires in 7 days" msgstr "7日後に期限切れをモック" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "ジオブロックオーバーレイをモック" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "ギフト在庫をモック" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "着信をモック" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "成人向けコンテンツのチャンネルゲート理由をモック" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "成人向けコンテンツのメディアゲート理由をモック" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "英国のジオをモック" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "さまざまなサイズとすべてのステータスの組み合わせのモックユーザーアバター。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "バリアントをモック" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "モックされたプロダクトフロー" @@ -22698,14 +22494,16 @@ msgstr "新規コミュニティをミュート中" msgid "New direct message" msgstr "新しいダイレクトメッセージ" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "新しいメールアドレス" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "新しいメールアドレス" @@ -22816,9 +22614,7 @@ msgstr "新しい順" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "次へ" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "いいえ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "{attachFilesPermission}の権限がありません" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission}の権限がありません" @@ -23005,7 +22801,7 @@ msgstr "保存する変更はありません" msgid "No channels available" msgstr "利用できるチャンネルがありません" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "チャンネルが見つかりませんでした" @@ -23233,11 +23029,6 @@ msgstr "権限が見つかりませんでした" msgid "No personal words yet." msgstr "まだ個人辞書に登録された単語はありません。" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "電話番号なし" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "結果なし" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "結果が見つかりませんでした" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "ユーザーが見つかりませんでした" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "認証は不要です。" @@ -23452,7 +23243,7 @@ msgstr "認証は不要です。" msgid "No verification methods available" msgstr "利用できる認証方法がありません" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "ウェブフックなし" @@ -23504,7 +23295,7 @@ msgstr "無変換" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "なし" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "なし(通常動作)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "ノルウェー語" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "メンバーになってからの期間が短すぎます" @@ -23798,9 +23589,9 @@ msgstr "物" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "オフ" @@ -23848,7 +23639,7 @@ msgstr "古い順" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "オン" @@ -23884,11 +23675,6 @@ msgstr "添付ファイルの一部が読み込めなかったか、アップロ msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "アップロードしようとしているファイルの中に、1ファイルあたりの最大サイズ{maxSizeFormatted}を超過しているものがあります。" -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "簡単な確認が1つあります" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "スピーカーのみ" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "この設定を変更できるのはコミュニティのオーナーのみです" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "ブラウザで絵文字を開く" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "絵文字ピッカーを開く" @@ -24382,12 +24168,8 @@ msgstr "メニューを開くアイコン" msgid "Open message history threshold" msgstr "メッセージ履歴のしきい値を開く" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "オーバーレイを開く" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "ポップアップを開く" @@ -24485,11 +24267,6 @@ msgstr "新しいアプリを開いてください。すでにサインインし msgid "Open the shortcuts list for quick actions." msgstr "ショートカットリストを開いて、すばやく操作できます。" -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "確認メールを開き、記載されているリンクを使用してください。リンクを開くと、このウィンドウが更新されます。" - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "音声とビデオの設定を開く" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "ブラウザを開いてサインインし、以下のコードを入力してアカウントをリンクしてください。" -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "メッセージアプリを開く" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "古い{PRODUCT_NAME}アプリを開き、「新しいデバイスをリンク」を選択して、以下のコードを入力してください。" -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "スマートフォンのメッセージアプリを開き、新しいメッセージを作成してください。" - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "スマートフォンのメッセージアプリを開き、新しいテキストメッセージを作成してください。" - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "その他のリアクション…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "電話番号の確認が現在利用できません。これは当社の問題であり、お客様の電話番号の問題ではありません。数分お待ちになってから、同じ電話番号をもう一度お試しください。" - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "フィッシング、詐欺、悪意のあるリンク、または現実世界に危害を及ぼす可能性のある虚偽の主張。" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "電話番号" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "電話番号" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "電話番号は必須です" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "電話番号を確認しました" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "電話番号の再認証が必要です" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "電話番号認証ステップ" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "このアカウントでは電話番号認証をご利用いただけません。別の方法を使用するか、サポートにお問い合わせください。" - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "電話番号認証が必要です" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "ユーザー名の後に続く4桁の数字を選択" msgid "Pick the appearance this administrator account should start with." msgstr "この管理者アカウントの初期の外観を選択してください。" -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "今すぐ完了できる方法を選んでください。" - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "ピクチャーインピクチャー" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "ピン留め" @@ -25471,7 +25176,7 @@ msgstr "グループDMをピン留め" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "すべてのメッセージをピン留め、またはピン留めを解除します。" #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "このメッセージをチャンネルにピン留めし、全員に表示します。" @@ -26227,18 +25932,18 @@ msgstr "プロフィールカラー" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "プロフィールをカスタマイズ" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "{selectedGuildName}のプロフィールをカスタマイズ" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "プロフィール編集フォーム" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "プロフィールタイプ" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "プロフィールを更新しました" @@ -26340,7 +26045,7 @@ msgstr "新しいオーディオデバイスの接続時に通知する" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "レイドの組織化" msgid "Rate" msgstr "速度" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "レート制限中" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "生の埋め込みJSON" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "{userName}さんを友達から削除しますか?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "すべて削除" @@ -27290,7 +26990,7 @@ msgstr "このメッセージから{emojiNameWithColons}のリアクションを #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "リアクションをすべて削除" @@ -27899,20 +27599,10 @@ msgstr "報告対象ユーザーのタグ(任意)" msgid "Reposts: <0>{countLabel}" msgstr "リポスト:<0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "まず新しいコードをリクエストしてください。" - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "新しいパスワード再設定リンクをリクエスト" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "まず認証コードをリクエストしてください。" - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "リクエスト" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "モデレーション操作に2段階認証を必須にする" @@ -27958,7 +27648,7 @@ msgstr "OAuth2コードグラントを必須にする" msgid "Require passkey" msgstr "パスキーを必須にする" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "モデレーターがBAN、キック、タイムアウト、メッセージの削除を行う前に、2段階認証を必須にします。" @@ -27972,46 +27662,6 @@ msgstr "必須" msgid "Required 2FA for moderation actions" msgstr "モデレーションアクションに2FAを必須にしました" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "必須アクションのデフォルトタブ" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "必須アクションフロー" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "必須アクション電話ステップ" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "必須アクションの再送信ローディング" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "必須アクション再送信結果" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "必須アクションの再認証テキスト" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "必須アクションのバリアント" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "必須アクションオーバーレイ" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "このボットを招待するには、リダイレクトURIと認証コードが必要です。" #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "メールアドレスの認証と、アカウント作成から5分以上経過している必要があります。" #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "メールアドレスの認証が必要です。" -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "電話番号の認証が必要です。" - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "「中」のすべての条件に加えて、コミュニティのメンバーになってから10分以上経過していること。" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "再送({resendSecondsRemaining}秒)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "再送({secondsRemaining}秒)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "再送信ボタンのローディング" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "コードを再送" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "メールを再送" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "再送信の結果" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "再送しました" @@ -28518,21 +28152,6 @@ msgstr "表示" msgid "Reveal spoiler" msgstr "ネタバレを表示" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "{productName}を継続して利用するには、メールアドレスの再確認または電話番号の確認を行ってください。" - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "{productName}を継続して利用するには、メールアドレスを再度確認してください。" - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "{productName}を継続して利用するには、電話番号を再認証してください。" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "彩度" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "スクラブプレビュー" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "チャンネルを検索" msgid "Search communities" msgstr "コミュニティを検索" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "国を検索…" - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "国を検索…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "お住まいの国を選択してください。" #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "選択…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "送信" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "送信 ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "別の報告を送信" msgid "Send button" msgstr "送信ボタン" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "コードを送信" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "メッセージを送信" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "メッセージ送信が無効" @@ -30151,32 +29759,11 @@ msgstr "保存済みメディア「{memeName}」を送信" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "/tts で読み上げメッセージを送信します。読み上げ機能をオンにしているメンバーは、メッセージを音声で聞くことができます。" -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "コード <0>{0} を <1>{1} に送信" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "以下の電話番号にコードを送信してください。" - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "このコードを送信" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "このピンを過去に戻しますか?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "送信先" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "ボイスメッセージを送信" msgid "Send:" msgstr "送信:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "{PRODUCT_NAME}からこの電話番号にSMSを送信すると費用が高額になるため、代わりにSMSを送信していただく必要があります。ご不便をおかけして申し訳ございません。このインスタンスの管理者に依頼して、この要件を解除してもらうことも可能です。" - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "{PRODUCT_NAME}からこの電話番号にSMSを送信すると費用が高額になるため、代わりにSMSを送信していただく必要があります。ご不便をおかけして申し訳ございません。<0>{SUPPORT_EMAIL}までご連絡いただければ、この要件を解除することも可能です。" - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "順番に送信" msgid "Serve the token file" msgstr "トークンファイルを配信" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "サービスエラー" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "「{label}」のカスタムショートカットを設定" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "カスタムステータスを設定" @@ -30486,18 +30060,6 @@ msgstr "ボイスリージョンを{region}に設定しました" msgid "Set the voice region to automatic" msgstr "ボイスリージョンを自動に設定しました" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "このチェックを後回しにする" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "このチェックを後回しにしますか?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "代名詞を設定" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "ステータスを設定" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "記録中はショートカットが一時停止されます。" #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "メッセージを短くして、もう一度お試しください。" @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "システムトレイまたはメニューバーに{productName}アイコンを表示する" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "コンテンツ警告を表示" @@ -31672,7 +31234,7 @@ msgstr "スローモード · 残り{remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "スローモードがオンです" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "スローモードが{durationLabel}に設定されています。次のメッセージを送信するまで少しお待ちください。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "スローモード残り時間" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "スローモードのシミュレーション" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "スローモード残り時間" @@ -31807,11 +31369,6 @@ msgstr "スムーズスクロール" msgid "Smoother video" msgstr "よりスムーズなビデオ" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "現在、SMS認証をご利用いただけません。しばらくしてからもう一度お試しいただくか、サポートにお問い合わせください。" - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "このスタンプの準備中に問題が発生しました。別のファイルをお試しいただくか、しばらくしてからもう一度お試しください。" #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "公開中に問題が発生しました。しばらくしてからもう一度お試しください。" @@ -32009,11 +31566,9 @@ msgstr "問題が発生しました。ページを再読み込みするか、も msgid "Something went wrong. Try again later." msgstr "問題が発生しました。後でもう一度お試しください。" -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "問題が発生しました。もう一度お試しください。" @@ -32352,11 +31907,6 @@ msgstr "SSOサインインがタイムアウトしました。もう一度お試 msgid "Staff controls" msgstr "スタッフコントロール" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "ご利用の携帯電話会社によっては、通常のメッセージ料金がかかる場合があります。" - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "スターアニメーション" msgid "Starred channels" msgstr "スター付きチャンネル" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "サブスクライバーのトランスポート:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "サブスクリプション" @@ -33051,14 +32599,12 @@ msgstr "サブスクリプションのシナリオ" msgid "Subtext" msgstr "サブテキスト" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "成功" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "ほとんどのコミュニティにおすすめ" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "システムとウェルカムメッセージ" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "{productName}スタッフからのシステムアナウンスです。ここに返信することはできません。" @@ -33765,11 +33311,6 @@ msgstr "テキスト選択" msgid "Text size" msgstr "文字サイズ" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "お使いの携帯電話からSMSを送信してください" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "タイ語" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "{productName}を安全に保つためのご協力ありがとうございます。できるだけ早くご報告内容を確認いたします。" -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "コードが正しくありません。確認してもう一度お試しください。" - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "コードの有効期限が切れました。新しいコードをリクエストしてください。" - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "完了しませんでした。一部のコミュニティからはすでに退出済みで、アカウントはまだロックされています。「このチェックを後回しにする」をもう一度押して、完了してください。" - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "処理できませんでした。何も変更されていません。もう一度お試しください。" - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "有効な色ではありません。16進数、rgb()、hsl()、または msgid "That doesn't look like a valid URL." msgstr "有効なURLではないようです。" -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "そのメールアドレスは既に使用されています。" - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "オーバーライドにより {permissions} が拒否されました" msgid "The page you're looking for doesn't exist or has been moved." msgstr "お探しのページは存在しないか、移動された可能性があります。" -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "電話番号の確認は保留されました。メールでの確認が1つ残っています。" - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "招待を作成できるチャンネルがありません。" msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "現在、このコミュニティには割り当てられるロールがありませんが、<0>{rolesSettingsPath}で新しいロールを作成できます。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "このチャンネルにはウェブフックが設定されていません。外部アプリがメッセージを投稿できるように、ウェブフックを作成してください。" @@ -34273,7 +33784,7 @@ msgstr "招待の読み込み中にエラーが発生しました。もう一度 msgid "There was an error loading the stickers. Try again." msgstr "スタンプの読み込み中にエラーが発生しました。もう一度お試しください。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "このチャンネルのウェブフックの読み込み中にエラーが発生しました。もう一度お試しください。" @@ -34417,7 +33928,7 @@ msgstr "このチャンネルでは、一度に10件までメッセージを投 msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "このチャンネルでは、一度に10件まで投稿でき、その後は6分ごとに1件追加で投稿できます。数分後にもう一度お試しください。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "このチャンネルはウェブフックに対応していません。" @@ -34550,12 +34061,12 @@ msgstr "この連携は未確認です。" #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "センシティブなコンテンツが含まれています。" -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "この会話は利用できません。" @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "このグループは人数が多すぎます" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "このグループは満員です。メンバーを追加する前に、誰かを削除してください。" @@ -34715,11 +34226,6 @@ msgstr "これは、コミュニティのカスタムステッカーです。" msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "このチャンネルは年齢制限付きです。年齢制限付きチャンネルにのみアップデートを送信できます。" -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "これはスパム対策の確認です。電話番号がアカウントにリンクされることはありません。" - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "無効です" msgid "This is how messages appear" msgstr "メッセージの表示例" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "現在、この操作はお使いのアカウントではご利用いただけません。このインスタンスの管理者に確認を依頼してください。" - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "現在、このアカウントではご利用いただけません。{supportEmail}までメールでご連絡ください。担当者が確認します。" - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "お探しのチャンネルではありません。" @@ -34792,11 +34288,6 @@ msgstr "これは最後のパスキーであり、パスキーはこのアカウ msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "これは最後のパスキーです。これを削除すると、パスキーを2つ目の認証要素として使用できなくなります。" -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "これは携帯電話番号ではないため、SMSを受信できません。携帯電話番号を試すか、誤りがあると思われる場合はサポートにご連絡ください。" - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "このメッセージはすでに削除されています。" #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "このメッセージはすでに公開されています" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "このメッセージはもう存在しません。" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "このニックネームはこのコミュニティ内でのみ表示されます" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "この電話番号は、こちらにテキストメッセージを送信して認証します。戻って電話番号認証をやり直すと、コードと送信先の番号を確認できます。" - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "この電話番号は、こちらからのSMSではなく、こちらにテキストメッセージを送信して認証する必要があります。" - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "この参加者はスピーカーミュート中です" msgid "This participant was deafened by moderators" msgstr "この参加者はモデレーターによりスピーカーミュートされています" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "この電話番号は使用できません。別の携帯電話番号を試すか、サポートにお問い合わせください。" - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "この電話番号はすでに使用されています。別の番号を試すか、サポートにお問い合わせください。" - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "このユーザーはこのコミュニティでロールを持ってい msgid "This user is already banned from the community." msgstr "このユーザーはすでにコミュニティからBANされています。" -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "このユーザーは利用できなくなりました。" @@ -35065,11 +34536,6 @@ msgstr "このユーザーはプラットフォーム管理者によってコミ msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "認証セッションの有効期限が切れました。{productName}に戻り、もう一度チェックアウトを開始してください。" -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "この認証セッションは期限切れです。もう一度やり直してください。" - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "これにより、サインアウトされ、キャッシュファイル msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "すべての外部リンクを信頼し、ドメインごとの警告をスキップします。既存の信頼済みドメインは上書きされます。セキュリティが低下します。" -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "メッセージを受信すると、このウィンドウは自動的に更新されます。" - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "タイトルバー" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "タイトルバープラットフォーム" @@ -35470,18 +34931,11 @@ msgstr "トーン" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "HDR画像を標準範囲にトーンマップし、ピーク輝度を下げます。" -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "試行回数が多すぎます。しばらく待ってから、もう一度お試しください。" - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "コミュニティが多すぎます" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "リクエストが多すぎます。後でもう一度お試しください。" @@ -36151,8 +35605,10 @@ msgstr "アップロードする絵文字を準備できませんでした。以 #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "利用不可" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "未分類" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "未登録アカウント" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "箇条書き" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "ピン留めを解除" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "メッセージのピン留めを解除" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "このメッセージのピン留めを解除しますか?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "未保存の変更" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "サポートされていないオーディオファイルです。" @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "自分でオンにするまで" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "未確認のメールアドレス" @@ -36958,12 +36414,7 @@ msgstr "このメッセージを表示するには、{productName}をアップ msgid "Update app" msgstr "アプリを更新" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "メールアドレスを更新" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "ステータスを更新" @@ -37306,18 +36757,13 @@ msgstr "画像URLを挿入する場所に「{url}」を使用してください msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "{readMessageHistoryPermissionLabel}の権限がないメンバー向けに、専用のモーダルでメッセージ履歴のしきい値の日付を設定します。" -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "別のメールアドレスを使用し、コードで認証してください。" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "実際の値を使用" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "実際のプレミアムタイプを使用" @@ -37335,16 +36781,6 @@ msgstr "別の方法を使う" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "認証アプリを使用して2段階認証コードを生成する" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "アクセスできるメールアドレスを使用してください。そのアドレスにコードを送信します。" - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "現在登録されているメールアドレスとは異なるものを使用してください。" - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "アプリ全体でダークテーマを使用" msgid "Use default" msgstr "デフォルトを使用" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "別のメールアドレスを使用" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "メールアドレスを使用" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "パスキーを2段階認証に使用しますか?" msgid "Use passkeys to sign in without a password" msgstr "パスキーを使用してパスワードなしでサインインする" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "電話番号を使用" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "再認証テキストを使用" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "ユーザーがチャンネルを移動" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "ユーザーが見つかりません" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "認証" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "認証とメンバーシップの制限" @@ -37970,15 +37387,8 @@ msgstr "認証コード" msgid "Verification code sent" msgstr "認証コードを送信しました" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "認証コードを新しいメールアドレスに送信しました。受信トレイをご確認ください。" - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "確認メールを送信しました。受信トレイをご確認ください。" @@ -38038,23 +37448,6 @@ msgstr "本人確認フォーム" msgid "Verify it's you" msgstr "ご本人確認" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "電話番号を認証" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "電話番号を認証" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "電話番号認証フォーム" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "認証アプリを追加する前にメールアドレスを確認してください。" #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "コミュニティのニックネーム、アバター、バナー、自己紹介、代名詞、アクセントカラーを変更する前に、メールアドレスを確認してください。" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "ユーザー名、表示名、アバター、バナー、自己紹介、代名詞、タイムゾーン、または{premiumProductName}バッジのプライバシーを変更する前に、メールアドレスを確認してください。" #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "コミュニティプロフィールを編集する前に、メールアドレスを確認してください。ここでは引き続きプレビューできます。" #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "プロフィールを編集する前にメールアドレスを確認してください。ここでは引き続きプレビューできます。" @@ -38113,11 +37506,6 @@ msgstr "友達リクエストを送信する前にメールアドレスを確認 msgid "Verify your email first" msgstr "まずメールアドレスを確認してください" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "{productName}を使い続けるには、メールアドレスまたは電話番号を確認してください。" - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "ギフトを購入するにはメールアドレスを認証してくだ msgid "Verify your email to change your username" msgstr "ユーザー名を変更するにはメールアドレスを確認してください" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "{productName}を使い続けるには、メールアドレスを確認してください。" - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "コミュニティプロフィールを編集するにはメールアドレスを確認してください" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "プロフィールを編集するにはメールアドレスを確認してください" @@ -38181,13 +37564,6 @@ msgstr "バーモント州" msgid "Version" msgstr "バージョン" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "非常に高い" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "音量を上げる" msgid "Wait a moment before deleting more messages." msgstr "続けてメッセージを削除する前に、少し時間をおいてください。" -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "しばらくお待ちください。メッセージを受信すると、このウィンドウは自動的に閉じます。" - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "メッセージ間の待機時間です。「{bypassSlowmodePermissionLabel}」権限を持つメンバーはこれをバイパスできます。" -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "そのままお待ちください" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "パスキーを待機中…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "{forwardChannelDisplayName}のスローモードが解除されるまで待っています。" #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "選択したチャンネルのいずれかでスローモードが解除されるまで待っています。" @@ -39115,16 +38482,6 @@ msgstr "このテーマは読み込めませんでした。破損しているか msgid "We couldn't remove that account. Try again." msgstr "アカウントを削除できませんでした。もう一度お試しください。" -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "この電話番号は自動で確認できませんでした。サポートに連絡すると、担当者がアカウントを確認します。" - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "この国への確認メッセージは送信できません。別の国の携帯電話番号をお試しいただくか、サポートにお問い合わせください。" - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "このアカウントには、既存の{premiumProductFullName}サブス msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "ブラジルでの{premiumProductName}の価格を値下げしました。月額{monthlyPrice}または年額{yearlyPrice}になります。" -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "続行する前に、確認ステップが1つ必要です。これはアカウントを保護し、{productName}からスパムを排除するのに役立ちます。" - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "続行する前に、確認ステップが2つ必要です。1つずつ表示します。" - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "アカウントにログインできなくなる場合に備え、これらのコードを今すぐ保存しておくことをお勧めします。" @@ -39167,11 +38514,6 @@ msgstr "{email}にコードを送信しました。" msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "ブラウザでサインイン画面が開いたら、{prefillEmail}を自動入力します。" -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "SMSコードが利用可能になり次第、送信します。" - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "生涯分の{PREMIUM_PRODUCT_NAME}以上を差し上げたいところですが、それでは時空連続体が壊れてしまいます。代わりに友達にギフトを贈りませんか?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "できるだけ早く処理します。アーカイブの準備ができましたら、メールでお知らせします。" #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "以前のメールアドレスを復元し、古いセッションからサインアウトして、電話番号を削除し、MFAを無効にし、新しいパスワードでアカウントを保護します。" +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "以前のメールアドレスを復元し、古いセッションからサインアウトし、MFAを無効にして、新しいパスワードでアカウントを保護します。" #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "パスワードを変更する前に、ご登録のメールアドレス msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "バックアップコードを表示する前に、認証コードをメールでお送りします。" -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "利用可能になり次第、SMSコードをお送りします。この番号はアカウントとは紐づけられません。一時的に、ユーザーIDを含まない暗号化されたマーカーのみを保持します。" - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "現在のメールアドレスと新しいメールアドレスを、それぞれワンタイムコードで確認します。" @@ -39307,7 +38645,7 @@ msgstr "ウェブフック {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "ウェブフックを作成しました" @@ -39331,7 +38669,7 @@ msgstr "ウェブフックを更新しました" msgid "Webhook URL" msgstr "ウェブフックURL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "ウェブフック" @@ -39486,8 +38824,8 @@ msgstr "共有中の画面が更新されていません" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "いまどうしてる?" @@ -39967,21 +39305,11 @@ msgstr "代わりに、<2>{rolesSettingsPath}で<1>{EVERYONE_MENTION}ロ msgid "You can sign back in at any time." msgstr "いつでもサインインし直せます。" -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "このインスタンスの管理者には、いつでも人による確認を依頼できます。" - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "アカウントを作成したり、サインインしたりすることは可能です。招待が後で再度有効になった場合は、この同じリンクを使って参加できます。" -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "いつでも {supportEmail} にメールして、人間によるレビューを依頼できます。" - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "リンク、絵文字、マークダウンが使えます。" @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "そこにはエクスプレッションを追加できません" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "タイムアウト中は新しいリアクションを追加できません。" @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "自分を友達に追加することはできません" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "ここではニックネームを変更できません" @@ -40094,7 +39422,7 @@ msgstr "自分に友達リクエストを送信することはできません。 msgid "You can't send messages in this channel." msgstr "このチャンネルではメッセージを送信できません。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "このコミュニティではメッセージを送信できません。" @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "このメンバーに対してこの操作を行う権限がありません。" #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "このボイスチャンネルに参加する権限がありません" @@ -40243,7 +39571,7 @@ msgstr "この絵文字の名前を変更する権限がありません。名前 msgid "You have been banned from this community." msgstr "このコミュニティからBANされました。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "{username}さんをブロックしました。メッセージを送信するにはブロックを解除してください。" @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "保存されていない変更があります。" #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "保存されていない変更があります。移動する前に保存またはリセットしてください。" @@ -40270,7 +39598,7 @@ msgstr "保存されていない変更があります。移動する前に保存 msgid "You haven't authorized any applications to access your account." msgstr "アカウントへのアクセスを許可したアプリはありません。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "このコミュニティのメンバーになってから間もないため、メッセージを送信できません。" @@ -40326,11 +39654,6 @@ msgstr "アカウントを作成するには利用規約に同意する必要が msgid "You must verify your email before sending a report." msgstr "報告を送信する前に、メールアドレスの確認が必要です。" -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "メールアドレスを変更するには、現在のメールアドレスにアクセスできる必要があります。電話番号認証を利用するか、サポートにお問い合わせください。" - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "これらの権限を編集するには、「{manageRolesPermissionLabel msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "これらの権限を編集するには、「{manageRolesPermissionLabel}」の権限が必要です。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "このチャンネルのウェブフックを表示・編集するには、「{manageWebhooksPermissionLabel}」の権限が必要です。" @@ -40384,18 +39707,14 @@ msgstr "コミュニティを作成する前に、アカウントの登録が必 msgid "You need to claim your account before you can start a direct message." msgstr "ダイレクトメッセージを開始する前に、アカウントを登録する必要があります。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "ダイレクトメッセージを送信するには、アカウントの登録が必要です。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "このコミュニティでメッセージを送信するには、アカウントの登録が必要です。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "このコミュニティでメッセージを送信するには、電話番号認証が必要です。" - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "ダイレクトメッセージを開始する前に、メールアドレ msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "{premiumProductFullName}を購入する前に、メールアドレスの確認が必要です。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "このコミュニティでメッセージを送信するには、メールアドレスの確認が必要です。" @@ -40424,11 +39743,6 @@ msgstr "このコミュニティでメッセージを送信するには、メー msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "あなた、または追加しようとしているメンバーの誰かが、グループDMを最大数まで開いています。いずれかのグループDMから退出してから、もう一度お試しください。" -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "{ownedNames}には残ります。コミュニティのオーナーは、自分のコミュニティから退出できません。" - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "モデレーターによりスピーカーミュートされました" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "認証後、{redirectHostname}に移動します。" -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "このチェックの対象となるコミュニティ{count, plural, one {#件} other {#件}}から退出し、アカウントは通常どおり使えるようになります。" - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "{guildNames}から退出します。投稿した内容は削除されず、後で再度参加できます。" - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "メールでの確認も完了させる必要があります。" - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "ペースが速すぎます" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "ペースが速すぎます。少し待ってからもう一度お試しください。" @@ -40636,7 +39935,7 @@ msgstr "メッセージの送信ペースが速すぎます" msgid "You're streaming!" msgstr "配信中!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "タイムアウト中です。タイムアウト期間が終了するまで、メッセージ送信、リアクション、音声が一時停止されます。" @@ -40764,25 +40063,25 @@ msgstr "{storeName}での更新の支払いに失敗しましたが、<0/>は<1> msgid "Your account" msgstr "アカウント" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "アカウントはすぐに元通りになり、電話番号は不要になります。これは恒久的な免除ではなく、後で再度確認を求める場合があります。" - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "アカウントの連携が完了しました。このタブを閉じてアプリに戻ることができます。" -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "アカウントが元に戻りました。" +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "アカウントが制限されています" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "アカウントが制限されています。解除方法については、メールをご確認ください。" #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "アカウントが未登録です。メールアドレスとパスワードを設定していないと、他のデバイスからサインインできず、アカウントにアクセスできなくなる可能性があります。今すぐアカウントを登録して安全を確保しましょう。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "アカウント作成から間もないため、このコミュニティではメッセージを送信できません。" @@ -40800,11 +40099,6 @@ msgstr "アカウントで多要素認証が必須ですが、このデバイス msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "パスワードでサインインする際に、アカウントは2段階認証で保護されなくなります。また、2段階認証が必須のコミュニティでは、上位の権限も失われます。" -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "アカウントはすぐに通常どおりに戻り、何も削除されません。このチェックは後でまたお願いする場合があります。" - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "お使いのカードで地域別価格を確認しています。通常 msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "カードが有効です。支払いページに移動します。" -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "お使いの通信事業者の情報によると、この番号は現在利用されていません。番号を確認してもう一度お試しいただくか、番号が正しい場合はサポートにご連絡ください。" - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "変更内容は、このチャンネルをフォローしているすべてのコミュニティに反映されます。反映には1分ほどかかる場合があります。公開されたメッセージごとに、3回のクイック編集が可能で、その後は20分ごとに1回の編集が可能です。" @@ -40869,21 +40158,6 @@ msgstr "デバイスから {name} 用の更新済みパスキーを保存する msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "デバイスから {name} 用の更新済みパスキーを保存するよう求められます。先ほど使用したのと同じスマートフォンまたはセキュリティキーを使用してください。" -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "メールアドレスを更新しました。" - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "メールアドレスでメッセージを受信できませんでした。アカウントに連絡できるよう、有効なメールアドレスを追加してください。" - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "メールアドレスでメッセージを受信できませんでした。{productName}を引き続きご利用いただくには、メールアドレスを更新してください。" - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "メールアドレスの認証が完了しました。アカウントにサインインできます。" @@ -41000,21 +40274,11 @@ msgstr "メッセージを更新できませんでした" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "最新のご購入は返金期間を過ぎています。請求に関する問題については、サポートにお問い合わせください。" -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "新しいメールアドレス" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "新しいニックネーム。空白のままにするとリセットされます。" -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "お客様の番号はアカウントにリンクされていません。暗号化されたマーカーのみを、ユーザーIDなしで、期間限定で保持します。" - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "支払いがキャンセルされました。このタブを閉じてアプリに戻ることができます。" @@ -41054,11 +40318,6 @@ msgstr "購入したギフト" msgid "your region" msgstr "お住まいの地域" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "引き続きご利用いただくには、追加のスパム対策認証が必要です。" - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/ko/messages.po b/fluxer_app/src/features/i18n/locales/ko/messages.po index 3a6cb6a73..c0a4e5546 100644 --- a/fluxer_app/src/features/i18n/locales/ko/messages.po +++ b/fluxer_app/src/features/i18n/locales/ko/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {#개 반응} other {#개 반응}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {#명} other {#명}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {#초} other {#초}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {초대 링크는 #초 후에 만료됩니다.} other {초대 링크는 #초 후에 만료됩니다.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount}개 선택됨" @@ -2252,7 +2252,7 @@ msgstr "1분" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12시간" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12개월 (1년)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "2단계 인증 백업" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2단계 인증 필수" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "멤버 3명 (입력 중)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3개월" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6시간" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6개월" @@ -2575,11 +2575,6 @@ msgstr "1분" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "새로운 데스크톱 버전이 있습니다. 설치 파일을 다운로드한 다음 실행하여 {productName}을 업데이트하세요." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "새 인증 코드가 전송되었습니다." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "계정 데이터" msgid "Account exists to spam, scam, or abuse the platform." msgstr "스팸, 사기 또는 플랫폼 악용을 목적으로 생성된 계정입니다." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "계정 제한됨" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "계정 상태" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "생성된 지 얼마 안 된 계정" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "계정 인증 필요" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "요청된 권한으로 봇을 커뮤니티에 추가" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "코멘트 추가 (선택 사항)" @@ -3054,8 +3052,10 @@ msgstr "이 채널에 주제 추가" msgid "Add a word…" msgstr "단어 추가…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "사용 가능한 이메일 추가" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "계정을 추가하여 계속하세요." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "먼저 계정에 이메일과 비밀번호를 추가하세요." @@ -3424,11 +3424,6 @@ msgstr "추가일: {createdDate} • 마지막 사용: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "추가 의견 (선택 사항)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "추가 인증 필요" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "모든 언어" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "이미 취소 예정" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "{productName} 안전팀에도 이 메시지를 신고" @@ -4713,11 +4708,6 @@ msgstr "통화 시작 전에 확인" msgid "Ask for a passkey after your password when you sign in" msgstr "로그인 시 비밀번호 입력 후 패스키를 요청합니다" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "이 인스턴스의 관리자에게 계정 검토를 요청하세요. 이 인스턴스는 독립적으로 운영되며, 관리자만 계정을 변경할 수 있습니다." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "보내는 메시지의 URL에서 추적 매개변수(예: utm_source, fb msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "보내는 메시지의 URL에서 추적 매개변수를 자동으로 제거" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "성인용으로 표시되지 않은 채널에서 노골적인 콘텐츠가 포함된 메시지를 자동으로 검사합니다." @@ -5359,8 +5349,6 @@ msgstr "지금은 부재중" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "뒤로" @@ -6506,11 +6494,6 @@ msgstr "카메라 및 가상 캡처 기기는 Wayland 시스템 선택기가 아 msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "참여자가 {voiceChannelCameraUserLimit}명을 초과하면 카메라가 꺼집니다" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "이메일에 접근할 수 없나요?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "여기에 파일을 올릴 수 없습니다" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "여기에 파일을 올릴 수 없습니다" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "이메일 변경" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "이모티콘 변경" @@ -7201,7 +7184,7 @@ msgstr "사용자 제한을 {oldCount}명에서 {newCount}명으로 변경했습 msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "맞춤 URL을 {oldCode}에서 {newCode}(으)로 변경했습니다" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "인증 레벨을 {oldLevel}에서 {newLevel}(으)로 변경했습니다" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "채널 또는 카테고리" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "채널 권한 재정의" @@ -7509,8 +7492,6 @@ msgstr "연결 상태를 확인하고 다시 시도해 주세요." msgid "Check your connection, then try again." msgstr "연결을 확인한 후 다시 시도해 주세요." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "시스템 선택기에서 디스플레이를 선택하세요" msgid "Choose a GIF" msgstr "GIF 선택" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "방법 선택" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "새 비밀번호를 입력하세요." @@ -7680,8 +7656,8 @@ msgstr "작업을 선택하세요." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "이모티콘 선택" @@ -7749,11 +7725,6 @@ msgstr "인스턴스 작동 방식 선택" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "도메인 소유권을 증명할 방법을 선택하세요. 한 가지만 완료하면 됩니다." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "인증 방법을 하나 선택하세요. 어떤 방법이든 이 확인 절차를 완료할 수 있습니다." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "{clientLabel}이(가) 내 커뮤니티에서 수행할 작업을 선택 msgid "Choose what friends see in their active now panel" msgstr "친구의 활동 중 패널에 표시되는 내용을 선택하세요" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "멤버가 게시하거나 커뮤니티 멤버에게 DM을 보내려면 갖춰야 할 조건을 선택하세요." @@ -8030,8 +8001,8 @@ msgstr "마이크 소리를 다듬어 음성을 선명하게 만듭니다." msgid "Clear" msgstr "지우기" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "다음 시간 후 지우기" @@ -8053,7 +8024,7 @@ msgstr "첨부 파일 모의 데이터 모두 지우기" msgid "Clear all token overrides" msgstr "모든 토큰 재정의 지우기" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "첨부 파일 모의 데이터 지우기" @@ -8066,14 +8037,14 @@ msgstr "명령어 지우기" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "상태 메시지 지우기" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "이 메시지의 모든 반응을 지울까요?" @@ -8124,7 +8095,7 @@ msgstr "검색어 지우기" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "석탄 테마" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "명령어" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "선택한 채널 중 하나 이상에 슬로우 모드가 켜져 있어 댓글을 사용할 수 없습니다. 전달 직후 슬로우 모드에 걸려 댓글이 전송되지 않습니다." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "{forwardChannelDisplayName} 채널에 슬로우 모드가 켜져 있어 댓글을 사용할 수 없습니다. 전달 직후 슬로우 모드에 걸려 댓글이 전송되지 않습니다." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "슬로우 모드 중에는 댓글을 사용할 수 없습니다." @@ -8670,11 +8639,11 @@ msgstr "커뮤니티" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "웹훅을 관리할 수 없는 커뮤니티 및 채널은 숨겨집니다." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "디스커버리에 등록된 커뮤니티는 모든 멤버의 메시지를 스캔해야 합니다. 디스커버리가 활성화된 동안에는 이 설정을 변경할 수 없습니다." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "디스커버리에 등록된 커뮤니티는 이메일 인증이 필수입니다. 디스커버리가 활성화된 동안에는 \"없음\"을 선택할 수 없습니다." @@ -8827,7 +8796,7 @@ msgstr "커뮤니티 이름" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "커뮤니티 닉네임" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "커뮤니티 프로필" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "커뮤니티 프로필 업데이트 완료" @@ -8907,7 +8876,7 @@ msgstr "커뮤니티 읽지 않은 메시지 배지 수준" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "커뮤니티 업데이트됨" @@ -8952,11 +8921,6 @@ msgstr "비교" msgid "Complete mature content check" msgstr "성인 콘텐츠 확인 완료하기" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "{productName}을(를) 계속 사용하려면 아래 인증 경로 중 하나를 완료하세요." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "결제 완료하기" msgid "Complete the mature content check to unlock mature media." msgstr "성인 콘텐츠 확인을 완료하여 성인 미디어를 잠금 해제하세요." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "{productName}을(를) 계속 사용하려면 아래에서 이메일 및 전화번호 인증을 완료하세요." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "{productName}을(를) 계속 사용하려면 필요한 인증을 완료하세요." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "프로필 배지 설정" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "연결 순서 변경됨" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "동의 필요" @@ -9349,16 +9304,6 @@ msgstr "범위 및 권한으로 승인 URL을 생성합니다." msgid "Contact" msgstr "연락처" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "고객지원팀에 문의하기" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "이 인스턴스의 관리자에게 문의하여 도움을 받으세요." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "콘텐츠 크리에이터" msgid "Content filter" msgstr "콘텐츠 필터" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "콘텐츠 필터링" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "콘텐츠 힌트" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "콘텐츠 안전 게이트" @@ -9416,12 +9361,10 @@ msgstr "좌클릭(버튼) 또는 우클릭(다른 요소)으로 상황별 메뉴 #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "채널 목록에서 음소거된 채널의 읽지 않은 메시지 표 msgid "Control which chat updates are announced by assistive technology." msgstr "보조 기술이 어떤 채팅 업데이트를 알릴지 제어합니다." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "대화를 찾을 수 없습니다" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "태그를 추가할 수 없습니다" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "그룹에 친구를 추가할 수 없습니다. 다시 시도해 주세요." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "그룹에 추가할 수 없습니다" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "테마 링크를 만들 수 없습니다" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "초대 링크를 만들 수 없습니다" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "유예 기간을 종료할 수 없습니다" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "초대 링크를 생성할 수 없습니다. 다시 시도해 주세요." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "이미지를 처리할 수 없습니다" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "메시지를 게시할 수 없습니다" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Visionary 커뮤니티에 다시 참여할 수 없습니다" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "입장음을 제거할 수 없습니다" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "채널 설정을 저장할 수 없습니다" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "입장음을 저장할 수 없습니다" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "신청을 철회할 수 없습니다" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "카운트다운 타이머" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "국가" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "관리자 계정 만들기" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "{addableCount, plural, other {남은 수신자 #명}}으로 그룹 DM을 만들고 나머지는 건너뛸까요?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "웹훅 만들기" @@ -10948,7 +10884,7 @@ msgstr "커뮤니티의 맞춤 이모티콘 {emojiName}" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "이 인스턴스에서는 맞춤 입장음이 활성화되지 않았습니다." @@ -11108,7 +11044,7 @@ msgstr "맞춤 음성 처리" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "맞춤 경고 문구" @@ -11530,11 +11466,6 @@ msgstr "기본 검색 엔진" msgid "Default shortcuts" msgstr "기본 단축키" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "기본 탭" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "델라웨어" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "이 메시지 삭제" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "이 메시지를 삭제할까요? 이 작업은 되돌릴 수 없습니다." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "이 메시지를 삭제하시겠어요? 삭제하면 복구할 수 없습니다. 이 메시지는 팔로우하는 모든 커뮤니티에서도 삭제됩니다." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "개발자 모드" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "개발자 옵션" @@ -12299,7 +12230,7 @@ msgstr "원본 입력" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "화면 모드" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "표시 이름" @@ -12858,7 +12789,7 @@ msgstr "{communityName}에 참여하시겠어요?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "박사님, 저는 미래에서 왔어요. 박사님이 발명한 타임머신을 타고 여기로 왔습니다. 이제 1985년으로 돌아가려면 박사님의 도움이 필요해요." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "프로필 현지 시간 편집" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "게시된 메시지를 수정하시겠어요?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "위 또는 아래의 내 메시지 수정" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "프로필 모양을 편집하고 실시간 미리보기를 확인하세요" @@ -13590,10 +13521,8 @@ msgstr "{windowEndsOn}까지 환불받을 수 있습니다. 구독도 즉시 취 msgid "Email" msgstr "이메일" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "이메일 주소를 입력해 주세요." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "이메일 변경 완료" @@ -13616,49 +13547,17 @@ msgstr "이메일 변경 완료" msgid "Email delivery" msgstr "이메일 전송" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "이메일 또는 전화번호" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "이메일 또는 전화번호 재인증 필요" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "이메일 재인증 필요" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "이메일 사용 불가" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "지금은 이메일을 업데이트할 수 없습니다. 나중에 다시 시도하거나 고객지원팀에 문의하세요." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "이메일 업데이트 필요" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "이메일로 문의하시면 담당자가 계정을 검토합니다. SMS 인증이 불가능하다고 알려주시면 저희가 처리하겠습니다. 답장은 이메일로 발송되므로 즉시 확인은 어렵습니다." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "이메일 인증 알림 표시줄" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "이메일 인증 필요" @@ -13675,6 +13574,10 @@ msgstr "이메일 인증 재정의" msgid "Email verified successfully" msgstr "이메일 인증이 완료되었습니다" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "현재 이메일 주소로 보내는 메일이 전달되지 않고 있습니다. 새 이메일 주소를 입력하시면 코드를 해당 주소로 보내드립니다." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "임베드" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "임베드를 숨겼습니다" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "임베드를 다시 표시했습니다" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "/tts 음성 재생 활성화" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "이 설정을 변경하려면 계정에 2단계 인증을 사용 설정하세요" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "유효한 {theOtherPlatform} 템플릿 URL 또는 코드를 입력하세요." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "유효한 이메일 주소를 입력하세요." @@ -14298,33 +14199,11 @@ msgstr "유효한 이메일 주소를 입력하세요." msgid "Enter a valid message link." msgstr "유효한 메시지 링크를 입력하세요." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "유효한 휴대폰 번호를 입력하세요." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "유효한 전화번호를 입력하세요" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "유효한 사용자 이름({exampleFluxerTagFull})을 입력하세요." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "사용할 수 있는 이메일 주소를 입력해 주세요. 해당 주소로 코드를 보내드립니다." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "코드 입력" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "전체 화면으로 보기" msgid "Enter gift code…" msgstr "선물 코드 입력…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "새 이메일 주소 입력" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "패스키를 사용할 수 없는 경우 백업 코드 중 하나를 입 msgid "Enter one of your backup codes." msgstr "백업 코드 중 하나를 입력하세요." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "전화번호 입력" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "인증 앱의 {digitCount}자리 코드나 백업 코드 중 하나를 msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "인증 앱의 {digitCount}자리 코드를 입력하세요." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "{phoneNumber}(으)로 전송된 {digitCount}자리 코드를 입력하세요." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "{0}(으)로 전송된 {MFA_CODE_DIGIT_COUNT}자리 코드를 입력하세요." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "코드 입력" @@ -14408,11 +14267,6 @@ msgstr "계속하려면 코드를 입력하세요." msgid "Enter the code from your authenticator app." msgstr "인증 앱의 코드를 입력하세요." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "{emailAddress}(으)로 전송된 코드를 입력하세요." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "현재 이메일로 전송된 코드를 입력하세요." @@ -14426,6 +14280,7 @@ msgstr "이메일로 전송된 코드를 입력하세요." msgid "Enter the code shown in the app to continue." msgstr "계속하려면 앱에 표시된 코드를 입력하세요." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "새 이메일 주소로 전송된 코드를 입력하세요." @@ -14434,11 +14289,6 @@ msgstr "새 이메일 주소로 전송된 코드를 입력하세요." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "이메일로 전송된 코드를 입력하여 인증해 주세요. 코드가 확인되면 비밀번호가 설정됩니다." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "이메일 코드 입력" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "커뮤니티에 참여하려면 초대 링크를 입력하세요." @@ -14452,11 +14302,6 @@ msgstr "새 이메일 주소를 입력해 주세요. 다음 단계에서 인증 msgid "Enter the PIN for your security key to continue." msgstr "계속하려면 보안 키의 PIN을 입력하세요." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "SMS 코드 입력" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "브라우저에 이 코드를 입력하여 로그인을 완료하세요." @@ -14492,11 +14337,6 @@ msgstr "이름을 입력하세요" msgid "Enter your password." msgstr "비밀번호를 입력하세요." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "전화번호를 입력하세요" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "입장음" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "입장음 파일은 {limit} 이하여야 합니다." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "입장음 라이브러리가 가득 찼습니다" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "입장음 제거됨" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "입장음 저장됨" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "입장음" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "입장음을 사용할 수 없습니다" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "만료:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "음란물 필터 설정" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "클립보드에 복사하지 못했습니다" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "웹훅 생성 실패" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "맞춤 URL을 불러오지 못했습니다. 다시 시도해 주세요." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "웹훅을 불러오지 못했습니다" @@ -15190,11 +15030,6 @@ msgstr "맞춤 URL을 제거하지 못했습니다. 다시 시도해 주세요." msgid "Failed to resend code. Try again." msgstr "코드 재전송에 실패했습니다. 다시 시도해 주세요." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "인증 코드 재전송에 실패했습니다. 나중에 다시 시도해 주세요." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "메시지 전송 실패. 길게 눌러 옵션을 확인하세요." msgid "Failed to send report. Try again." msgstr "신고 전송에 실패했습니다. 다시 시도해 주세요." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "인증 이메일 전송에 실패했습니다. 나중에 다시 시도해 주세요." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "시작 실패" @@ -15551,15 +15381,15 @@ msgstr "사용자로 필터링" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "모두 필터링" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "역할 없는 멤버 필터링" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "이 채널을 팔로우하세요" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "선택한 채널에서 이 공지사항을 받아보세요." @@ -15773,7 +15603,7 @@ msgstr "팔로우한 채널 {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "팔로우하는 채널" @@ -15857,11 +15687,6 @@ msgstr "영국인 전용입니다..." msgid "For me" msgstr "직접 구매" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "이 확인 절차에서는 메시지를 받는 대신 저희에게 문자 메시지를 보내주셔야 합니다." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "안전을 위해 본인 확인 후 계속해 주세요." @@ -15905,7 +15730,7 @@ msgstr "로딩 스켈레톤 강제 표시" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "성인용 미디어 강제 적용" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "자리 비움 채널로 강제 이동" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "{permissionName} 권한 없음 강제 적용" @@ -15948,7 +15773,7 @@ msgstr "맞춤 URL 고지 사항 강제 표시" msgid "Force show voice connection" msgstr "음성 연결 강제 표시" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "슬로우 모드 강제 활성화" @@ -16020,7 +15845,7 @@ msgstr "미디어 전달" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "메시지 전달" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "지역 차단 오버레이" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "지역 제한됨" @@ -16490,12 +16315,6 @@ msgstr "애니메이션 아바타 및 배너, 구독자 배지, 사용자 이름 msgid "Get monthly" msgstr "월간 구독하기" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "새 코드 받기" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "선물 코드" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "선물 기간" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "선물함" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "선물함 플로우" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "선물을 찾을 수 없음" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "선물 사용 완료" @@ -17030,7 +16849,7 @@ msgstr "그룹 DM" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "{displayName}님, 계정을 등록해 액세스 권한을 잃지 않도록 하세요." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "{displayName}님, 이메일 주소를 확인해 주세요." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "안녕하세요 {displayName}님, 이메일 주소로 메일을 보낼 수 없습니다. 계정을 인증하려면 유효한 이메일 주소를 추가해 주세요." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "내 화면 공유를 숨길까요?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "높음" @@ -17755,11 +17579,6 @@ msgstr "툴팁입니다" msgid "I changed my mind" msgstr "마음이 바뀌었어요" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "다른 방법이 필요해요" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "특정 메시지에 대한 신고라면 해당 메시지를 직접 신 msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "특정 메시지에 대한 신고라면, 해당 메시지를 직접 신고해 주세요. 메시지 신고는 안전팀이 상황을 명확하게 파악하는 데 도움이 되며, 의견란에 세부 정보를 추가하면 더 빠르게 검토할 수 있습니다. 메시지 신고만으로는 전체적인 문제를 파악하기 어렵다고 판단될 경우에만 사용자 전체 신고를 진행해 주세요." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "SMS로 인증할 수 없는 경우" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "어떤 인증 방법도 사용할 수 없는 경우 고객지원팀에 문의해 도움을 받으세요." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "인터페이스 크기" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "유효하지 않은 오디오 파일" @@ -18674,8 +18483,10 @@ msgstr "JSON이 유효하지 않습니다. 위 URL에서 전체 응답을 붙여 #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "음성 통화 참여" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "음성 채널 참여" @@ -19613,16 +19424,6 @@ msgstr "Visionary에 대해 자세히 알아보기" msgid "Leave" msgstr "나가기" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "{count, plural, one {#개의 커뮤니티} other {#개의 커뮤니티}}를 나가고 이 확인을 보류하시겠어요?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "나가고 보류하기" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "열려 있는 채널에 새 메시지가 도착하면 화면 낭독기가 메시지를 읽어줍니다. 알림 소리에는 영향을 주지 않습니다." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "커뮤니티가 자율적으로 운영되도록 허용" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "라이브러리" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "라이브러리가 가득 찼습니다(최대 {max}개). 다른 사운드를 추가하기 전에 하나를 삭제하세요." @@ -19812,7 +19613,7 @@ msgstr "라이브러리: {count}/{max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "평생" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "불러오는 중..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "불러오는 중…" @@ -20261,7 +20062,7 @@ msgstr "루이지애나" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "낮음" @@ -20416,7 +20217,7 @@ msgstr "커뮤니티 기능 관리" msgid "Manage emoji & stickers" msgstr "이모티콘 및 스티커 관리" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "이 채널에 메시지를 게시할 수 있는 수신 웹훅을 관리합니다." @@ -20514,7 +20315,7 @@ msgstr "받은 메시지함의 읽지 않은 모든 채널을 확인 요청 없 msgid "Mark as read" msgstr "읽음으로 표시" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "사용 완료로 표시" @@ -20676,14 +20477,14 @@ msgstr "성인 커뮤니티" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "성인 콘텐츠" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "성인 콘텐츠 및 콘텐츠 경고" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "최대 수명(일)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "가족 친화적인 공간을 위한 최고의 보호" @@ -20924,7 +20725,7 @@ msgstr "재생 중지" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "멤버 차단 해제됨" msgid "Member updated" msgstr "멤버 업데이트됨" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "멤버 인증" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "멤버 인증 레벨" @@ -21048,7 +20849,7 @@ msgstr "역할이 부여되지 않으면 오프라인 시 멤버가 제거됩니 msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "\"{pinMessagesPermissionLabel}\" 권한이 있는 멤버는 모두가 볼 수 있도록 메시지를 고정할 수 있습니다." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "역할이 있는 멤버는 이 검사를 우회할 수 있습니다. 공개 공간의 경우, 인증 활성화를 권장합니다." @@ -21153,7 +20954,7 @@ msgstr "회원님을 멘션한 메시지가 {retentionDays}일 동안 여기에 #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "멘션만" @@ -21292,7 +21093,7 @@ msgstr "메시지 표시 설정은 데스크톱에서만 사용할 수 있습니 msgid "Message editing" msgstr "메시지 수정" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "메시지 전달됨" @@ -21341,7 +21142,7 @@ msgstr "메시지 입력 버튼" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "메시지가 너무 깁니다" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "DM 목록의 메시지 미리보기" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "메시지가 게시되었습니다" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "{sourceName} 채널에 게시된 메시지가 이제 {targetName} 채널에 표시됩니다." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "이 공지 채널에 게시된 메시지가 여기에 복사됩니다." @@ -21504,7 +21305,7 @@ msgstr "이 공지 채널에 게시된 메시지가 내 채널로 복사됩니 msgid "Messages you can bookmark" msgstr "북마크할 수 있는 메시지" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "이 커뮤니티에서는 메시지 전송이 일시적으로 중지되었습니다." @@ -21733,30 +21534,30 @@ msgstr "모의 1일 후 만료" msgid "Mock expires in 7 days" msgstr "모의 7일 후 만료" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "모의 지역 차단 오버레이" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "모의 선물함" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "모의 수신 전화" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "모의 성인 콘텐츠 채널 게이트 사유" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "모의 성인 콘텐츠 미디어 게이트 사유" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "모의 영국 지역" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "다양한 크기와 모든 상태 조합의 모의 사용자 아바타입니다." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "모의 변형" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "모의 제품 흐름" @@ -22698,14 +22494,16 @@ msgstr "새로운 커뮤니티 음소거됨" msgid "New direct message" msgstr "새로운 DM" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "새 이메일" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "새 이메일 양식" @@ -22816,9 +22614,7 @@ msgstr "최신순" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "다음" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "아니요" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "{attachFilesPermission} 권한 없음" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission} 권한 없음" @@ -23005,7 +22801,7 @@ msgstr "저장할 변경사항 없음" msgid "No channels available" msgstr "채널을 찾을 수 없습니다" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "채널을 찾을 수 없습니다" @@ -23233,11 +23029,6 @@ msgstr "일치하는 권한이 없습니다" msgid "No personal words yet." msgstr "아직 추가한 단어가 없어요." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "전화번호 없음" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "결과 없음" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "검색 결과 없음" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "사용자를 찾을 수 없습니다" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "인증이 필요하지 않습니다." @@ -23452,7 +23243,7 @@ msgstr "인증이 필요하지 않습니다." msgid "No verification methods available" msgstr "사용 가능한 인증 방법 없음" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "웹훅 없음" @@ -23504,7 +23295,7 @@ msgstr "무변환" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "사용 안 함" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "없음 (기본 동작)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "노르웨이어" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "가입 기간 부족" @@ -23798,9 +23589,9 @@ msgstr "사물" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "꺼짐" @@ -23848,7 +23639,7 @@ msgstr "오래된 순" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "켜짐" @@ -23884,11 +23675,6 @@ msgstr "첨부파일 중 일부를 읽거나 업로드할 수 없습니다. 파 msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "업로드하려는 파일 중 하나 이상이 파일당 최대 크기인 {maxSizeFormatted}을(를) 초과합니다." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "간단한 확인 절차" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "스피커만" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "커뮤니티 소유자만 이 설정을 변경할 수 있습니다" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "브라우저에서 이모티콘 열기" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "이모티콘 선택기 열기" @@ -24382,12 +24168,8 @@ msgstr "메뉴 열기 아이콘" msgid "Open message history threshold" msgstr "메시지 기록 기준일 설정 열기" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "오버레이 열기" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "팝업 열기" @@ -24485,11 +24267,6 @@ msgstr "새 앱을 열어보세요. 이미 로그인되어 있습니다." msgid "Open the shortcuts list for quick actions." msgstr "빠른 작업을 위한 단축키 목록을 엽니다." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "인증 이메일을 열고 안에 있는 링크를 사용하세요. 링크를 열면 이 창이 업데이트됩니다." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "오디오 및 비디오 설정 열기" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "브라우저를 열고 로그인한 다음 아래 코드를 입력하여 계정을 연결하세요." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "메시지 열기" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "기존 {PRODUCT_NAME} 앱을 열고 새 기기 연결을 선택한 다음 아래 코드를 입력하세요." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "휴대폰 메시지 앱을 열고 새 문자 메시지를 작성해 주세요." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "휴대폰 메시지 앱을 열고 새 문자 메시지를 시작하세요." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "다른 반응…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "전화번호 확인 시스템에 일시적으로 문제가 발생했습니다. 고객님의 번호가 아닌 저희 시스템 문제입니다. 몇 분 후에 같은 번호로 다시 시도해 주세요." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "피싱, 사기, 악성 링크 또는 실제 피해를 유발할 수 있는 허위 주장." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "전화번호" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "전화번호" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "전화번호를 입력해 주세요" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "전화번호 인증 완료" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "전화번호 재인증 필요" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "전화번호 단계" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "이 계정에서는 전화 인증을 사용할 수 없습니다. 다른 방법을 사용하거나 고객지원팀에 문의하세요." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "전화번호 인증 필요" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "사용자 이름 뒤에 오는 4자리 숫자 선택" msgid "Pick the appearance this administrator account should start with." msgstr "이 관리자 계정에서 처음 사용할 테마를 선택하세요." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "지금 완료할 수 있는 방법을 선택하세요." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "화면 속 화면" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "고정" @@ -25471,7 +25176,7 @@ msgstr "그룹 DM 고정" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "모든 메시지를 고정하거나 고정 해제합니다." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "모든 채널 멤버가 볼 수 있도록 이 메시지를 고정합니다." @@ -26227,18 +25932,18 @@ msgstr "프로필 색상" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "프로필 맞춤 설정" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "{selectedGuildName} 프로필 맞춤 설정" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "프로필 맞춤 설정 양식" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "프로필 유형" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "프로필 업데이트 완료" @@ -26340,7 +26045,7 @@ msgstr "새 오디오 장치가 연결되면 알림 표시" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "레이드 조율" msgid "Rate" msgstr "속도" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "속도 제한됨" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "원시 임베드 JSON" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "{userName}님을 친구 목록에서 삭제하시겠어요?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "모두 삭제" @@ -27290,7 +26990,7 @@ msgstr "이 메시지에서 {emojiNameWithColons} 반응을 모두 삭제하시 #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "모든 반응 삭제" @@ -27899,20 +27599,10 @@ msgstr "신고 사용자 태그 (선택 사항)" msgid "Reposts: <0>{countLabel}" msgstr "재게시: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "먼저 새 코드를 요청하세요." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "새로운 재설정 링크 요청" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "먼저 인증 코드를 요청하세요." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "요청" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "모더레이션 작업에 2단계 인증 필수" @@ -27958,7 +27648,7 @@ msgstr "OAuth2 코드 그랜트 필요" msgid "Require passkey" msgstr "패스키 필수" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "모더레이터가 멤버를 차단, 추방, 타임아웃하거나 메시지를 삭제하기 전에 2단계 인증을 요구합니다." @@ -27972,46 +27662,6 @@ msgstr "필수" msgid "Required 2FA for moderation actions" msgstr "모더레이션 작업에 2단계 인증을 필수로 설정했습니다" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "필수 작업 기본 탭" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "필수 작업 흐름" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "필수 작업 전화 단계" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "필수 작업 재전송 로딩 중" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "필수 작업 재전송 결과" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "필수 작업 재인증 텍스트" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "필수 작업 변형" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "필수 작업 오버레이" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "이 봇을 초대할 때 리디렉션 URI와 인증 코드가 필요합니다." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "인증된 이메일 주소와 5분 이상 된 계정이 필요합니다." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "인증된 이메일 주소가 필요합니다." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "전화번호 인증이 필요합니다." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "보통 수준의 모든 조건에 더해, 커뮤니티에 가입한 지 10분이 지나야 합니다." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "재전송 ({resendSecondsRemaining}초)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "재전송 ({secondsRemaining}초)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "재전송 버튼 로딩 중" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "코드 재전송" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "이메일 재전송" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "재전송 결과" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "다시 보냄" @@ -28518,21 +28152,6 @@ msgstr "보기" msgid "Reveal spoiler" msgstr "스포일러 보기" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "{productName}을(를) 계속 사용하려면 이메일을 재인증하거나 전화번호를 인증하세요." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "{productName}을(를) 계속 사용하려면 이메일을 다시 인증하세요." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "{productName}을(를) 계속 사용하려면 전화번호를 다시 인증하세요." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "채도" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "스크러빙 미리보기" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "채널 검색" msgid "Search communities" msgstr "커뮤니티 검색" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "국가 검색..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "국가 검색…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "거주 국가를 선택하세요." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "선택…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "보내기" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "보내기 ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "다른 신고 보내기" msgid "Send button" msgstr "보내기 버튼" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "코드 전송" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "메시지 보내기" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "메시지 전송 비활성화됨" @@ -30151,32 +29759,11 @@ msgstr "저장된 미디어 {memeName} 보내기" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "/tts로 텍스트 음성 변환 메시지를 보낼 수 있습니다. 텍스트 음성 변환을 켠 멤버에게는 소리로 재생됩니다." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "코드 <0>{0}을(를) <1>{1}(으)로 보내기" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "아래 전화번호로 코드를 보내주세요." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "코드 전송" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "이 핀을 과거로 돌려보낼까요?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "다음으로 전송" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "음성 메시지 보내기" msgid "Send:" msgstr "송신:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "{PRODUCT_NAME}에서 이 전화번호로 SMS를 보내는 비용이 너무 비싸서, 대신 고객님께서 저희에게 SMS를 보내주셔야 합니다. 불편하시겠지만, 이 인스턴스의 관리자에게 요청하여 이 요구 사항을 해제할 수도 있습니다." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "{PRODUCT_NAME}에서 이 전화번호로 SMS를 보내는 비용이 너무 비싸서, 대신 고객님께서 저희에게 SMS를 보내주셔야 합니다. 불편하시겠지만, <0>{SUPPORT_EMAIL}로 문의하여 이 요구 사항을 해제할 수도 있습니다." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "직렬 전송" msgid "Serve the token file" msgstr "토큰 파일 제공" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "서비스 오류" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "\"{label}\"에 대한 사용자 지정 단축키 설정" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "상태 메시지 설정" @@ -30486,18 +30060,6 @@ msgstr "음성 지역을 {region}(으)로 설정했습니다" msgid "Set the voice region to automatic" msgstr "음성 지역을 자동으로 설정했습니다" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "이 확인을 나중으로 미루기" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "이 확인을 나중으로 미룰까요?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "대명사 설정" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "상태 설정" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "기록하는 동안에는 단축키가 일시 중지됩니다." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "메시지를 줄여서 다시 시도해 주세요." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "시스템 트레이 또는 메뉴 막대에 {productName} 아이콘 표시" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "콘텐츠 경고 표시" @@ -31672,7 +31234,7 @@ msgstr "슬로우 모드 · {remaining} 대기" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "슬로우 모드 활성화됨" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "슬로우 모드가 {durationLabel}로 설정되어 있습니다. 다음 메시지를 보내기 전에 기다려 주세요." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "슬로우 모드 남은 시간" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "슬로우 모드 시뮬레이션" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "슬로우 모드 남은 시간" @@ -31807,11 +31369,6 @@ msgstr "부드러운 스크롤" msgid "Smoother video" msgstr "더 부드러운 영상" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "지금은 SMS 인증을 이용할 수 없습니다. 나중에 다시 시도하거나 고객지원팀에 문의하세요." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "스티커를 준비하는 중에 문제가 발생했습니다. 다른 파일을 시도하거나 잠시 후에 다시 시도해 주세요." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "게시하는 동안 오류가 발생했습니다. 잠시 후 다시 시도해 주세요." @@ -32009,11 +31566,9 @@ msgstr "문제가 발생했습니다. 페이지를 새로고침하거나 다시 msgid "Something went wrong. Try again later." msgstr "문제가 발생했습니다. 나중에 다시 시도해 주세요." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "문제가 발생했습니다. 다시 시도해 주세요." @@ -32352,11 +31907,6 @@ msgstr "SSO 로그인 시간이 초과되었습니다. 다시 시도해 주세 msgid "Staff controls" msgstr "직원 도구" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "이동통신사의 표준 메시지 요금이 부과될 수 있습니다." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "애니메이션 별표" msgid "Starred channels" msgstr "즐겨찾는 채널" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "구독자 전송:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "구독" @@ -33051,14 +32599,12 @@ msgstr "구독 시나리오" msgid "Subtext" msgstr "보조 텍스트" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "성공" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "대부분의 커뮤니티에 권장" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "시스템 및 환영" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "{productName} 직원의 시스템 공지입니다. 여기에 답장할 수 없습니다." @@ -33765,11 +33311,6 @@ msgstr "텍스트 선택" msgid "Text size" msgstr "글자 크기" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "휴대폰으로 문자 보내기" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "태국어" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "{productName}을(를) 안전하게 유지하는 데 도움을 주셔서 감사합니다. 최대한 빨리 신고 내용을 검토하겠습니다." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "코드가 올바르지 않습니다. 다시 확인하고 시도해 주세요." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "코드가 만료되었습니다. 새 코드를 요청해 주세요." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "완료되지 않았습니다. 일부 커뮤니티는 이미 나가졌을 수 있으며 계정은 여전히 잠겨 있습니다. 완료하려면 \"이 확인을 나중으로 미루기\"를 다시 누르세요." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "처리되지 않았습니다. 변경된 내용은 없습니다. 다시 시도해 주세요." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "유효한 색상이 아닌 것 같아요. HEX, rgb(), hsl() 또는 CSS msgid "That doesn't look like a valid URL." msgstr "유효한 URL이 아닌 것 같아요." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "이미 사용 중인 이메일입니다." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "재정의가 {permissions} 권한을 거부했습니다" msgid "The page you're looking for doesn't exist or has been moved." msgstr "찾으시는 페이지가 없거나 이동되었어요." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "휴대폰 인증은 보류되었습니다. 이메일 인증 단계가 하나 남았습니다." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "초대를 만들 수 있는 채널이 없습니다." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "현재 이 커뮤니티에 할당할 역할이 없습니다. <0>{rolesSettingsPath}에서 새 역할을 만들 수 있습니다." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "이 채널에 설정된 웹훅이 없습니다. 외부 애플리케이션이 메시지를 보낼 수 있도록 웹훅을 만드세요." @@ -34273,7 +33784,7 @@ msgstr "초대를 불러오는 중 오류가 발생했습니다. 다시 시도 msgid "There was an error loading the stickers. Try again." msgstr "스티커를 불러오는 중 오류가 발생했습니다. 다시 시도해 주세요." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "이 채널의 웹훅을 불러오는 중 오류가 발생했습니다. 다시 시도해 주세요." @@ -34417,7 +33928,7 @@ msgstr "이 채널은 10개의 메시지를 연속으로 게시할 수 있으며 msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "이 채널은 10개의 메시지를 연속으로 게시할 수 있으며, 이후 6분마다 하나씩 추가로 게시할 수 있습니다. 몇 분 후에 다시 시도해 주세요." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "이 채널은 웹훅을 지원하지 않습니다." @@ -34550,12 +34061,12 @@ msgstr "이 연결은 확인되지 않았습니다." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "민감한 콘텐츠가 포함되어 있습니다." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "이 대화는 더 이상 이용할 수 없습니다." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "그룹 인원이 너무 많습니다" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "이 그룹이 가득 찼습니다. 다른 사람을 추가하려면 먼저 누군가를 내보내세요." @@ -34715,11 +34226,6 @@ msgstr "이 스티커는 커뮤니티의 맞춤 스티커입니다." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "이 채널은 연령 제한이 있습니다. 업데이트는 연령 제한 채널로만 전송될 수 있습니다." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "스팸 방지 확인입니다. 전화번호는 계정에 연결되지 않습니다." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "비활성화됨" msgid "This is how messages appear" msgstr "메시지가 표시되는 방식입니다" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "이 기능은 현재 계정에서 사용할 수 없습니다. 이 인스턴스의 관리자에게 검토를 요청하세요." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "이 기능은 현재 계정에서 사용할 수 없습니다. {supportEmail}으로 이메일을 보내주시면 담당자가 검토해 드리겠습니다." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "찾으시는 채널이 아닌 것 같아요." @@ -34792,11 +34288,6 @@ msgstr "이것이 마지막 패스키이며, 패스키가 두 번째 인증 수 msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "이것이 마지막 패스키입니다. 삭제하고 나면 패스키를 두 번째 인증 수단으로 사용할 수 없습니다." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "이 번호는 휴대폰 번호가 아니어서 문자를 받을 수 없습니다. 휴대폰 번호를 입력하거나, 잘못되었다고 생각되면 고객지원팀에 문의하세요." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "이 메시지는 이미 삭제되었습니다." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "이 메시지는 이미 게시되었습니다" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "이 메시지는 더 이상 존재하지 않습니다." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "이 닉네임은 이 커뮤니티에서만 표시됩니다" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "이 번호는 직접 문자를 보내서 인증합니다. 코드와 문자를 보낼 번호를 받으려면 뒤로 가서 전화 인증을 다시 시작하세요." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "이 번호는 SMS를 받는 대신 직접 문자를 보내 인증해야 합니다." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "이 참가자는 소리 꺼짐 상태입니다" msgid "This participant was deafened by moderators" msgstr "이 참가자는 모더레이터가 소리를 껐습니다" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "이 전화번호는 사용할 수 없습니다. 다른 휴대폰 번호를 사용해 보거나 고객지원팀에 문의하세요." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "이 전화번호는 이미 사용 중입니다. 다른 번호를 사용해 보거나 고객지원팀에 문의하세요." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "이 사용자는 이 커뮤니티에서 역할이 없습니다." msgid "This user is already banned from the community." msgstr "이 사용자는 이미 커뮤니티에서 차단되었습니다." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "이 사용자를 더 이상 찾을 수 없습니다." @@ -35065,11 +34536,6 @@ msgstr "이 사용자는 플랫폼 관리자에 의해 이 커뮤니티에 강 msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "인증 세션이 만료되었습니다. {productName}으로 돌아가서 다시 결제를 시작해 주세요." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "인증 세션이 만료되었습니다. 다시 시작해 주세요." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "로그아웃되고 캐시된 파일과 저장된 세션이 삭제되며 msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "모든 외부 링크를 신뢰하고 모든 도메인에 대한 경고를 건너뜁니다. 기존 신뢰 도메인은 교체됩니다. 보안 수준이 낮아집니다." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "메시지를 받으면 이 창이 자동으로 업데이트됩니다." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "제목 표시줄" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "제목 표시줄 플랫폼" @@ -35470,18 +34931,11 @@ msgstr "톤 매핑" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "HDR 이미지를 표준 범위로 톤 매핑하여 최고 밝기를 줄입니다." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "시도 횟수가 너무 많습니다. 잠시 기다린 후 다시 시도해 주세요." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "커뮤니티가 너무 많습니다" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "요청이 너무 많습니다. 나중에 다시 시도해 주세요." @@ -36151,8 +35605,10 @@ msgstr "업로드할 이모티콘을 하나도 준비하지 못했습니다. 다 #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "사용 불가" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "미분류" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "미등록 계정" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "순서 없는 목록" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "고정 해제" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "메시지 고정 해제" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "이 메시지의 고정을 해제할까요?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "저장되지 않은 변경사항" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "지원되지 않는 오디오 파일입니다." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "다시 켤 때까지" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "인증되지 않은 이메일" @@ -36958,12 +36414,7 @@ msgstr "이 메시지를 보려면 {productName}을(를) 업데이트하세요." msgid "Update app" msgstr "앱 업데이트" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "이메일 업데이트" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "내 상태 업데이트" @@ -37306,18 +36757,13 @@ msgstr "이미지 URL이 삽입될 위치에 {url}을(를) 사용하세요." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "{readMessageHistoryPermissionLabel} 권한이 없는 멤버를 위한 메시지 기록 기준일을 별도 창에서 설정하세요." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "다른 이메일 주소를 사용하고 코드로 인증하세요." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "실제 사용" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "실제 프리미엄 유형 사용" @@ -37335,16 +36781,6 @@ msgstr "다른 방법 사용" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "인증 앱을 사용하여 2단계 인증 코드를 생성합니다" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "본인이 확인할 수 있는 이메일 주소를 사용하세요. 해당 주소로 인증 코드를 보내드립니다." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "현재 이메일과 다른 이메일을 사용하세요." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "앱 전체에 다크 테마 사용" msgid "Use default" msgstr "기본값 사용" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "다른 이메일 사용" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "이메일 사용" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "패스키를 2단계 인증에 사용하시겠어요?" msgid "Use passkeys to sign in without a password" msgstr "패스키를 사용하여 비밀번호 없이 로그인합니다" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "휴대폰 사용" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "재인증 텍스트 사용" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "사용자 채널 이동" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "사용자를 찾을 수 없습니다" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "인증" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "인증 및 멤버십 장벽" @@ -37970,15 +37387,8 @@ msgstr "인증 코드" msgid "Verification code sent" msgstr "인증 코드 전송됨" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "인증 코드를 보냈습니다. 새 이메일 받은편지함을 확인해 주세요." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "인증 이메일을 보냈습니다. 받은편지함을 확인해 주세요." @@ -38038,23 +37448,6 @@ msgstr "본인 확인 양식" msgid "Verify it's you" msgstr "본인 인증하기" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "전화번호 인증" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "전화번호 인증" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "전화번호 인증 양식" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "인증 앱을 추가하기 전에 이메일을 인증하세요." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "커뮤니티 닉네임, 아바타, 배너, 자기소개, 대명사 또는 강조 색상을 변경하기 전에 이메일을 인증하세요." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "사용자 이름, 표시 이름, 아바타, 배너, 자기소개, 대명사, 시간대 또는 {premiumProductName} 배지 공개 설정을 변경하기 전에 이메일을 인증하세요." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "커뮤니티 프로필을 수정하려면 이메일을 인증해야 합니다. 그래도 여기에서 미리 볼 수 있습니다." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "프로필을 수정하려면 이메일을 인증해야 합니다. 그래도 여기에서 미리 볼 수 있습니다." @@ -38113,11 +37506,6 @@ msgstr "친구 요청을 보내려면 먼저 이메일을 인증하세요." msgid "Verify your email first" msgstr "먼저 이메일을 인증하세요" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "{productName}을(를) 계속 사용하려면 이메일 또는 전화번호를 인증하세요." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "선물 구매를 위해 이메일을 인증하세요." msgid "Verify your email to change your username" msgstr "사용자 이름을 변경하려면 이메일을 인증하세요" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "{productName}을(를) 계속 사용하려면 이메일을 인증하세요." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "커뮤니티 프로필을 수정하려면 이메일을 인증하세요" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "프로필을 수정하려면 이메일을 인증하세요" @@ -38181,13 +37564,6 @@ msgstr "버몬트" msgid "Version" msgstr "버전" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "매우 높음" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "볼륨 높이기" msgid "Wait a moment before deleting more messages." msgstr "메시지를 더 삭제하기 전에 잠시 기다려 주세요." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "잠시만 기다려 주세요. 메시지 수신 시 이 창은 자동으로 닫힙니다." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "메시지를 보낸 후 다음 메시지까지 기다려야 합니다. \"{bypassSlowmodePermissionLabel}\" 권한이 있는 멤버는 이 제한을 건너뛸 수 있습니다." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "잠시만 기다려 주세요" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "패스키를 기다리는 중…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "{forwardChannelDisplayName} 채널의 슬로우 모드가 만료되기를 기다리는 중입니다." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "선택한 채널 중 일부 채널의 슬로우 모드 만료를 기다리는 중입니다." @@ -39115,16 +38482,6 @@ msgstr "테마를 읽을 수 없습니다. 파일이 손상되었거나 유효 msgid "We couldn't remove that account. Try again." msgstr "계정을 삭제할 수 없습니다. 다시 시도해 주세요." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "이 번호는 자동으로 인증할 수 없습니다. 고객지원팀에 문의하시면 담당자가 계정을 검토해 드립니다." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "이 국가로는 인증 문자를 보내지 않습니다. 다른 국가의 휴대폰 번호를 사용하거나 고객지원팀에 문의하세요." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "이 계정에 기존 {premiumProductFullName} 구독이 있습니다. msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "브라질에서 {premiumProductName} 가격을 인하했습니다. 이제 월 {monthlyPrice}, 연간 {yearlyPrice}입니다." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "계속하기 전에 한 단계의 인증이 필요합니다. 이는 계정을 보호하고 {productName}에서 스팸을 방지하는 데 도움이 됩니다." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "계속하려면 두 단계의 인증이 필요합니다. 한 번에 한 단계씩 진행됩니다." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "계정 잠금을 방지하려면 지금 코드를 저장하는 것이 좋습니다." @@ -39167,11 +38514,6 @@ msgstr "{email}(으)로 코드를 전송했습니다." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "브라우저 로그인 창이 열리면 {prefillEmail}이(가) 자동으로 입력됩니다." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "가능한 경우 SMS 코드를 보내드립니다." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "{PREMIUM_PRODUCT_NAME}을(를) 무한대로 드리고 싶지만, 시공간 연속체가 깨질 수 있어요. 대신 친구에게 선물하시겠어요?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "최대한 빨리 처리해 드릴게요. 아카이브가 준비되면 이메일로 알려드릴게요." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "이전 이메일로 복원하고, 이전 세션에서 로그아웃하며, 전화번호를 제거하고, MFA를 비활성화한 다음, 새 비밀번호로 계정을 보호합니다." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "이전 이메일로 복원하고, 이전 세션에서 로그아웃하며, MFA를 비활성화하고, 새 비밀번호로 계정을 안전하게 보호해 드립니다." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "비밀번호 변경 전, 이메일로 인증 코드를 보내드립니 msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "백업 코드를 확인하기 전에 이메일로 인증 코드를 보내드립니다." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "코드가 준비되면 SMS로 보내드립니다. 전화번호는 계정에 연결되지 않습니다. 사용자 ID 없이 암호화된 마커만 제한된 시간 동안 보관합니다." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "현재 이메일과 새 이메일을 일회성 코드로 인증할게요." @@ -39307,7 +38645,7 @@ msgstr "웹훅 {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "웹훅 생성됨" @@ -39331,7 +38669,7 @@ msgstr "웹훅 업데이트됨" msgid "Webhook URL" msgstr "웹훅 URL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "웹훅" @@ -39486,8 +38824,8 @@ msgstr "공유 중인 화면이 업데이트되지 않고 있습니다" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "무슨 일이 일어나고 있나요?" @@ -39967,21 +39305,11 @@ msgstr "<2>{rolesSettingsPath}에서 <1>{EVERYONE_MENTION} 역할의 <0> msgid "You can sign back in at any time." msgstr "언제든지 다시 로그인할 수 있습니다." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "언제든지 이 인스턴스의 관리자에게 사람이 직접 검토해 달라고 요청할 수 있습니다." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "계정을 만들거나 로그인할 수 있습니다. 나중에 초대 기능이 다시 활성화되면 이 링크로 참여할 수 있습니다." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "언제든지 {supportEmail}로 문의하여 직접 검토를 요청하실 수 있습니다." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "링크, 이모티콘, 마크다운을 사용할 수 있습니다." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "표현을 추가할 수 없습니다" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "타임아웃 중에는 새 반응을 추가할 수 없습니다." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "자신을 친구로 추가할 수 없습니다" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "여기서는 닉네임을 변경할 수 없습니다" @@ -40094,7 +39422,7 @@ msgstr "자신에게 친구 요청을 보낼 수 없습니다." msgid "You can't send messages in this channel." msgstr "이 채널에서는 메시지를 보낼 수 없습니다." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "이 커뮤니티에서는 메시지를 보낼 수 없습니다." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "이 멤버에게 이 작업을 수행할 권한이 없습니다." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "이 음성 채널에 참여할 권한이 없습니다" @@ -40243,7 +39571,7 @@ msgstr "이 이모티콘의 이름을 변경할 권한이 없습니다. 이름 msgid "You have been banned from this community." msgstr "이 커뮤니티에서 차단되었습니다." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "{username}님을 차단했습니다. 메시지를 보내려면 차단을 해제하세요." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "저장되지 않은 변경사항이 있습니다." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "저장되지 않은 변경사항이 있습니다. 나가기 전에 저장하거나 재설정하세요." @@ -40270,7 +39598,7 @@ msgstr "저장되지 않은 변경사항이 있습니다. 나가기 전에 저 msgid "You haven't authorized any applications to access your account." msgstr "계정에 접근하도록 승인된 앱이 없습니다." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "이 커뮤니티에 가입한 지 얼마 되지 않아 메시지를 보낼 수 없습니다." @@ -40326,11 +39654,6 @@ msgstr "계정을 만들려면 서비스 약관에 동의해야 합니다" msgid "You must verify your email before sending a report." msgstr "신고를 보내려면 이메일을 인증해야 합니다." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "이메일을 변경하려면 현재 이메일에 액세스해야 합니다. 가능한 경우 전화 인증을 사용하거나 고객지원팀에 문의하세요." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "이 권한을 수정하려면 \"{manageRolesPermissionLabel}\" 권한이 msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "이 권한을 수정하려면 \"{manageRolesPermissionLabel}\" 권한이 필요합니다." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "이 채널의 웹훅을 보고 수정하려면 \"{manageWebhooksPermissionLabel}\" 권한이 필요합니다." @@ -40384,18 +39707,14 @@ msgstr "커뮤니티를 만들려면 먼저 계정을 등록해야 합니다." msgid "You need to claim your account before you can start a direct message." msgstr "DM을 시작하려면 먼저 계정을 등록해야 합니다." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "DM을 보내려면 계정을 등록해야 합니다." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "이 커뮤니티에서 메시지를 보내려면 계정을 등록해야 합니다." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "이 커뮤니티에서 메시지를 보내려면 전화번호 인증이 필요합니다." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "DM을 시작하려면 먼저 이메일 주소를 인증해야 합니다. msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "{premiumProductFullName}을(를) 구매하려면 먼저 이메일을 인증해야 합니다." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "이 커뮤니티에서 메시지를 보내려면 이메일 인증이 필요합니다." @@ -40424,11 +39743,6 @@ msgstr "이 커뮤니티에서 메시지를 보내려면 이메일 인증이 필 msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "회원님 또는 추가하려는 상대방이 이미 그룹 DM을 최대 개수만큼 열어 두었습니다. 하나를 나간 뒤 다시 시도해 주세요." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "{ownedNames}에는 그대로 남습니다. 소유자는 자신의 커뮤니티를 나갈 수 없습니다." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "모더레이터가 소리를 껐습니다" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "승인 후 {redirectHostname}(으)로 이동합니다." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "이 검사가 적용되는 커뮤니티 {count, plural, one {#개} other {#개}}를 나가게 되며, 계정은 정상적으로 다시 작동합니다." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "{guildNames}을(를) 나가게 됩니다. 게시한 내용은 삭제되지 않으며 나중에 다시 참여할 수 있습니다." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "이메일 단계는 여전히 완료해야 합니다." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "너무 빠르시네요" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "너무 빠릅니다. 잠시 기다렸다가 다시 시도해 주세요." @@ -40636,7 +39935,7 @@ msgstr "메시지를 너무 빨리 보내고 있습니다" msgid "You're streaming!" msgstr "스트리밍 중입니다!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "타임아웃 상태입니다. 타임아웃이 끝날 때까지 메시지, 반응, 음성 기능이 일시 중지됩니다." @@ -40764,25 +40063,25 @@ msgstr "{storeName} 갱신 결제에 실패했지만 <0/>은 <1>{graceDate} msgid "Your account" msgstr "내 계정" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "계정이 즉시 정상으로 돌아가며, 지금은 전화번호가 필요하지 않습니다. 이는 영구적인 면제는 아니며, 나중에 다시 인증을 요청할 수 있습니다." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "계정이 성공적으로 연결되었습니다. 이 탭을 닫고 앱으로 돌아가세요." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "계정이 정상으로 돌아왔습니다." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "계정이 제한되었습니다" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "계정이 제한되었습니다. 해제 방법에 대한 이메일을 확인하세요." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "아직 계정이 등록되지 않았습니다. 이메일과 비밀번호가 없으면 다른 기기에서 로그인할 수 없으며 계정에 대한 액세스 권한을 잃을 수 있습니다. 지금 계정을 등록하여 안전하게 보호하세요." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "계정을 만든 지 얼마 되지 않아 이 커뮤니티에서 메시지를 보낼 수 없습니다." @@ -40800,11 +40099,6 @@ msgstr "계정에 다단계 인증이 필요하지만, 이 기기에는 지원 msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "비밀번호로 로그인할 때 더 이상 2단계 인증으로 계정이 보호되지 않습니다. 또한 2단계 인증이 필요한 커뮤니티에서는 상위 권한도 사용할 수 없게 됩니다." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "계정이 즉시 정상적으로 복구되며 아무것도 삭제되지 않습니다. 나중에 이 확인을 다시 요청할 수 있습니다." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "카드 정보를 확인하여 현지 가격을 적용하고 있습니다 msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "카드 사용이 가능합니다. 지금 결제 페이지로 이동합니다." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "이동통신사에서 이 번호가 사용되지 않는 번호라고 확인했습니다. 번호를 확인하고 다시 시도하거나, 번호가 정확하다면 고객지원팀에 문의하세요." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "변경사항이 이 채널을 구독하는 모든 커뮤니티에 적용되며, 적용되는 데 1분 정도 걸릴 수 있습니다. 게시된 각 메시지는 3번까지 빠르게 수정할 수 있으며, 그 후에는 20분마다 1번씩 수정할 수 있습니다." @@ -40869,21 +40158,6 @@ msgstr "기기에서 {name}의 업데이트된 패스키를 저장하라는 메 msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "기기에서 {name}의 업데이트된 패스키를 저장하라는 메시지가 표시됩니다. 방금 사용한 것과 동일한 휴대폰 또는 보안 키를 사용하세요." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "이메일 주소가 업데이트되었습니다." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "이메일로 메시지를 받을 수 없습니다. 계정으로 계속 연락할 수 있도록 사용 가능한 이메일을 추가하세요." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "이메일로 메시지를 받을 수 없습니다. 계속해서 {productName}을(를) 사용하려면 이메일을 업데이트하세요." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "이메일이 인증되었습니다. 이제 계정에 로그인할 수 있습니다." @@ -41000,21 +40274,11 @@ msgstr "메시지를 수정하지 못했습니다" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "가장 최근 구매는 환불 가능 기간이 지났습니다. 결제 관련 문제는 고객지원팀에 문의하세요." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "새 이메일 주소" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "새로운 닉네임입니다. 비워두면 초기화됩니다." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "전화번호가 계정에 연결되어 있지 않습니다. 사용자 ID 없이 암호화된 마커만 제한된 시간 동안 보관합니다." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "결제가 취소되었습니다. 이 탭을 닫고 앱으로 돌아가셔도 좋습니다." @@ -41054,11 +40318,6 @@ msgstr "구매한 선물" msgid "your region" msgstr "현재 지역" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "가입을 계속하려면 추가 스팸 방지 확인이 필요합니다." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/lt/messages.po b/fluxer_app/src/features/i18n/locales/lt/messages.po index 2ae1b082b..ed3a9637f 100644 --- a/fluxer_app/src/features/i18n/locales/lt/messages.po +++ b/fluxer_app/src/features/i18n/locales/lt/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reakcija} few {# reakcijos} other {# reakcijų}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# reakcija} few {# reakcijos} other {# reakcijų}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# sekundė} few {# sekundės} other {# sekundžių}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Jūsų kvietimo nuoroda baigs galioti po # sekundės.} few {Jūsų kvietimo nuoroda baigs galioti po # sekundžių.} other {Jūsų kvietimo nuoroda baigs galioti po # sekundžių.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Pasirinkta: {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 minutė" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 valandų" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 mėnesių (1 metai)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "2FA atsarginė kopija" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2FA reikalavimas" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 nariai (rašo)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 mėnesiai" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 valandos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 mėnesiai" @@ -2575,11 +2575,6 @@ msgstr "minutę" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Prieinama nauja darbalaukio versija. Atsisiųskite diegimo programą ir paleiskite ją, kad atnaujintumėte {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Išsiųstas naujas patvirtinimo kodas." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Paskyros duomenys" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Paskyra skirta šlamštui, sukčiavimui arba piktnaudžiavimui platforma." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Paskyra apribota" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Paskyros būsena" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Paskyra per nauja" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Reikalingas paskyros patvirtinimas" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Pridėti botą į bendruomenę su prašomais leidimais" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Pridėti komentarą (pasirinktinai)" @@ -3054,8 +3052,10 @@ msgstr "Pridėti temą šiam kanalui" msgid "Add a word…" msgstr "Pridėti žodį…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Pridėkite veikiantį el. pašto adresą" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Norėdami tęsti, pridėkite paskyrą." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Pirmiausia pridėkite prie paskyros el. pašto adresą ir slaptažodį." @@ -3424,11 +3424,6 @@ msgstr "Pridėta: {createdDate} • paskutinį kartą naudota: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Papildomi komentarai (nebūtina)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Reikalingas papildomas patvirtinimas" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Visos kalbos" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Jau nustatyta atšaukti" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Taip pat pranešti apie šią žinutę „{productName}“ saugos komandai" @@ -4713,11 +4708,6 @@ msgstr "Prieš pradedant skambučius, paprašyti patvirtinimo" msgid "Ask for a passkey after your password when you sign in" msgstr "Prisijungiant po slaptažodžio prašyti ir prieigos rakto" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Paprašykite šios instancijos administratorių peržiūrėti jūsų paskyrą. Ši instancija veikia nepriklausomai, ir tik jos administratoriai gali keisti jūsų paskyrą." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Automatiškai pašalinti sekimo parametrus (pvz., utm_source, fbclid, gc msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Automatiškai pašalinti sekimo parametrus iš URL nuorodų siunčiamose žinutėse" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Automatiškai tikrinti žinutes dėl nepadoraus turinio kanaluose, kurie nepažymėti kaip skirti brandžiam turiniui." @@ -5359,8 +5349,6 @@ msgstr "Šiuo metu nesu prie kompiuterio" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Atgal" @@ -6506,11 +6494,6 @@ msgstr "Kameros ir virtualūs fiksavimo įrenginiai pasirenkami čia, „{produc msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Kameros išjungtos, kai dalyvių skaičius viršija {voiceChannelCameraUserLimit}" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Negalite pasiekti to el. pašto?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Čia negalima įkelti failų" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Čia negalima įkelti failų" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Keisti el. paštą" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Keisti jaustuką" @@ -7201,7 +7184,7 @@ msgstr "Pakeistas naudotojų limitas iš {oldCount} į {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Pakeistas pasirinktinis URL iš {oldCode} į {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Pakeistas patvirtinimo lygis iš {oldLevel} į {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kanalas arba kategorija" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Kanalo leidimų perrašymai" @@ -7509,8 +7492,6 @@ msgstr "Patikrinkite ryšį ir bandykite dar kartą." msgid "Check your connection, then try again." msgstr "Patikrinkite ryšį ir bandykite dar kartą." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Pasirinkite ekraną sistemos parinkiklyje" msgid "Choose a GIF" msgstr "Pasirinkite GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Pasirinkite metodą" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Pasirinkite naują slaptažodį." @@ -7680,8 +7656,8 @@ msgstr "Pasirinkite veiksmą." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Pasirinkite jaustuką" @@ -7749,11 +7725,6 @@ msgstr "Pasirinkite, kaip veikia jūsų instancija" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Pasirinkite vieną iš toliau nurodytų būdų, kad įrodytumėte domeno nuosavybę. Jums reikia užbaigti tik vieną." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Pasirinkite vieną patvirtinimo būdą. Šiam patikrinimui tinka bet kuris iš jų." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Pasirinkite, ką „{clientLabel}“ gali daryti jūsų bendruomenėje. msgid "Choose what friends see in their active now panel" msgstr "Pasirinkite, ką draugai mato savo aktyvumo skydelyje" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Pasirinkite, ką nariai turi turėti, kad galėtų rašyti žinutes ar siųsti tiesiogines žinutes bendruomenės nariams." @@ -8030,8 +8001,8 @@ msgstr "Išvalo mikrofono garsą, kad kalba būtų aiški." msgid "Clear" msgstr "Išvalyti" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Išvalyti po" @@ -8053,7 +8024,7 @@ msgstr "Išvalyti visus priedų maketus" msgid "Clear all token overrides" msgstr "Išvalyti visus žetonų perrašymus" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Išvalyti priedų maketus" @@ -8066,14 +8037,14 @@ msgstr "Išvalyti komandą" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Išvalyti pasirinktinę būseną" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Išvalyti visas reakcijas iš šios žinutės?" @@ -8124,7 +8095,7 @@ msgstr "Išvalyti paieškos lauką" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Anglies tema" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Komandos" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Komentarai išjungti, nes viename ar daugiau pasirinktų kanalų įjungtas lėtasis režimas. Komentaras būtų užblokuotas lėtojo režimo iškart po persiuntimo." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Komentarai išjungti, nes kanale „{forwardChannelDisplayName}“ įjungtas lėtasis režimas. Komentaras būtų užblokuotas lėtojo režimo iškart po persiuntimo." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Komentarai nepasiekiami, kai įjungtas lėtasis režimas." @@ -8670,11 +8639,11 @@ msgstr "Bendruomenės" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Bendruomenės ir kanalai, kuriuose negalite tvarkyti webhookų, yra paslėpti." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Į Atradimą įtrauktos bendruomenės privalo tikrinti visų narių žinutes. Šio nustatymo negalima keisti, kol įjungtas Atradimas." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Į Atradimą įtrauktoms bendruomenėms būtinas bent el. pašto patvirtinimas. Kol įjungtas Atradimas, negalima pasirinkti „Nėra“." @@ -8827,7 +8796,7 @@ msgstr "Bendruomenės pavadinimas" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Bendruomenės slapyvardis" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Bendruomenės profilis" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Bendruomenės profilis atnaujintas" @@ -8907,7 +8876,7 @@ msgstr "Bendruomenės neskaitytų pranešimų ženkliukų lygis" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Bendruomenė atnaujinta" @@ -8952,11 +8921,6 @@ msgstr "Palyginimas" msgid "Complete mature content check" msgstr "Užbaigti brandaus turinio patikrą" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Norėdami toliau naudotis „{productName}“, atlikite vieną iš toliau nurodytų patvirtinimo veiksmų." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Užbaigti mokėjimą" msgid "Complete the mature content check to unlock mature media." msgstr "Užbaikite brandaus turinio patikrą, kad atrakintumėte brandžią mediją." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Kad galėtumėte toliau naudotis „{productName}“, atlikite toliau nurodytus el. pašto ir telefono patvirtinimo veiksmus." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Norėdami toliau naudotis „{productName}“, atlikite reikiamą patvirtinimą." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Konfigūruoti profilio ženklelį" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Ryšiai pertvarkyti" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Reikalingas sutikimas" @@ -9349,16 +9304,6 @@ msgstr "Sukurkite autorizavimo URL su aprėptimis ir leidimais." msgid "Contact" msgstr "Kontaktas" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Susisiekti su palaikymo komanda" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Dėl pagalbos kreipkitės į šios instancijos administratorius." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Turinio kūrėjas" msgid "Content filter" msgstr "Turinio filtras" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Turinio filtravimas" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Koduojamo turinio tipas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Turinio saugos vartai" @@ -9416,12 +9361,10 @@ msgstr "Kontekstiniai meniu atidaromi kairiuoju pelės mygtuku (ant mygtukų) ar #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Valdykite, kaip nutildytų kanalų neskaitytų pranešimų indikatorius msgid "Control which chat updates are announced by assistive technology." msgstr "Valdykite, apie kuriuos pokalbio pakeitimus praneša pagalbinės technologijos." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Pokalbis nerastas" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Nepavyko pridėti žymos" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Nepavyko pridėti šio draugo į grupę. Bandykite dar kartą." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Nepavyko pridėti prie grupės" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Nepavyko sukurti temos nuorodos" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Nepavyko sukurti kvietimo nuorodos" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Nepavyko užbaigti lengvatinio laikotarpio" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Nepavyko sugeneruoti kvietimo nuorodos. Bandykite dar kartą." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Nepavyko apdoroti paveikslėlio" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Nepavyko paskelbti šio pranešimo" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Nepavyko prisijungti prie „Visionary“ bendruomenės iš naujo" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Nepavyko pašalinti įėjimo garso" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Nepavyko įrašyti kanalo nustatymų" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Nepavyko išsaugoti įėjimo garso" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Nepavyko atšaukti paraiškos" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Atgalinės atskaitos laikmatis" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Šalis" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Sukurti administratoriaus paskyrą" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Sukurti grupės DM su {addableCount, plural, one {# likusiu gavėju} few {# likusiais gavėjais} many {# likusio gavėjo} other {# likusių gavėjų}} ir praleisti kitus?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Sukurti webhooką" @@ -10948,7 +10884,7 @@ msgstr "Pasirinktinis jaustukas {emojiName} iš bendruomenės" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Pasirinktiniai įėjimo garsai šioje instancijoje neįjungti." @@ -11108,7 +11044,7 @@ msgstr "Pasirinktinis balso apdorojimas" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Pasirinktinis įspėjimo tekstas" @@ -11530,11 +11466,6 @@ msgstr "Numatytoji paieškos sistema" msgid "Default shortcuts" msgstr "Numatytieji spartieji klavišai" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Numatytasis skirtukas" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaveras" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Ištrinti šią žinutę" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Ištrinti šią žinutę? Veiksmo anuliuoti negalima." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Ištrinti šį pranešimą? Negalima atšaukti. Šis pranešimas taip pat bus pašalintas iš kiekvienos bendruomenės, sekančios šį kanalą." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Kūrėjo režimas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Kūrėjo parinktis" @@ -12299,7 +12230,7 @@ msgstr "Tiesioginė įvestis" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Rodymo režimas" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Rodomasis vardas" @@ -12858,7 +12789,7 @@ msgstr "Ar norite prisijungti prie {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Daktare, aš iš ateities. Atkeliavau čia jūsų išrastu laiko aparatu. Dabar man reikia jūsų pagalbos, kad grįžčiau į 1985 metus." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Redaguoti profilio vietinį laiką" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Redaguoti paskelbtą žinutę?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Redaguoti savo žinutes aukščiau arba žemiau" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Redaguokite profilio išvaizdą ir matykite tiesioginę peržiūrą" @@ -13590,10 +13521,8 @@ msgstr "Galite susigrąžinti pinigus iki {windowEndsOn}. Tai taip pat nedelsian msgid "Email" msgstr "El. paštas" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Reikalingas el. pašto adresas." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "El. paštas pakeistas" @@ -13616,49 +13547,17 @@ msgstr "El. paštas pakeistas" msgid "Email delivery" msgstr "El. laiškų pristatymas" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "El. paštas arba telefono nr." - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Reikia iš naujo patvirtinti el. paštą arba telefono numerį" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Reikalingas pakartotinis el. pašto patvirtinimas" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "El. paštas nepasiekiamas" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "El. pašto atnaujinimas šiuo metu nepasiekiamas. Bandykite dar kartą vėliau arba susisiekite su palaikymo komanda." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Reikia atnaujinti el. paštą" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Parašykite mums el. paštu ir jūsų paskyrą peržiūrės žmogus. Nurodykite, kad negalite patvirtinti SMS žinute, o toliau viskuo pasirūpinsime mes. Atsakymai siunčiami el. paštu, todėl jų teks palaukti." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "El. pašto patvirtinimo pranešimų juosta" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Reikalingas el. pašto patvirtinimas" @@ -13675,6 +13574,10 @@ msgstr "El. pašto patvirtinimo nepaisymas" msgid "Email verified successfully" msgstr "El. paštas sėkmingai patvirtintas" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "El. laiškai į jūsų dabartinį adresą nepristatomi. Įveskite naują el. pašto adresą ir mes atsiųsime kodą ten." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Įterptieji elementai" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Įterptieji elementai paslėpti" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Įterptieji elementai vėl rodomi" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Įjungti /tts kalbos atkūrimą" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Norėdami pakeisti šį nustatymą, įjunkite dviejų veiksnių autentifikavimą savo paskyroje" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Įveskite tinkamą „{theOtherPlatform}“ šablono URL arba kodą." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Įveskite galiojantį el. pašto adresą." @@ -14298,33 +14199,11 @@ msgstr "Įveskite galiojantį el. pašto adresą." msgid "Enter a valid message link." msgstr "Įveskite galiojančią žinutės nuorodą." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Įveskite galiojantį mobiliojo telefono numerį." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Įveskite galiojantį telefono numerį" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Įveskite galiojantį naudotojo vardą ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Įveskite el. pašto adresą, prie kurio turite prieigą. Ten atsiųsime kodą." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Įvesti kodą" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Įjungti viso ekrano režimą" msgid "Enter gift code…" msgstr "Įveskite dovanos kodą…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Įveskite naują el. pašto adresą" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Įveskite vieną iš atsarginių kodų, jei negalite pasinaudoti prieigo msgid "Enter one of your backup codes." msgstr "Įveskite vieną iš atsarginių kodų." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Įveskite telefono numerį" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Įveskite {digitCount} skaitmenų kodą iš autentifikavimo programėlė msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Įveskite {digitCount} skaitmenų kodą iš savo autentifikavimo programėlės." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Įveskite {digitCount} skaitmenų kodą, išsiųstą į {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Įveskite {MFA_CODE_DIGIT_COUNT} skaitmenų kodą, išsiųstą į {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Įveskite kodą" @@ -14408,11 +14267,6 @@ msgstr "Įveskite kodą prieš tęsdami." msgid "Enter the code from your authenticator app." msgstr "Įveskite kodą iš autentifikavimo programėlės." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Įveskite kodą, išsiųstą į {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Įveskite kodą, išsiųstą jūsų dabartiniu el. paštu." @@ -14426,6 +14280,7 @@ msgstr "Įveskite į el. paštą išsiųstą kodą." msgid "Enter the code shown in the app to continue." msgstr "Norėdami tęsti, įveskite programėlėje rodomą kodą." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Įveskite kodą, kurį išsiuntėme jūsų naujuoju el. pašto adresu." @@ -14434,11 +14289,6 @@ msgstr "Įveskite kodą, kurį išsiuntėme jūsų naujuoju el. pašto adresu." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Įveskite kodą, kurį išsiuntėme jūsų el. paštu, kad jį patvirtintumėte. Jūsų slaptažodis bus nustatytas, kai kodas bus patvirtintas." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Įveskite el. pašto kodą" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Įveskite kvietimo nuorodą, kad prisijungtumėte prie bendruomenės." @@ -14452,11 +14302,6 @@ msgstr "Įveskite naują el. pašto adresą, kurį norite naudoti. Ten atsiųsim msgid "Enter the PIN for your security key to continue." msgstr "Įveskite savo saugos rakto PIN kodą, kad tęstumėte." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Įveskite SMS kodą" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Įveskite šį kodą naršyklėje, kad prisijungtumėte." @@ -14492,11 +14337,6 @@ msgstr "Įveskite savo vardą" msgid "Enter your password." msgstr "Įveskite slaptažodį." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Įveskite savo telefono numerį" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Įėjimo garsas" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Įėjimo garso failai turi būti ne didesni nei {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Įėjimo garso biblioteka pilna" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Įėjimo garsas pašalintas" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Įėjimo garsas išsaugotas" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Įėjimo garsai" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Įėjimo garsai nepasiekiami" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Baigiasi:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Nepadoraus turinio filtro nustatymas" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Nepavyko nukopijuoti į iškarpinę" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Nepavyko sukurti webhooko" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Nepavyko įkelti pasirinktinio URL. Bandykite dar kartą." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Nepavyko įkelti webhookų" @@ -15190,11 +15030,6 @@ msgstr "Nepavyko pašalinti pasirinktinio URL. Bandykite dar kartą." msgid "Failed to resend code. Try again." msgstr "Nepavyko iš naujo išsiųsti kodo. Bandykite dar kartą." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Nepavyko iš naujo išsiųsti patvirtinimo kodo. Bandykite dar kartą vėliau." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Nepavyko išsiųsti žinutės. Paspauskite ir palaikykite, kad pamatytum msgid "Failed to send report. Try again." msgstr "Nepavyko išsiųsti pranešimo. Bandykite dar kartą." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Nepavyko išsiųsti patvirtinimo el. laiško. Bandykite dar kartą vėliau." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Nepavyko paleisti" @@ -15551,15 +15381,15 @@ msgstr "Filtruoti pagal naudotoją" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtruoti visus" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtruoti narius be vaidmenų" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Sekti šį kanalą" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Sekite, kad gautumėte šiuos pranešimus pasirinktame kanale." @@ -15773,7 +15603,7 @@ msgstr "Sekamas kanalas {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Stebimi kanalai" @@ -15857,11 +15687,6 @@ msgstr "Tik britams skirta..." msgid "For me" msgstr "Man" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Šiam patikrinimui jūs mums siunčiate tekstinę žinutę, o ne gaunate ją iš mūsų." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Siekdami užtikrinti jūsų saugumą, patvirtinkite, kad tai jūs." @@ -15905,7 +15730,7 @@ msgstr "Priverstinai rodyti įkėlimo karkasą" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Priverstinai rodyti brandžią mediją" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Priverstinai perkelti į AFK kanalą" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Priverstinai netaikyti {permissionName} leidimo" @@ -15948,7 +15773,7 @@ msgstr "Visada rodyti pasirinktinio URL įspėjimą" msgid "Force show voice connection" msgstr "Visada rodyti balso ryšį" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Priverstinai įjungti lėtąjį režimą" @@ -16020,7 +15845,7 @@ msgstr "Persiųsti mediją" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Persiųsti žinutę" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Geografinio blokavimo perdanga" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Geografiškai apribota" @@ -16490,12 +16315,6 @@ msgstr "Gauk animuotą avataro ir reklaminės juostos, prenumeratoriaus ženkliu msgid "Get monthly" msgstr "Gauti kas mėnesį" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Gauti naują kodą" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Dovanų kodai" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Dovanos trukmė" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Dovanų inventorius" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Dovanų inventoriaus eiga" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Dovanos nerasta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Dovana išpirkta" @@ -17030,7 +16849,7 @@ msgstr "Grupės tiesioginė žinutė" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17350,10 +17169,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Sveiki, {displayName}, užregistruokite paskyrą, kad neprarastumėte prieigos." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Sveiki, {displayName}, patvirtinkite savo el. pašto adresą." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Labas, {displayName}, negalime pristatyti el. laiškų į jūsų adresą. Pridėkite veikiantį el. paštą, kad patvirtintumėte paskyrą." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17551,7 +17375,7 @@ msgstr "Slėpti savo ekrano bendrinimą?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Aukštas" @@ -17756,11 +17580,6 @@ msgstr "Aš esu patarimas" msgid "I changed my mind" msgstr "Persigalvojau" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Man reikia kito būdo" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17863,16 +17682,6 @@ msgstr "Jei šis pranešimas yra apie konkrečią žinutę, geriau praneškite a msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Jei šis pranešimas yra apie konkrečias žinutes, geriau praneškite apie tinkamiausią žinutę. Pranešimai apie žinutes mūsų saugos komandai suteikia aiškiausią kontekstą, o išsamesnė informacija komentaruose padeda peržiūrėti greičiau. Apie visą naudotoją praneškite tik tuo atveju, jei pranešimas apie žinutę neapimtų platesnės problemos." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Jei negalite patvirtinti SMS žinute" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Jei negalite naudoti jokio patvirtinimo metodo, susisiekite su palaikymo komanda." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18636,7 +18445,7 @@ msgstr "Sąsajos dydis" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Netinkamas garso failas" @@ -18675,8 +18484,10 @@ msgstr "Neteisingas JSON. Įklijuokite visą atsakymą iš aukščiau esančio U #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19159,7 +18970,7 @@ msgstr "Prisijungti prie balso skambučio" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Prisijungti prie balso kanalo" @@ -19614,16 +19425,6 @@ msgstr "Sužinokite daugiau apie „Visionary“" msgid "Leave" msgstr "Palikti" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Palikti {count, plural, one {# bendruomenę} few {# bendruomenes} many {# bendruomenės} other {# bendruomenių}} ir atidėti šį patikrinimą?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Palikti ir atidėti" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19773,7 +19574,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Leisti ekrano skaitytuvams pranešti apie naujas žinutes, kai jos gaunamos atidarytame kanale. Pranešimų garsai nepaveikiami." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Leisti bendruomenei moderuoti save" @@ -19801,7 +19602,7 @@ msgid "Library" msgstr "Biblioteka" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Biblioteka pilna (daugiausia {max} garsų). Prieš pridėdami naują, ištrinkite vieną." @@ -19813,7 +19614,7 @@ msgstr "Biblioteka: {count} iš {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Visam laikui" @@ -20148,7 +19949,7 @@ msgid "Loading..." msgstr "Įkeliama..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Įkeliama…" @@ -20262,7 +20063,7 @@ msgstr "Luiziana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Žemas" @@ -20417,7 +20218,7 @@ msgstr "Tvarkyti bendruomenės funkcijas" msgid "Manage emoji & stickers" msgstr "Tvarkyti jaustukus ir lipdukus" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Tvarkykite gaunamus webhookus, kurie gali skelbti žinutes šiame kanale." @@ -20515,7 +20316,7 @@ msgstr "Pažymėti visus neskaitytus gautųjų kanalus kaip perskaitytus iškart msgid "Mark as read" msgstr "Pažymėti kaip perskaitytą" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Pažymėti kaip panaudotą" @@ -20677,14 +20478,14 @@ msgstr "Brandaus turinio bendruomenė" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Brandus turinys" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Brandus turinys ir įspėjimai apie turinį" @@ -20795,7 +20596,7 @@ msgid "Maximum lifetime (days)" msgstr "Didžiausias galiojimo laikas (dienos)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Didžiausia apsauga šeimai tinkamoms erdvėms" @@ -20925,7 +20726,7 @@ msgstr "Stabdyti atkūrimą" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21010,12 +20811,12 @@ msgstr "Nario užblokavimas panaikintas" msgid "Member updated" msgstr "Narys atnaujintas" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Narių patvirtinimas" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Narių patvirtinimo lygis" @@ -21049,7 +20850,7 @@ msgstr "Nariai pašalinami, kai yra neprisijungę, nebent jiems priskirtas vaidm msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Nariai, turintys leidimą „{pinMessagesPermissionLabel}“, gali prisegti žinutes visiems." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Nariai, turintys vaidmenis, gali apeiti šiuos patikrinimus. Viešosioms erdvėms rekomenduojame įjungti patvirtinimą." @@ -21154,7 +20955,7 @@ msgstr "Paminėjimai, susiję su jumis, čia rodomi {retentionDays} dienas." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Tik paminėjimai" @@ -21293,7 +21094,7 @@ msgstr "Žinučių rodymo nustatymai pasiekiami tik darbalaukio programoje." msgid "Message editing" msgstr "Redaguoti žinutę" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Žinutė persiųsta" @@ -21342,7 +21143,7 @@ msgstr "Žinutės įvesties mygtukai" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Žinutė per ilga" @@ -21397,7 +21198,7 @@ msgid "Message previews in the DM list" msgstr "Žinučių peržiūros DM sąraše" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Pranešimas paskelbtas" @@ -21491,7 +21292,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Pranešimai, paskelbti #{sourceName}, dabar bus rodomi #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Čia kopijuojamos žinutės, paskelbtos šiuose skelbimo kanaluose." @@ -21505,7 +21306,7 @@ msgstr "Pranešimai, paskelbti šiuose informavimo kanaluose, bus nukopijuoti į msgid "Messages you can bookmark" msgstr "Pranešimai, kuriuos galite pasižymėti" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Šioje bendruomenėje žinučių siuntimas laikinai pristabdytas." @@ -21734,30 +21535,30 @@ msgstr "Imituoti galiojimo pabaigą po 1 dienos" msgid "Mock expires in 7 days" msgstr "Imituoti galiojimo pabaigą po 7 dienų" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Imituoti geografinio blokavimo perdangą" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Imituoti dovanų atsargas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Imituoti gaunamą skambutį" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Imituoti brandaus turinio kanalo vartų priežastį" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Imituoti brandaus turinio medijos vartų priežastį" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Imituoti JK geografinę vietą" @@ -21766,12 +21567,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Netikri naudotojų avatarai įvairiais dydžiais ir visais būsenų deriniais." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Imituoti variantą" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Imituojami produkto srautai" @@ -22699,14 +22495,16 @@ msgstr "Nauja bendruomenė nutildyta" msgid "New direct message" msgstr "Nauja tiesioginė žinutė" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Naujas el. paštas" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Naujo el. pašto forma" @@ -22817,9 +22615,7 @@ msgstr "Pirmiausia naujausi" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Kitas" @@ -22861,12 +22657,12 @@ msgid "No" msgstr "Ne" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Nėra leidimo „{attachFilesPermission}“" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Nėra leidimo „{sendMessagesPermission}“" @@ -23006,7 +22802,7 @@ msgstr "Nėra išsaugotinų pakeitimų" msgid "No channels available" msgstr "Nėra pasiekiamų kanalų" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Kanalų nerasta" @@ -23234,11 +23030,6 @@ msgstr "Leidimų nerasta" msgid "No personal words yet." msgstr "Kol kas nėra asmeninių žodžių." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Nėra telefono numerio" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23291,7 +23082,7 @@ msgstr "Nėra rezultatų" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Nieko nerasta" @@ -23445,7 +23236,7 @@ msgid "No users found" msgstr "Naudotojų nerasta" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Patvirtinimas nereikalingas." @@ -23453,7 +23244,7 @@ msgstr "Patvirtinimas nereikalingas." msgid "No verification methods available" msgstr "Nėra patvirtinimo metodų" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Nėra webhookų" @@ -23505,7 +23296,7 @@ msgstr "Non-convert" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23521,7 +23312,7 @@ msgid "None" msgstr "Nėra" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Nėra (įprastas elgesys)" @@ -23543,7 +23334,7 @@ msgid "Norwegian" msgstr "norvegų" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Narys nepakankamai ilgai" @@ -23799,9 +23590,9 @@ msgstr "Objektai" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Išjungta" @@ -23849,7 +23640,7 @@ msgstr "Pirmiausia seniausi" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Įjungta" @@ -23885,11 +23676,6 @@ msgstr "Vieno ar kelių priedų nepavyko perskaityti arba įkelti. Failas galėj msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Vienas ar keli failai, kuriuos bandote įkelti, viršija maksimalų {maxSizeFormatted} dydžio limitą vienam failui." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Greitas patikrinimas" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23986,7 +23772,7 @@ msgid "Only speakers" msgstr "Tik garsiakalbiai" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Šį nustatymą gali keisti tik bendruomenės savininkas" @@ -24276,7 +24062,7 @@ msgid "Open emoji in browser" msgstr "Atidaryti jaustuką naršyklėje" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Atidaryti jaustukų parinkiklį" @@ -24383,12 +24169,8 @@ msgstr "Atidaryti meniu" msgid "Open message history threshold" msgstr "Atidaryti žinučių istorijos slenkstį" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Atidaryti perdangą" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Atidaryti išskleidžiamąjį sąrašą" @@ -24486,11 +24268,6 @@ msgstr "Atidarykite naują programėlę. Jūs jau esate prisijungę." msgid "Open the shortcuts list for quick actions." msgstr "Atidarykite sparčiųjų klavišų sąrašą, kad galėtumėte greitai atlikti veiksmus." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Atidarykite patvirtinimo el. laišką ir pasinaudokite jame esančia nuoroda. Šis langas atsinaujins atidarius nuorodą." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24535,24 +24312,10 @@ msgstr "Atidaryti balso ir vaizdo nustatymus" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Atidarykite naršyklę, prisijunkite, tada įveskite toliau pateiktą kodą, kad susietumėte paskyrą." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Atidarykite savo žinutes" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Atidarykite savo senąją „{PRODUCT_NAME}“ programėlę ir pasirinkite „Susieti naują įrenginį“, tada įveskite žemiau pateiktą kodą." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Atidarykite telefono žinučių programėlę ir sukurkite naują tekstinę žinutę." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Atidarykite telefono žinučių programėlę ir pradėkite naują tekstinę žinutę." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24721,11 +24484,6 @@ msgstr "Kita reakcija…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Šiuo metu mūsų telefono numerio patikra neveikia. Tai mūsų klaida, ne jūsų numerio. Palaukite kelias minutes ir bandykite dar kartą su tuo pačiu numeriu." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25314,54 +25072,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Sukčiavimas, apgaulė, kenkėjiškos nuorodos ar melagingi teiginiai, galintys sukelti realią žalą." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefonas" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Telefono numeris" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Reikalingas telefono numeris" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Telefono numeris patvirtintas" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Reikia iš naujo patvirtinti telefono numerį" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Telefono žingsnis" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Telefono numerio patvirtinimas šiai paskyrai negalimas. Naudokite kitą metodą arba susisiekite su palaikymo komanda." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Reikalingas telefono numerio patvirtinimas" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25417,11 +25127,6 @@ msgstr "Pasirinkite 4 skaitmenų skaičių po savo vardo" msgid "Pick the appearance this administrator account should start with." msgstr "Pasirinkite, kokią išvaizdą iš pradžių naudos ši administratoriaus paskyra." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Pasirinkite metodą, kurį galite atlikti dabar." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25454,7 +25159,7 @@ msgstr "Vaizdas vaizde" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Prisegti" @@ -25472,7 +25177,7 @@ msgstr "Prisegti grupės DM" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25499,7 +25204,7 @@ msgid "Pin or unpin any message." msgstr "Prisegti arba atsegti bet kurią žinutę." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Prisegti šią žinutę prie kanalo, kad visi matytų." @@ -26228,18 +25933,18 @@ msgstr "Profilio spalva" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Profilio tinkinimas" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Profilio tinkinimas bendruomenėje {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Profilio tinkinimo forma" @@ -26304,7 +26009,7 @@ msgid "Profile type" msgstr "Profilio tipas" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profilis atnaujintas" @@ -26341,7 +26046,7 @@ msgstr "Klausti prijungus naują garso įrenginį" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26691,11 +26396,6 @@ msgstr "Reidų koordinavimas" msgid "Rate" msgstr "Greitis" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Apribotas dažnis" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Neapdorotas įterptojo elemento JSON" @@ -27278,7 +26978,7 @@ msgid "Remove {userName} from your friends?" msgstr "Pašalinti „{userName}“ iš draugų?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Pašalinti visas" @@ -27291,7 +26991,7 @@ msgstr "Pašalinti visas {emojiNameWithColons} reakcijas iš šios žinutės?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Pašalinti visas reakcijas" @@ -27900,20 +27600,10 @@ msgstr "Naudotojo, apie kurį pranešama, žyma (pasirinktinai)" msgid "Reposts: <0>{countLabel}" msgstr "Pakartotiniai bendrinimai: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Pirmiausia paprašykite naujo kodo." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Prašyti naujos slaptažodžio atkūrimo nuorodos" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Pirmiausia paprašykite patvirtinimo kodo." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27929,7 +27619,7 @@ msgid "Requests" msgstr "Užklausos" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Reikalauti 2FA moderavimo veiksmams" @@ -27959,7 +27649,7 @@ msgstr "Reikalauti „OAuth2“ kodo suteikimo" msgid "Require passkey" msgstr "Reikalauti prieigos rakto" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Reikalauti iš moderatorių dviejų veiksnių autentifikavimo, kad jie galėtų užblokuoti ar išmesti narius, laikinai juos apriboti arba trinti žinutes." @@ -27973,46 +27663,6 @@ msgstr "Būtina" msgid "Required 2FA for moderation actions" msgstr "Reikalaujama 2FA moderavimo veiksmams" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Numatytasis reikalingo veiksmo skirtukas" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Būtino veiksmo srautas" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Būtino veiksmo telefono žingsnis" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Būtino veiksmo pakartotinio siuntimo įkėlimas" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Būtino veiksmo pakartotinio siuntimo rezultatas" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Būtino veiksmo pakartotinio patvirtinimo tekstas" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Būtino veiksmo variantas" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Būtinų veiksmų perdanga" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28024,27 +27674,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Kviečiant šį botą, reikalingas nukreipimo URI ir autorizacijos kodas." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Reikalingas patvirtintas el. pašto adresas ir bent 5 minučių senumo paskyra." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Reikalingas patvirtintas el. pašto adresas." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Reikalingas patvirtintas telefono numeris." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Reikalingi visi vidutinio lygio reikalavimai ir narystė bendruomenėje bent 10 minučių." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28068,32 +27714,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Siųsti iš naujo ({resendSecondsRemaining} s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Siųsti iš naujo ({secondsRemaining} s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Siuntimo iš naujo mygtukas įkeliamas" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Siųsti kodą iš naujo" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Iš naujo siųsti el. laišką" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Pakartotinio siuntimo rezultatas" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Išsiųsta iš naujo" @@ -28519,21 +28153,6 @@ msgstr "Atskleisti" msgid "Reveal spoiler" msgstr "Atskleisti spoilerį" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Norėdami toliau naudotis „{productName}“, iš naujo patvirtinkite savo el. paštą arba patvirtinkite savo telefono numerį." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Iš naujo patvirtinkite savo el. pašto adresą, kad galėtumėte toliau naudotis „{productName}“." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Iš naujo patvirtinkite savo telefono numerį, kad galėtumėte toliau naudotis „{productName}“." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28935,12 +28554,12 @@ msgstr "Sodrumas" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29338,7 +28957,7 @@ msgstr "Prasukimo peržiūra" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29383,16 +29002,6 @@ msgstr "Ieškoti kanalų" msgid "Search communities" msgstr "Ieškoti bendruomenių" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Ieškoti šalių..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Ieškoti šalių…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29909,7 +29518,7 @@ msgid "Select your country of residence." msgstr "Pasirinkite savo gyvenamosios vietos šalį." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Pasirinkite…" @@ -29999,7 +29608,7 @@ msgid "Send" msgstr "Siųsti" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Siųsti ({selectedCount}/{selectionLimit})" @@ -30054,9 +29663,8 @@ msgstr "Siųsti kitą pranešimą" msgid "Send button" msgstr "Siuntimo mygtukas" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Siųsti kodą" @@ -30114,7 +29722,7 @@ msgid "Send messages" msgstr "Siųsti žinutes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Žinučių siuntimas išjungtas" @@ -30152,32 +29760,11 @@ msgstr "Siųsti išsaugotą mediją „{memeName}“" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Siųsti teksto į kalbą žinutes komanda /tts. Nariai, įjungę teksto į kalbą funkciją, jas girdi perskaitytas balsu." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Siųskite kodą <0>{0} numeriu <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Išsiųskite kodą toliau nurodytu telefono numeriu." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Siųsti šį kodą" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Išsiųsti šį prisegimą atgal į praeitį?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Siųsti į" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30201,14 +29788,6 @@ msgstr "Siųsti balso žinutę" msgid "Send:" msgstr "Siųsti:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "SMS siuntimas šiuo telefono numeriu „{PRODUCT_NAME}“ yra per brangus, todėl prašome vietoj to atsiųsti SMS mums. Žinome, kad tai nėra idealu. Taip pat galite paprašyti šios instancijos administratorių panaikinti šį reikalavimą jūsų paskyrai." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "SMS siuntimas šiuo telefono numeriu „{PRODUCT_NAME}“ yra per brangus, todėl prašome vietoj to atsiųsti SMS mums. Žinome, kad tai nėra idealu. Taip pat galite kreiptis adresu <0>{SUPPORT_EMAIL}, kad panaikintume šį reikalavimą jūsų paskyrai." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30288,11 +29867,6 @@ msgstr "Siuntimas iš eilės" msgid "Serve the token file" msgstr "Pateikti prieigos rakto failą" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Paslaugos klaida" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30344,7 +29918,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Nustatyti pasirinktinį spartųjį klavišą, skirtą „{label}“" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Nustatyti pasirinktinę būseną" @@ -30487,18 +30061,6 @@ msgstr "Nustatytas balso regionas: {region}" msgid "Set the voice region to automatic" msgstr "Nustatytas automatinis balso regionas" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Atidėti šį patikrinimą" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Atidėti šį patikrinimą?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30529,7 +30091,7 @@ msgid "Set your pronouns" msgstr "Nustatyti įvardžius" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Nustatyti būseną" @@ -30797,7 +30359,7 @@ msgid "Shortcuts are paused while recording." msgstr "Įrašant spartieji klavišai laikinai neveikia." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Sutrumpinkite žinutę ir bandykite dar kartą." @@ -30828,7 +30390,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Rodyti „{productName}“ piktogramą sistemos dėkle arba meniu juostoje" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Rodyti įspėjimą apie turinį" @@ -31673,7 +31235,7 @@ msgstr "Lėtasis režimas · palaukite {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Lėtasis režimas aktyvus" @@ -31719,17 +31281,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Nustatytas lėtasis režimas – {durationLabel}. Palaukite prieš siųsdami kitą žinutę." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Lėtojo režimo likutis" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Lėtojo režimo modeliavimas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Lėtojo režimo likęs laikas" @@ -31808,11 +31370,6 @@ msgstr "Sklandus slinkimas" msgid "Smoother video" msgstr "Sklandesnis vaizdas" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Šiuo metu SMS patvirtinimas nepasiekiamas. Bandykite dar kartą vėliau arba susisiekite su palaikymo komanda." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31944,7 +31501,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Nepavyko paruošti šio lipduko. Pabandykite kitą failą arba bandykite dar kartą po akimirkos." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Paskelbiant įvyko klaida. Pabandykite dar kartą po akimirkos." @@ -32010,11 +31567,9 @@ msgstr "Kažkas nepavyko. Įkelkite puslapį iš naujo arba prisijunkite dar kar msgid "Something went wrong. Try again later." msgstr "Kažkas nepavyko. Bandykite dar kartą vėliau." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Kažkas nepavyko. Bandykite dar kartą." @@ -32353,11 +31908,6 @@ msgstr "SSO prisijungimo laikas baigėsi. Bandykite dar kartą." msgid "Staff controls" msgstr "Darbuotojo valdikliai" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Gali būti taikomi standartiniai jūsų operatoriaus pranešimų siuntimo tarifai." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32387,8 +31937,6 @@ msgstr "Žvaigždės animacija" msgid "Starred channels" msgstr "Pažymėti kanalai" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33027,7 +32575,7 @@ msgstr "Prenumeratoriaus transportas:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Prenumerata" @@ -33052,14 +32600,12 @@ msgstr "Prenumeratos scenarijai" msgid "Subtext" msgstr "Papildomas tekstas" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Pavyko" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Rekomenduojama daugumai bendruomenių" @@ -33403,7 +32949,7 @@ msgid "System & welcome" msgstr "Sistema ir pasveikinimas" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Sistemos pranešimai iš „{productName}“ darbuotojų. Čia negalite atsakyti." @@ -33766,11 +33312,6 @@ msgstr "Teksto žymėjimas" msgid "Text size" msgstr "Teksto dydis" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Parašykite mums iš savo telefono" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33817,26 +33358,6 @@ msgstr "tajų" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Dėkojame, kad padedate užtikrinti „{productName}“ saugumą. Jūsų pranešimą peržiūrėsime kuo greičiau." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Šis kodas netiko. Patikrinkite jį ir bandykite dar kartą." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Šis kodas nebegalioja. Prašykite naujo kodo." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Tai nebuvo baigta. Kai kurios bendruomenės galėjo būti jau paliktos, o jūsų paskyra vis dar užrakinta. Paspauskite „Atidėti šį patikrinimą“ dar kartą, kad užbaigtumėte." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Nepavyko. Nieko nepakeista. Pabandykite dar kartą." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33850,11 +33371,6 @@ msgstr "Panašu, kad tai nėra tinkama spalva. Bandykite šešioliktainį kodą, msgid "That doesn't look like a valid URL." msgstr "Atrodo, tai nėra tinkamas URL." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Šis el. paštas jau naudojamas." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34090,11 +33606,6 @@ msgstr "Ankstesnis perrašymas draudė {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Puslapis, kurio ieškote, neegzistuoja arba buvo perkeltas." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Telefono patikra atidėta. Liko vienas el. pašto veiksmas." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34252,7 +33763,7 @@ msgstr "Nėra kanalų, kuriems būtų galima sukurti kvietimą." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Šiuo metu šioje bendruomenėje nėra vaidmenų, kuriuos būtų galima priskirti, tačiau galite sukurti naują vaidmenį čia: <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Šiam kanalui nesukonfigūruota nė vieno webhooko. Sukurkite webhooką, kad išorinės programos galėtų skelbti žinutes." @@ -34274,7 +33785,7 @@ msgstr "Įkeliant kvietimus įvyko klaida. Bandykite dar kartą." msgid "There was an error loading the stickers. Try again." msgstr "Įkeliant lipdukus įvyko klaida. Bandykite dar kartą." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Įkeliant šio kanalo webhookus įvyko klaida. Bandykite dar kartą." @@ -34418,7 +33929,7 @@ msgstr "Šis kanalas gali skelbti 10 pranešimų iš eilės, o vėliau po vieną msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Šis kanalas gali skelbti 10 pranešimų iš eilės, o vėliau po vieną kas 6 minutes. Pabandykite dar kartą po kelių minučių." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Šis kanalas nepalaiko webhookų." @@ -34551,12 +34062,12 @@ msgstr "Šis ryšys nepatvirtintas." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Čia yra jautraus turinio." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Šis pokalbis nebepasiekiamas." @@ -34659,7 +34170,7 @@ msgid "This group has too many people" msgstr "Šioje grupėje yra per daug žmonių" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Ši grupė pilna. Pašalinkite ką nors prieš pridėdami daugiau žmonių." @@ -34716,11 +34227,6 @@ msgstr "Tai pasirinktinis lipdukas iš bendruomenės." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Tai amžiaus apribojimų kanalas. Naujienos gali būti siunčiamos tik į amžiaus apribojimų kanalus." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Tai yra apsauga nuo brukalų. Jūsų telefono numeris nesusietas su paskyra." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34736,16 +34242,6 @@ msgstr "Tai išjungta" msgid "This is how messages appear" msgstr "Štai kaip atrodo žinutės" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Šiuo metu jūsų paskyrai tai neprieinama. Paprašykite šios instancijos administratorių tai peržiūrėti." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Šiuo metu tai jūsų paskyroje neprieinama. Parašykite el. laišką adresu {supportEmail}, ir žmogus peržiūrės jūsų užklausą." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Tai ne tas kanalas, kurio ieškote." @@ -34793,11 +34289,6 @@ msgstr "Tai paskutinis jūsų prieigos raktas, o prieigos raktai yra jūsų antr msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Tai paskutinis jūsų prieigos raktas. Kai jo nebeliks, negalėsite naudoti prieigos rakto kaip antrojo veiksnio." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Tai nėra mobiliojo telefono numeris, todėl jis negali gauti mūsų SMS žinučių. Pabandykite įvesti mobiliojo telefono numerį arba susisiekite su palaikymo tarnyba, jei manote, kad tai klaida." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34865,7 +34356,7 @@ msgid "This message has already been deleted." msgstr "Ši žinutė jau ištrinta." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Ši žinutė jau buvo paskelbta" @@ -34875,20 +34366,10 @@ msgid "This message no longer exists." msgstr "Šios žinutės nebėra." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Šis slapyvardis bus matomas tik šioje bendruomenėje" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Šis numeris patvirtinamas siunčiant mums SMS. Grįžkite ir dar kartą pradėkite telefono patvirtinimą, kad gautumėte kodą ir numerį, kuriuo reikia siųsti SMS." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Šiam numeriui reikia patvirtinimo išsiunčiant mums SMS, o ne gaunant SMS iš mūsų." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34909,16 +34390,6 @@ msgstr "Šiam dalyviui išjungtas garsas" msgid "This participant was deafened by moderators" msgstr "Šiam dalyviui garsą išjungė moderatoriai" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Šio telefono numerio negalima naudoti. Bandykite kitą mobiliojo telefono numerį arba susisiekite su palaikymo komanda." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Šis telefono numeris jau buvo naudotas. Bandykite kitą numerį arba susisiekite su palaikymo komanda." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35042,7 +34513,7 @@ msgstr "Šis naudotojas neturi vaidmenų šioje bendruomenėje." msgid "This user is already banned from the community." msgstr "Šis naudotojas jau užblokuotas bendruomenėje." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Šis naudotojas nebepasiekiamas." @@ -35066,11 +34537,6 @@ msgstr "Šį naudotoją į šią bendruomenę priverstinai pridėjo platformos a msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Šis patvirtinimo seansas baigėsi. Grįžkite į „{productName}“ ir pradėkite atsiskaitymą iš naujo." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Šis patvirtinimo seansas baigėsi. Pradėkite iš naujo." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35164,11 +34630,6 @@ msgstr "Tai atjungs jus nuo paskyros, išvalys talpykloje saugomus failus ir iš msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Visos išorinės nuorodos bus laikomos patikimomis ir įspėjimas nebebus rodomas nė vienam domenui. Esami patikimi domenai bus pakeisti. Tai mažiau saugu." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Šis langas atnaujinamas automatiškai, kai tik gausime jūsų žinutę." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35308,7 +34769,7 @@ msgid "Title bar" msgstr "Pavadinimo juosta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Pavadinimo juostos platforma" @@ -35471,18 +34932,11 @@ msgstr "Tonas" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Tonuoti HDR vaizdus į standartinį diapazoną, sumažinant didžiausią ryškumą." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Per daug bandymų. Šiek tiek palaukite ir bandykite dar kartą." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Per daug bendruomenių" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Per daug užklausų. Bandykite dar kartą vėliau." @@ -36152,8 +35606,10 @@ msgstr "Nepavyko paruošti jaustukų įkėlimui. Įvyko šios klaidos:" #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36209,7 +35665,7 @@ msgstr "Nepasiekiama" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36246,7 +35702,7 @@ msgstr "Nekategorizuota" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Neužregistruota paskyra" @@ -36722,7 +36178,7 @@ msgid "Unordered" msgstr "Nenumeruotas sąrašas" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Atsegti" @@ -36747,7 +36203,7 @@ msgid "Unpin message" msgstr "Atsegti žinutę" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Atsegti šią žinutę?" @@ -36867,7 +36323,7 @@ msgid "Unsaved changes" msgstr "Neišsaugoti pakeitimai" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Nepalaikomas garso failas." @@ -36916,7 +36372,7 @@ msgid "Until I turn it back on" msgstr "Kol vėl įjungsiu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Nepatvirtintas el. paštas" @@ -36959,12 +36415,7 @@ msgstr "Atnaujinkite „{productName}“, kad galėtumėte peržiūrėti šią msgid "Update app" msgstr "Atnaujinti programėlę" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Atnaujinti el. paštą" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Atnaujinti mano būseną" @@ -37307,18 +36758,13 @@ msgstr "Naudokite {url} ten, kur turėtų būti įterptas paveikslėlio URL." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Atskirame lange nustatykite žinučių istorijos ribinę datą nariams, kurie neturi {readMessageHistoryPermissionLabel} leidimo." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Naudokite kitą el. pašto adresą ir patvirtinkite jį kodu." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Naudoti tikrą" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Naudoti tikrąjį „Premium“ tipą" @@ -37336,16 +36782,6 @@ msgstr "Naudoti kitą būdą" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Naudokite autentifikavimo programėlę dviejų veiksnių autentifikavimo kodams generuoti" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Naudokite el. pašto adresą, kurį galite pasiekti. Ten atsiųsime kodą." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Naudokite kitą el. pašto adresą nei dabartinis." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37410,16 +36846,6 @@ msgstr "Naudoti tamsiąją temą visoje programėlėje" msgid "Use default" msgstr "Naudoti numatytąjį" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Naudoti kitą el. paštą" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Naudoti el. paštą" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37524,15 +36950,6 @@ msgstr "Naudoti prieigos raktus dviejų veiksnių autentifikavimui?" msgid "Use passkeys to sign in without a password" msgstr "Naudokite prieigos raktus, kad prisijungtumėte be slaptažodžio" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Naudoti telefoną" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Naudoti pakartotinio patvirtinimo tekstą" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37731,7 +37148,7 @@ msgstr "Naudotojas perkeliamas į kitą kanalą" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Naudotojas nerastas" @@ -37948,7 +37365,7 @@ msgid "Verification" msgstr "Patvirtinimas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Patvirtinimo ir narystės apribojimai" @@ -37971,15 +37388,8 @@ msgstr "Patvirtinimo kodas" msgid "Verification code sent" msgstr "Patvirtinimo kodas išsiųstas" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Patvirtinimo kodas išsiųstas. Patikrinkite naują el. pašto dėžutę." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Patvirtinimo el. laiškas išsiųstas. Patikrinkite gautuosius." @@ -38039,23 +37449,6 @@ msgstr "Tapatybės patvirtinimo forma" msgid "Verify it's you" msgstr "Patvirtinkite, kad tai jūs" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Patvirtinti telefono numerį" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Patvirtinti telefono numerį" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Telefono numerio patvirtinimo forma" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38083,22 +37476,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Prieš pridėdami autentifikavimo programėlę, patvirtinkite savo el. paštą." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Patvirtinkite savo el. paštą prieš keisdami bendruomenės slapyvardį, avatarą, reklamjuostę, biografiją, įvardžius ar akcento spalvą." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Patvirtinkite savo el. paštą prieš keisdami naudotojo vardą, rodomą vardą, avatarą, reklamjuostę, biografiją, įvardžius, laiko juostą arba {premiumProductName} ženkliuko privatumą." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Patvirtinkite savo el. paštą prieš redaguodami šį bendruomenės profilį. Vis tiek galite jį peržiūrėti čia." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Prieš redaguodami profilį, patvirtinkite savo el. paštą. Vis tiek galite jį peržiūrėti čia." @@ -38114,11 +37507,6 @@ msgstr "Prieš siųsdami draugystės užklausas, patvirtinkite savo el. pašto a msgid "Verify your email first" msgstr "Pirmiausia patvirtinkite savo el. paštą" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Norėdami toliau naudotis {productName}, patvirtinkite savo el. paštą arba telefono numerį." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38134,18 +37522,13 @@ msgstr "Patvirtinkite savo el. paštą, kad galėtumėte pirkti dovanas." msgid "Verify your email to change your username" msgstr "Patvirtinkite el. paštą, kad pakeistumėte naudotojo vardą" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Patvirtinkite savo el. paštą, kad galėtumėte toliau naudotis {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Patvirtinkite el. paštą, kad galėtumėte redaguoti šį bendruomenės profilį" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Patvirtinkite el. paštą, kad galėtumėte redaguoti profilį" @@ -38182,13 +37565,6 @@ msgstr "Vermontas" msgid "Version" msgstr "Versija" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Labai aukštas" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38935,20 +38311,11 @@ msgstr "Didinti garsumą" msgid "Wait a moment before deleting more messages." msgstr "Palaukite akimirką, prieš trindami daugiau žinučių." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Palaukite. Šis langas automatiškai užsidarys, kai tik gausime jūsų žinutę." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Laikas tarp žinučių. Nariai, turintys leidimą „{bypassSlowmodePermissionLabel}“, gali jį apeiti." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Palaukite čia" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38959,12 +38326,12 @@ msgid "Waiting for passkey…" msgstr "Laukiama prieigos rakto…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Laukiama, kol pasibaigs lėtasis režimas kanale „{forwardChannelDisplayName}“." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Laukiama, kol pasibaigs lėtasis režimas viename ar keliuose pasirinktuose kanaluose." @@ -39116,16 +38483,6 @@ msgstr "Nepavyko nuskaityti šios temos. Ji gali būti sugadinta arba netinkama. msgid "We couldn't remove that account. Try again." msgstr "Nepavyko pašalinti paskyros. Bandykite dar kartą." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Nepavyko automatiškai patvirtinti šio numerio. Susisiekite su palaikymo tarnyba ir jūsų paskyrą peržiūrės žmogus." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Mes nesiunčiame patvirtinimo SMS į šią šalį. Pabandykite naudoti kitoje šalyje esantį mobiliojo telefono numerį arba susisiekite su palaikymo tarnyba." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39136,16 +38493,6 @@ msgstr "Radome esamą {premiumProductFullName} prenumeratą šiai paskyrai. Tvar msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Brazilyje sumažinome {premiumProductName} kainą. Dabar ji kainuoja {monthlyPrice} per mėnesį arba {yearlyPrice} per metus." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Prieš tęsiant, reikalingas vienas patvirtinimo veiksmas. Tai padeda apsaugoti paskyras ir saugo „{productName}“ nuo brukalų." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Prieš tęsiant, reikalingi du patvirtinimo veiksmai. Juos rodysime po vieną." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Rekomenduojame išsaugoti šiuos kodus dabar, kad neprarastumėte prieigos prie paskyros." @@ -39168,11 +38515,6 @@ msgstr "Išsiuntėme kodą į {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Atidarius prisijungimo naršyklėje langą, iš anksto užpildysime {prefillEmail}." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Kai bus galima, atsiųsime SMS kodą." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Norėtume jums padovanoti daugiau nei {PREMIUM_PRODUCT_NAME} visam laikui, bet tai pažeistų erdvės ir laiko kontinuumą. Gal geriau nusiųsti dovaną draugui?" @@ -39198,8 +38540,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Apdorosime tai kuo greičiau. Gausite el. laišką, kai archyvas bus paruoštas." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Atkursime jūsų ankstesnį el. paštą, atjungsime senus seansus, pašalinsime telefono numerius, išjungsime MFA ir apsaugosime jūsų paskyrą nauju slaptažodžiu." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Atkursime jūsų ankstesnį el. paštą, atsijungsime nuo senų sesijų, išjungsime dvigubą autentifikaciją ir apsaugosime jūsų paskyrą nauju slaptažodžiu." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39213,10 +38555,6 @@ msgstr "Kad galėtumėte pakeisti slaptažodį, atsiųsime patvirtinimo kodą į msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Kad galėtumėte peržiūrėti atsarginius kodus, atsiųsime patvirtinimo kodą į jūsų el. paštą." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Atsiųsime SMS kodą, kai tik jis bus pasiekiamas. Jūsų numeris nebus susietas su paskyra. Mes saugome tik užšifruotą žymę be vartotojo ID, ribotą laiką." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Patvirtinsime dabartinį ir naują el. pašto adresą vienkartiniais kodais." @@ -39308,7 +38646,7 @@ msgstr "Webhookas {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhookas sukurtas" @@ -39332,7 +38670,7 @@ msgstr "Webhookas atnaujintas" msgid "Webhook URL" msgstr "Webhooko URL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhookai" @@ -39487,8 +38825,8 @@ msgstr "Tai, ką bendrinate, nebeatnaujinama" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Kas naujo?" @@ -39968,21 +39306,11 @@ msgstr "Galite pašalinti <0>{readMessageHistoryPermissionLabel} leidimą i msgid "You can sign back in at any time." msgstr "Prisijungti galėsite bet kada." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Bet kada galite paprašyti šios instancijos administratorių, kad jūsų paskyrą peržiūrėtų žmogus." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Vis tiek galite susikurti paskyrą arba prisijungti. Jei vėliau kvietimai vėl bus įjungti, galėsite prisijungti naudodami šią pačią nuorodą." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Vis tiek galite bet kada parašyti adresu {supportEmail}, kad peržiūrą atliktų žmogus." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Galite naudoti nuorodas, jaustukus ir „Markdown“ formatavimą." @@ -39993,7 +39321,7 @@ msgid "You can't add expressions there" msgstr "Negalite ten pridėti išraiškų" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Negalite pridėti naujų reakcijų, kol jums taikomas laikinas apribojimas." @@ -40008,7 +39336,7 @@ msgid "You can't befriend yourself" msgstr "Negalite draugauti su savimi" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Čia negalite pakeisti savo slapyvardžio" @@ -40095,7 +39423,7 @@ msgstr "Negalite siųsti draugystės užklausos sau." msgid "You can't send messages in this channel." msgstr "Negalite siųsti žinučių šiame kanale." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Šioje bendruomenėje negalite siųsti žinučių." @@ -40230,7 +39558,7 @@ msgid "You don't have permission to do this to this member." msgstr "Neturite leidimo to daryti šiam nariui." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Neturite leidimo prisijungti prie šio balso kanalo" @@ -40244,7 +39572,7 @@ msgstr "Neturite leidimo pervadinti šio jaustuko. Pavadinimas buvo grąžintas msgid "You have been banned from this community." msgstr "Esate užblokuotas šioje bendruomenėje." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Užblokavote {username}. Atblokuokite jį, kad galėtumėte siųsti žinutes." @@ -40263,7 +39591,7 @@ msgid "You have unsaved changes." msgstr "Turite neišsaugotų pakeitimų." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Turite neišsaugotų pakeitimų. Prieš išeidami išsaugokite arba atkurkite." @@ -40271,7 +39599,7 @@ msgstr "Turite neišsaugotų pakeitimų. Prieš išeidami išsaugokite arba atku msgid "You haven't authorized any applications to access your account." msgstr "Dar nesuteikėte jokiai programai prieigos prie savo paskyros." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Dar nepakankamai ilgai esate šios bendruomenės narys, kad galėtumėte siųsti žinutes." @@ -40327,11 +39655,6 @@ msgstr "Norėdami sukurti paskyrą, turite sutikti su paslaugų teikimo sąlygom msgid "You must verify your email before sending a report." msgstr "Prieš siųsdami pranešimą turite patvirtinti savo el. pašto adresą." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Kad galėtumėte pakeisti el. pašto adresą, turite turėti prieigą prie dabartinio. Jei įmanoma, naudokite telefono patvirtinimą arba susisiekite su palaikymo komanda." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40357,7 +39680,7 @@ msgstr "Norėdami redaguoti šiuos leidimus, turite turėti leidimą „{manageR msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Norėdami redaguoti šiuos leidimus, turite turėti leidimą „{manageRolesPermissionLabel}“." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Norėdami peržiūrėti ir redaguoti šio kanalo webhookus, turite turėti leidimą „{manageWebhooksPermissionLabel}“." @@ -40385,18 +39708,14 @@ msgstr "Prieš kurdami bendruomenę turite užregistruoti savo paskyrą." msgid "You need to claim your account before you can start a direct message." msgstr "Prieš pradėdami tiesioginį pokalbį turite užregistruoti savo paskyrą." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Kad galėtumėte siųsti tiesiogines žinutes, turite užregistruoti savo paskyrą." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Kad galėtumėte siųsti žinutes šioje bendruomenėje, turite užregistruoti savo paskyrą." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Norėdami siųsti žinutes šioje bendruomenėje, turite patvirtinti telefono numerį." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40416,7 +39735,7 @@ msgstr "Prieš pradėdami tiesioginį pokalbį turite patvirtinti savo el. pašt msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Prieš pirkdami „{premiumProductFullName}“ turite patvirtinti el. pašto adresą." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Kad galėtumėte siųsti žinutes šioje bendruomenėje, turite patvirtinti savo el. pašto adresą." @@ -40425,11 +39744,6 @@ msgstr "Kad galėtumėte siųsti žinutes šioje bendruomenėje, turite patvirti msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Jūs arba asmuo, kurį pridedate, jau turi didžiausią leidžiamą atidarytų grupės DM skaičių. Išeikite iš vieno ir bandykite dar kartą." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Liekate šiose bendruomenėse: {ownedNames}. Savininkai negali palikti savo bendruomenės." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40440,21 +39754,6 @@ msgstr "Moderatoriai išjungė jūsų garsą" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Po autorizacijos būsite nukreipti į {redirectHostname}." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Paliksite {count, plural, one {# bendruomenę} few {# bendruomenes} many {# bendruomenės} other {# bendruomenių}}, kurioms taikomas šis patikrinimas, ir jūsų paskyra vėl veiks įprastai." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Paliksite šias bendruomenes: {guildNames}. Nieko, ką paskelbėte, neištrinsime, o vėliau galėsite prisijungti iš naujo." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Vis tiek turėsite užbaigti el. pašto patvirtinimą." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40589,7 +39888,7 @@ msgid "You're going too fast" msgstr "Per greitai" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Veikiate per greitai. Truputį palaukite ir bandykite dar kartą." @@ -40637,7 +39936,7 @@ msgstr "Žinutes siunčiate per greitai" msgid "You're streaming!" msgstr "Jūs transliuojate!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Jums taikomas laikinas apribojimas. Žinučių siuntimas, reakcijos ir balso funkcijos pristabdytos, kol apribojimas baigsis." @@ -40765,25 +40064,25 @@ msgstr "Prenumeratos atnaujinimo mokėjimas per {storeName} nepavyko, bet <0/> l msgid "Your account" msgstr "Jūsų paskyra" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Jūsų paskyra iškart grįš į įprastą būseną ir jums nereikės telefono numerio. Tai nėra nuolatinė išimtis, ir mes galime paprašyti šio patikrinimo vėliau." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Jūsų paskyra sėkmingai susieta. Dabar galite uždaryti šį skirtuką ir grįžti į programėlę." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Jūsų paskyra vėl veikia normaliai." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Jūsų paskyra yra apribota" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Jūsų paskyra yra apribota. Patikrinkite savo el. paštą, kad sužinotumėte, kaip ją atblokuoti." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Jūsų paskyra dar neužregistruota. Be el. pašto ir slaptažodžio negalėsite prisijungti iš kitų įrenginių ir galite prarasti prieigą prie savo paskyros. Užregistruokite paskyrą dabar, kad ją apsaugotumėte." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Jūsų paskyra per nauja, kad galėtų siųsti žinutes šioje bendruomenėje." @@ -40801,11 +40100,6 @@ msgstr "Jūsų paskyrai reikalingas daugiafaktorinis autentifikavimas, tačiau msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Jūsų paskyra nebebus apsaugota dviejų veiksnių autentifikavimu, kai prisijungsite naudodami slaptažodį. Taip pat prarasite aukštesnio lygio leidimus bendruomenėse, kuriose reikalaujama dviejų veiksnių autentifikavimo." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Jūsų paskyra iškart vėl veikia įprastai ir niekas nepašalinama. Šios patikros galime paprašyti vėliau." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40828,13 +40122,8 @@ msgstr "Tikrinama, ar jūsų kortelei taikoma vietinė kainodara. Tai paprastai msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Jūsų kortelė tinkama. Dabar būsite nukreipti į mokėjimo puslapį." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Jūsų operatorius teigia, kad šis numeris nebenaudojamas. Patikrinkite jį ir bandykite dar kartą arba susisiekite su palaikymo tarnyba, jei numeris teisingas." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Jūsų pakeitimai pasieks visas šį kanalą sekančias bendruomenes, tai gali užtrukti minutę. Kiekvienas paskelbtas pranešimas leidžia atlikti 3 greitus pakeitimus, vėliau po 1 kas 20 minučių." @@ -40870,21 +40159,6 @@ msgstr "Jūsų įrenginys paprašys išsaugoti atnaujintą prieigos raktą „{n msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Jūsų įrenginys paprašys išsaugoti atnaujintą prieigos raktą „{name}“. Naudokite tą patį telefoną ar saugos raktą, kurį ką tik naudojote." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Jūsų el. pašto adresas atnaujintas." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Jūsų el. paštu nepavyko gauti laiškų. Pridėkite veikiantį el. pašto adresą, kad galėtume su jumis susisiekti." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Jūsų el. paštu nepavyko gauti laiškų. Atnaujinkite jį, kad galėtumėte toliau naudotis „{productName}“." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Jūsų el. paštas patvirtintas. Dabar galite prisijungti prie savo paskyros." @@ -41001,21 +40275,11 @@ msgstr "Nepavyko atnaujinti jūsų žinutės" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Jūsų naujausias pirkinys nebeatitinka pinigų grąžinimo termino. Dėl atsiskaitymo problemų susisiekite su palaikymo komanda." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "jūsų naujas el. pašto adresas" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Jūsų naujas slapyvardis arba palikite tuščią, kad jį atstatytumėte." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Jūsų numeris nesusietas su paskyra. Mes saugome tik užšifruotą žymeklį be vartotojo ID, ribotą laiką." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Jūsų mokėjimas atšauktas. Dabar galite uždaryti šį skirtuką ir grįžti į programėlę." @@ -41055,11 +40319,6 @@ msgstr "Jūsų įsigytos dovanos" msgid "your region" msgstr "jūsų regionas" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Prieš tęsiant, jūsų registracijai reikalingas papildomas apsaugos nuo brukalų patikrinimas." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/nl/messages.po b/fluxer_app/src/features/i18n/locales/nl/messages.po index 12c1dc465..cf333c671 100644 --- a/fluxer_app/src/features/i18n/locales/nl/messages.po +++ b/fluxer_app/src/features/i18n/locales/nl/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reactie} other {# reacties}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# gebruiker die heeft gereageerd} other {# gebruikers die hebben gereageerd}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# seconde} other {# seconden}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} om {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Je uitnodigingslink verloopt over # seconde.} other {Je uitnodigingslink verloopt over # seconden.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} geselecteerd" @@ -2252,7 +2252,7 @@ msgstr "1 minuut" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 uur" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 maanden (1 jaar)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "2FA-back-up" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2FA-vereiste" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 leden (aan het typen)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 maanden" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 uur" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 maanden" @@ -2575,11 +2575,6 @@ msgstr "een minuut" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Er is een nieuwe versie van de desktop-app beschikbaar. Download het installatiebestand en voer dit uit om {productName} bij te werken." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Er is een nieuwe verificatiecode verzonden." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Accountgegevens" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Dit account is bedoeld om te spammen, op te lichten of misbruik te maken van het platform." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Account beperkt" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Accountstatus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Account te nieuw" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Accountverificatie vereist" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Voeg een bot toe aan een community met de gevraagde machtigingen" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Opmerking toevoegen (optioneel)" @@ -3054,8 +3052,10 @@ msgstr "Voeg een onderwerp toe aan dit kanaal" msgid "Add a word…" msgstr "Een woord toevoegen…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Voeg een werkend e-mailadres toe" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Voeg een account toe om verder te gaan." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Voeg eerst een e-mailadres en wachtwoord toe aan je account." @@ -3424,11 +3424,6 @@ msgstr "Toegevoegd: {createdDate} • voor het laatst gebruikt: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Extra opmerkingen (optioneel)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Extra verificatie vereist" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Alle talen" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Al opgezegd" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Meld dit bericht ook bij het veiligheidsteam van {productName}" @@ -4713,11 +4708,6 @@ msgstr "Vragen voordat je iemand belt" msgid "Ask for a passkey after your password when you sign in" msgstr "Vraag om een passkey na je wachtwoord bij het inloggen" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Vraag de beheerders van deze instantie om je account te beoordelen. Deze instantie wordt onafhankelijk beheerd en alleen de beheerders ervan kunnen je account wijzigen." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Verwijder automatisch trackingparameters (zoals utm_source, fbclid, gcli msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Trackingparameters automatisch verwijderen uit URL's in berichten die je verstuurt" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Berichten automatisch controleren op seksueel expliciete inhoud in kanalen die niet zijn gemarkeerd voor inhoud voor volwassenen." @@ -5359,8 +5349,6 @@ msgstr "Nu afwezig" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Terug" @@ -6506,11 +6494,6 @@ msgstr "Camera's en virtuele opnameapparaten worden hier in {productName} gesele msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Camera's zijn uitgeschakeld bij meer dan {voiceChannelCameraUserLimit} deelnemers" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Geen toegang tot dat e-mailadres?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Kan hier geen bestanden uploaden" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Kan hier geen bestanden uploaden" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "E-mailadres wijzigen" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Emoji wijzigen" @@ -7201,7 +7184,7 @@ msgstr "De limiet voor gebruikers is gewijzigd van {oldCount} naar {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "De aangepaste URL gewijzigd van {oldCode} naar {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Verificatieniveau gewijzigd van {oldLevel} naar {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kanaal of categorie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Aangepaste toegangsrechten voor kanaal" @@ -7509,8 +7492,6 @@ msgstr "Controleer je verbinding en probeer het opnieuw." msgid "Check your connection, then try again." msgstr "Controleer je verbinding en probeer het opnieuw." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Kies een scherm in je systeemkiezer" msgid "Choose a GIF" msgstr "Kies een GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Kies een methode" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Kies een nieuw wachtwoord." @@ -7680,8 +7656,8 @@ msgstr "Kies een actie." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Kies een emoji" @@ -7749,11 +7725,6 @@ msgstr "Kies hoe je instantie werkt" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Kies een van de onderstaande methoden om domeineigendom te bewijzen. Je hoeft er maar één te voltooien." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Kies één verificatiemethode. Met elk van deze methoden kun je deze controle doorlopen." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Kies wat {clientLabel} in je community mag doen. Vink alle machtigingen msgid "Choose what friends see in their active now panel" msgstr "Kies wat vrienden zien in hun 'nu actief'-paneel" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Kies waaraan leden moeten voldoen voordat ze berichten kunnen plaatsen of communityleden een DM kunnen sturen." @@ -8030,8 +8001,8 @@ msgstr "Maakt je microfoongeluid helderder zodat je goed verstaanbaar bent." msgid "Clear" msgstr "Wissen" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Wissen na" @@ -8053,7 +8024,7 @@ msgstr "Alle bijlagesimulaties wissen" msgid "Clear all token overrides" msgstr "Alle aangepaste tokenwaarden wissen" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Bijlagesimulaties wissen" @@ -8066,14 +8037,14 @@ msgstr "Opdracht wissen" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Aangepaste status wissen" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Alle reacties van dit bericht verwijderen?" @@ -8124,7 +8095,7 @@ msgstr "Zoekopdracht wissen" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Kolenzwart thema" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Opdrachten" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Reacties zijn uitgeschakeld omdat slowmodus actief is in een of meer geselecteerde kanalen. De reactie zou direct na het doorsturen door slowmodus worden geblokkeerd." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Reacties zijn uitgeschakeld omdat slowmodus actief is in {forwardChannelDisplayName}. De reactie zou direct na het doorsturen door slowmodus worden geblokkeerd." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Reacties zijn niet beschikbaar als de slowmodus is ingeschakeld." @@ -8670,11 +8639,11 @@ msgstr "Communities" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Communities en kanalen waar je geen webhooks kunt beheren, worden verborgen." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Communities die in Ontdekken worden vermeld, moeten berichten van alle leden scannen. Deze instelling kan niet worden gewijzigd zolang Ontdekken is ingeschakeld." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Communities die in Ontdekken worden vermeld, vereisen minimaal e-mailverificatie. Je kunt \"Geen\" niet selecteren zolang Ontdekken is ingeschakeld." @@ -8827,7 +8796,7 @@ msgstr "Naam community" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Communitybijnaam" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Communityprofiel" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Communityprofiel bijgewerkt" @@ -8907,7 +8876,7 @@ msgstr "Badgeniveau voor ongelezen communityberichten" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Community bijgewerkt" @@ -8952,11 +8921,6 @@ msgstr "Vergelijking" msgid "Complete mature content check" msgstr "Controle voor inhoud voor volwassenen voltooien" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Voltooi een van de onderstaande verificatiemethoden om {productName} te blijven gebruiken." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Betaling afronden" msgid "Complete the mature content check to unlock mature media." msgstr "Voltooi de controle voor inhoud voor volwassenen om media voor volwassenen te ontgrendelen." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Voltooi de vereiste e-mail- en telefoonverificatiestappen hieronder om {productName} te blijven gebruiken." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Voltooi de vereiste verificatie om {productName} te blijven gebruiken." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Profielbadge configureren" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Verbindingen opnieuw gerangschikt" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Toestemming vereist" @@ -9349,16 +9304,6 @@ msgstr "Stel een autorisatie-URL samen met machtigingsbereiken en machtigingen." msgid "Contact" msgstr "Contact" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Contact opnemen met support" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Neem contact op met de beheerders van deze instantie voor hulp." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Contentmaker" msgid "Content filter" msgstr "Inhoudsfilter" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Inhoud filteren" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Indicatie van inhoudstype" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Toegangscontroles voor inhoud" @@ -9416,12 +9361,10 @@ msgstr "Contextmenu's kunnen worden geopend met een linkermuisklik (op knoppen) #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Bepaal hoe ongelezen berichten in gedempte kanalen worden aangegeven in msgid "Control which chat updates are announced by assistive technology." msgstr "Bepaal welke chatupdates worden aangekondigd door hulptechnologie." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Gesprek niet gevonden" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Tag kon niet worden toegevoegd" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Deze vriend kon niet aan de groep worden toegevoegd. Probeer het opnieuw." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Kon niet toevoegen aan groep" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Themalink kon niet worden aangemaakt" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Kon geen uitnodigingslink maken" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Je respijtperiode kon niet worden beëindigd" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Kon geen uitnodigingslink genereren. Probeer het opnieuw." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Afbeelding kon niet worden verwerkt" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Kon dit bericht niet publiceren" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Kon niet opnieuw deelnemen aan de Visionary-community" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Binnenkomstgeluid kon niet worden verwijderd" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Koninstellingen niet opslaan" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Binnenkomstgeluid kon niet worden opgeslagen" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Aanvraag kon niet worden ingetrokken" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Afteltimer" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Land" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Maak het beheerdersaccount aan" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Groeps-DM aanmaken met {addableCount, plural, one {# overgebleven ontvanger} other {# overgebleven ontvangers}} en de anderen overslaan?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Webhook maken" @@ -10948,7 +10884,7 @@ msgstr "Aangepaste emoji {emojiName} van een community" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Aangepaste binnenkomstgeluiden zijn niet ingeschakeld op deze instantie." @@ -11108,7 +11044,7 @@ msgstr "Aangepaste spraakverwerking" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Aangepaste waarschuwingstekst" @@ -11530,11 +11466,6 @@ msgstr "Standaard zoekmachine" msgid "Default shortcuts" msgstr "Standaardsneltoetsen" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Standaardtabblad" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Dit bericht verwijderen" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Dit bericht verwijderen? Kan niet ongedaan worden gemaakt." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Bericht verwijderen? Dit kan niet ongedaan worden gemaakt. Dit bericht wordt ook verwijderd uit elke community die dit kanaal volgt." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Ontwikkelaarsmodus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Ontwikkelaarsoptie" @@ -12299,7 +12230,7 @@ msgstr "Directe invoer" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Weergavemodus" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Weergavenaam" @@ -12858,7 +12789,7 @@ msgstr "Wil je lid worden van {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, ik kom uit de toekomst. Ik ben hierheen gekomen met een tijdmachine die jij hebt uitgevonden. Nu heb ik je hulp nodig om terug te gaan naar het jaar 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Lokale tijd profiel bewerken" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Gepubliceerde bericht bewerken?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Je berichten hierboven of hieronder bewerken" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Bewerk je profielweergave en zie een live voorbeeld" @@ -13590,10 +13521,8 @@ msgstr "Komt in aanmerking voor een terugbetaling tot {windowEndsOn}. Hiermee wo msgid "Email" msgstr "E-mail" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "E-mailadres is verplicht." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-mailadres gewijzigd" @@ -13616,49 +13547,17 @@ msgstr "E-mailadres gewijzigd" msgid "Email delivery" msgstr "E-mailbezorging" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-mail of telefoon" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Opnieuw verifiëren van e-mailadres of telefoonnummer vereist" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Opnieuw verifiëren van e-mailadres vereist" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-mailadres niet beschikbaar" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Je e-mailadres kan momenteel niet worden bijgewerkt. Probeer het later opnieuw of neem contact op met het supportteam." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "E-mailadres moet worden bijgewerkt" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Stuur ons een e-mail en een medewerker zal je account beoordelen. Geef aan dat je niet via sms kunt verifiëren, dan helpen wij je verder. Je krijgt per e-mail antwoord, dus je krijgt niet meteen een reactie." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Banner e-mailverificatie" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "E-mailverificatie vereist" @@ -13675,6 +13574,10 @@ msgstr "E-mailverificatiestatus forceren" msgid "Email verified successfully" msgstr "E-mailadres succesvol geverifieerd" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "E-mails naar uw huidige adres worden niet bezorgd. Voer een nieuw e-mailadres in en we sturen daar een code naartoe." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Ingesloten inhoud" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Ingesloten inhoud verborgen" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Ingesloten inhoud weer zichtbaar" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Spraakweergave inschakelen voor /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Schakel 2FA in voor je account om deze instelling te wijzigen" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Voer een geldige sjabloon-URL of -code van {theOtherPlatform} in." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Voer een geldig e-mailadres in." @@ -14298,33 +14199,11 @@ msgstr "Voer een geldig e-mailadres in." msgid "Enter a valid message link." msgstr "Voer een geldige berichtlink in." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Voer een geldig mobiel telefoonnummer in." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Voer een geldig telefoonnummer in" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Voer een geldige gebruikersnaam in ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Voer een e-mailadres in waartoe je toegang hebt. We sturen daar een code naartoe." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Code invoeren" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Volledig scherm" msgid "Enter gift code…" msgstr "Cadeaucode invoeren…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Nieuw e-mailadres invoeren" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Voer een van je back-upcodes in als je je passkey niet kunt gebruiken." msgid "Enter one of your backup codes." msgstr "Voer een van je back-upcodes in." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Telefoonnummer invoeren" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Voer de code van {digitCount} cijfers uit je authenticator-app of een va msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Voer de code van {digitCount} cijfers uit je authenticator-app in." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Voer de {digitCount}-cijferige code in die is verzonden naar {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Voer de code van {MFA_CODE_DIGIT_COUNT} cijfers in die is verzonden naar {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Voer de code in" @@ -14408,11 +14267,6 @@ msgstr "Voer de code in voordat je verdergaat." msgid "Enter the code from your authenticator app." msgstr "Voer de code van je authenticator-app in." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Voer de code in die is verzonden naar {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Voer de code in die is verzonden naar je huidige e-mailadres." @@ -14426,6 +14280,7 @@ msgstr "Voer de code in die naar je e-mailadres is gestuurd." msgid "Enter the code shown in the app to continue." msgstr "Voer de code in die in de app wordt weergegeven om door te gaan." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Voer de code in die we naar je nieuwe adres hebben gemaild." @@ -14434,11 +14289,6 @@ msgstr "Voer de code in die we naar je nieuwe adres hebben gemaild." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Voer de code in die we naar je e-mailadres hebben gestuurd om het te verifiëren. Je wachtwoord wordt ingesteld zodra de code is bevestigd." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Voer de e-mailcode in" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Voer de uitnodigingslink in om deel te nemen aan een community." @@ -14452,11 +14302,6 @@ msgstr "Voer het nieuwe e-mailadres in dat je wilt gebruiken. We sturen hierna e msgid "Enter the PIN for your security key to continue." msgstr "Voer de pincode van je beveiligingssleutel in om verder te gaan." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Voer de sms-code in" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Voer deze code in je browser in om het aanmelden te voltooien." @@ -14492,11 +14337,6 @@ msgstr "Voer je naam in" msgid "Enter your password." msgstr "Voer je wachtwoord in." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Voer je telefoonnummer in" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Binnenkomstgeluid" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Bestanden voor binnenkomstgeluiden mogen maximaal {limit} groot zijn." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Bibliotheek met binnenkomstgeluiden vol" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Binnenkomstgeluid verwijderd" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Binnenkomstgeluid opgeslagen" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Binnenkomstgeluiden" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Binnenkomstgeluiden niet beschikbaar" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Verloopt:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Instelling voor filter voor seksueel expliciete inhoud" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Kopiëren naar klembord mislukt" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Webhook maken mislukt" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Aangepaste URL laden mislukt. Probeer het opnieuw." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Webhooks laden mislukt" @@ -15190,11 +15030,6 @@ msgstr "Kon de aangepaste URL niet verwijderen. Probeer het opnieuw." msgid "Failed to resend code. Try again." msgstr "Code opnieuw verzenden mislukt. Probeer het opnieuw." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Verificatiecode opnieuw verzenden mislukt. Probeer het later opnieuw." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Verzenden mislukt. Houd ingedrukt voor opties." msgid "Failed to send report. Try again." msgstr "Melding verzenden mislukt. Probeer het opnieuw." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Verificatie-e-mail verzenden mislukt. Probeer het later opnieuw." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Starten mislukt" @@ -15551,15 +15381,15 @@ msgstr "Filteren op gebruiker" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Berichten van iedereen filteren" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Berichten van leden zonder rollen filteren" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Volg dit kanaal" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Volg om deze aankondigingen in een kanaal naar keuze te ontvangen." @@ -15773,7 +15603,7 @@ msgstr "Gevolgd kanaal {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Gevolgde kanalen" @@ -15857,11 +15687,6 @@ msgstr "Alleen voor Britse ogen..." msgid "For me" msgstr "Voor mij" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Voor deze controle stuur je ons een sms in plaats van er een van ons te ontvangen." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Bevestig voor je veiligheid dat jij het bent om verder te gaan." @@ -15905,7 +15730,7 @@ msgstr "Laadplaceholder forceren" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Media forceren als volwassen" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Verplaatsen naar AFK-kanaal forceren" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Machtiging {permissionName} geforceerd uitschakelen" @@ -15948,7 +15773,7 @@ msgstr "Waarschuwing voor aangepaste URL altijd tonen" msgid "Force show voice connection" msgstr "Spraakverbinding geforceerd weergeven" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Actieve slowmodus forceren" @@ -16020,7 +15845,7 @@ msgstr "Media doorsturen" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Bericht doorsturen" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Geoblokkeer-overlay" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Geografisch beperkt" @@ -16490,12 +16315,6 @@ msgstr "Krijg een geanimeerde avatar en banner, een abonneebadge, de viercijferi msgid "Get monthly" msgstr "Maandelijks ontvangen" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Nieuwe code ontvangen" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Cadeaucodes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Duur van cadeau" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Cadeau-inventaris" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Cadeau-inventarisflow" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Cadeau niet gevonden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Cadeau ingewisseld" @@ -17030,7 +16849,7 @@ msgstr "Groeps-DM" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hé {displayName}, voltooi de registratie van je account om te voorkomen dat je de toegang verliest." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hé {displayName}, verifieer je e-mailadres." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hé {displayName}, we kunnen geen e-mail bezorgen op je adres. Voeg een werkend e-mailadres toe om je account te verifiëren." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Je eigen schermdeling verbergen?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Hoog" @@ -17755,11 +17579,6 @@ msgstr "Ik ben een tooltip" msgid "I changed my mind" msgstr "Ik heb me bedacht" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Ik heb een andere manier nodig" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Als deze melding over een specifiek bericht gaat, meld dan dat bericht. msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Als deze melding over specifieke berichten gaat, meld dan het meest relevante bericht. Meldingen over berichten geven ons veiligheidsteam de duidelijkste context. Extra details in de opmerkingen kunnen ons helpen de melding sneller te beoordelen. Meld de gebruiker zelf alleen als het melden van één bericht het bredere probleem niet voldoende duidelijk zou maken." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Als je niet kunt verifiëren via sms" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Als je geen van de verificatiemethoden kunt gebruiken, neem dan contact op met het supportteam voor hulp." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Interfacegrootte" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Ongeldig audiobestand" @@ -18674,8 +18483,10 @@ msgstr "Ongeldige JSON. Plak het volledige antwoord van de bovenstaande URL." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Deelnemen aan spraakoproep" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Deelnemen aan spraakkanaal" @@ -19613,16 +19424,6 @@ msgstr "Meer informatie over Visionary" msgid "Leave" msgstr "Verlaten" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "{count, plural, one {# community} other {# communities}} verlaten en deze controle overslaan?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Verlaten en overslaan" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Laat schermlezers nieuwe berichten aankondigen zodra ze binnenkomen in het open kanaal. Meldingsgeluiden worden niet beïnvloed." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Laat de community zelf modereren" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Bibliotheek" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Bibliotheek vol (maximaal {max} geluiden). Verwijder een geluid voordat je een ander toevoegt." @@ -19812,7 +19613,7 @@ msgstr "Bibliotheek: {count} van {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Levenslang" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Laden..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Laden…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Laag" @@ -20416,7 +20217,7 @@ msgstr "Communityfuncties beheren" msgid "Manage emoji & stickers" msgstr "Emoji en stickers beheren" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Beheer inkomende webhooks die berichten in dit kanaal kunnen plaatsen." @@ -20514,7 +20315,7 @@ msgstr "Markeer alle ongelezen inboxkanalen direct als gelezen, zonder om bevest msgid "Mark as read" msgstr "Markeren als gelezen" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Markeren als ingewisseld" @@ -20676,14 +20477,14 @@ msgstr "Community voor volwassenen" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Inhoud voor volwassenen" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Inhoud voor volwassenen en inhoudswaarschuwingen" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maximale levensduur (dagen)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Maximale bescherming voor gezinsvriendelijke ruimtes" @@ -20924,7 +20725,7 @@ msgstr "Afspelen stoppen" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Verbanning van lid opgeheven" msgid "Member updated" msgstr "Lid bijgewerkt" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Ledenverificatie" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Verificatieniveau voor leden" @@ -21048,7 +20849,7 @@ msgstr "Leden worden verwijderd wanneer ze offline zijn, tenzij ze een rol krijg msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Leden met de machtiging \"{pinMessagesPermissionLabel}\" kunnen berichten voor iedereen vastzetten." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Leden met rollen kunnen deze controles omzeilen. Voor openbare ruimtes raden we aan verificatie in te schakelen." @@ -21153,7 +20954,7 @@ msgstr "Vermeldingen van jou verschijnen hier gedurende {retentionDays} dagen." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Alleen vermeldingen" @@ -21292,7 +21093,7 @@ msgstr "Instellingen voor de weergave van berichten zijn alleen beschikbaar op d msgid "Message editing" msgstr "Bericht bewerken" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Bericht doorgestuurd" @@ -21341,7 +21142,7 @@ msgstr "Knoppen voor berichtinvoer" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Bericht is te lang" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Berichtvoorbeelden in de DM-lijst" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Bericht gepubliceerd" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Berichten die in #{sourceName} worden gepubliceerd, verschijnen nu in #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Berichten die in deze aankondigingskanalen worden gepubliceerd, worden hier gekopieerd." @@ -21504,7 +21305,7 @@ msgstr "Berichten die in deze aankondigingskanalen worden gepubliceerd, worden g msgid "Messages you can bookmark" msgstr "Berichten die je kunt vastmaken" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Het versturen van berichten is tijdelijk gepauzeerd in deze community." @@ -21733,30 +21534,30 @@ msgstr "Vervallen over 1 dag simuleren" msgid "Mock expires in 7 days" msgstr "Vervallen over 7 dagen simuleren" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Overlay voor geografische blokkering simuleren" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Cadeau-inventaris simuleren" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Inkomende oproep simuleren" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Reden voor toegangscontrole van kanalen met inhoud voor volwassenen simuleren" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Reden voor toegangscontrole van media voor volwassenen simuleren" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "VK-locatie simuleren" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Testgebruikersavatars in verschillende formaten en alle statuscombinaties." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Variant simuleren" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Gesimuleerde productprocessen" @@ -22698,14 +22494,16 @@ msgstr "Nieuwe community gedempt" msgid "New direct message" msgstr "Nieuwe DM" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Nieuw e-mailadres" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formulier voor nieuw e-mailadres" @@ -22816,9 +22614,7 @@ msgstr "Nieuwste eerst" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Volgende" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Nee" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Geen {attachFilesPermission}-machtiging" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Geen {sendMessagesPermission}-machtiging" @@ -23005,7 +22801,7 @@ msgstr "Geen wijzigingen om op te slaan" msgid "No channels available" msgstr "Geen kanalen beschikbaar" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Geen kanalen gevonden" @@ -23233,11 +23029,6 @@ msgstr "Geen machtigingen gevonden" msgid "No personal words yet." msgstr "Nog geen persoonlijke woorden." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Geen telefoonnummer" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Geen resultaten" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Geen resultaten gevonden" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Geen gebruikers gevonden" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Geen verificatie vereist." @@ -23452,7 +23243,7 @@ msgstr "Geen verificatie vereist." msgid "No verification methods available" msgstr "Geen verificatiemethoden beschikbaar" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Geen webhooks" @@ -23504,7 +23295,7 @@ msgstr "Niet converteren" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Geen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Geen (normaal gedrag)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Noors" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Nog niet lang genoeg lid" @@ -23798,9 +23589,9 @@ msgstr "Objecten" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Uit" @@ -23848,7 +23639,7 @@ msgstr "Oudste eerst" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Aan" @@ -23884,11 +23675,6 @@ msgstr "Eén of meer bijlagen konden niet worden gelezen of geüpload. Het besta msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Een of meer bestanden die je probeert te uploaden, zijn groter dan de maximale bestandsgrootte van {maxSizeFormatted} per bestand." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Nog één snelle controle" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Alleen luidsprekers" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Alleen de community-eigenaar kan deze instelling wijzigen" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Emoji in browser openen" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Emoji-kiezer openen" @@ -24382,12 +24168,8 @@ msgstr "Pictogram voor menu openen" msgid "Open message history threshold" msgstr "Drempel voor berichtgeschiedenis openen" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Overlay openen" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Keuzelijst openen" @@ -24485,11 +24267,6 @@ msgstr "Open de nieuwe app. Je bent al ingelogd." msgid "Open the shortcuts list for quick actions." msgstr "Open de lijst met sneltoetsen voor snelle acties." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Open de verificatie-e-mail en gebruik de link daarin. Dit venster wordt bijgewerkt nadat de link is geopend." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Audio- en video-instellingen openen" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Open je browser, meld je aan en voer de onderstaande code in om je account te koppelen." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Open je berichten" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Open je oude {PRODUCT_NAME}-app en kies 'Nieuw apparaat koppelen' en voer daarna de onderstaande code in." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Open de berichtenapp van je telefoon en maak een nieuw sms-bericht aan." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Open de berichtenapp op je telefoon en start een nieuw sms-bericht." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Andere reactie…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Onze telefoonnummercontrole is momenteel niet beschikbaar. Dit ligt aan ons, niet aan je nummer. Wacht een paar minuten en probeer hetzelfde nummer opnieuw." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, fraude, schadelijke links of valse beweringen die waarschijnlijk schade in de echte wereld veroorzaken." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefoon" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Telefoonnummer" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Telefoonnummer is verplicht" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Telefoonnummer geverifieerd" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Telefoonnummer opnieuw verifiëren vereist" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Telefoonstap" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Telefoonverificatie is niet beschikbaar voor dit account. Gebruik een andere methode of neem contact op met de ondersteuning." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Telefoonverificatie vereist" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Kies het 4-cijferige nummer achter je gebruikersnaam" msgid "Pick the appearance this administrator account should start with." msgstr "Kies het uiterlijk waarmee dit beheerdersaccount moet beginnen." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Kies de methode die je nu kunt voltooien." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Beeld in beeld" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Vastzetten" @@ -25471,7 +25176,7 @@ msgstr "Groeps-DM vastzetten" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Zet elk bericht vast of maak het weer los." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Zet dit bericht vast in het kanaal zodat iedereen het kan zien." @@ -26227,18 +25932,18 @@ msgstr "Profielkleur" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Profiel aanpassen" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Profiel aanpassen voor {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formulier om je profiel aan te passen" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Profieltype" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profiel bijgewerkt" @@ -26340,7 +26045,7 @@ msgstr "Om bevestiging vragen bij nieuwe audioapparaten" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Raidcoördinatie" msgid "Rate" msgstr "Snelheid" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Snelheidslimiet bereikt" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Ruwe embed-JSON" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Vriend {userName} verwijderen?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Alles verwijderen" @@ -27290,7 +26990,7 @@ msgstr "Alle reacties met {emojiNameWithColons} van dit bericht verwijderen?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Alle reacties verwijderen" @@ -27899,20 +27599,10 @@ msgstr "Tag van gemelde gebruiker (optioneel)" msgid "Reposts: <0>{countLabel}" msgstr "Reposts: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Vraag eerst een nieuwe code aan." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Nieuwe resetlink aanvragen" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Vraag eerst een verificatiecode aan." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Verzoeken" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "2FA vereisen voor moderatieacties" @@ -27958,7 +27648,7 @@ msgstr "OAuth2-codetoekenning vereisen" msgid "Require passkey" msgstr "Passkey vereisen" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Vereis tweefactorauthenticatie voor moderators voordat ze gebruikers kunnen verbannen, uit de community verwijderen, een time-out geven of berichten verwijderen." @@ -27972,46 +27662,6 @@ msgstr "Vereist" msgid "Required 2FA for moderation actions" msgstr "2FA vereist voor moderatieacties" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Standaardtabblad voor vereiste actie" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Proces voor vereiste actie" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Telefoonstap voor vereiste actie" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Laadstatus bij opnieuw verzenden voor vereiste actie" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Resultaat van opnieuw verzenden voor vereiste actie" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Tekst voor herverificatie bij vereiste actie" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Variant van vereiste actie" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Overlay vereiste acties" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Vereist een omleidings-URI en een autorisatiecode bij het uitnodigen van deze bot." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Vereist een geverifieerd e-mailadres en een account dat minstens 5 minuten oud is." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Vereist een geverifieerd e-mailadres." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Vereist een geverifieerd telefoonnummer." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Vereist alles van het niveau Gemiddeld, plus dat je minimaal 10 minuten lid bent van de community." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Opnieuw verzenden ({resendSecondsRemaining} s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Opnieuw verzenden ({secondsRemaining} s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Knop voor opnieuw verzenden wordt geladen" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Code opnieuw verzenden" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "E-mail opnieuw verzenden" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Uitkomst opnieuw verzenden" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Opnieuw verzonden" @@ -28518,21 +28152,6 @@ msgstr "Tonen" msgid "Reveal spoiler" msgstr "Spoiler weergeven" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Verifieer je e-mailadres opnieuw of verifieer je telefoonnummer om {productName} te blijven gebruiken." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Verifieer je e-mailadres opnieuw om {productName} te blijven gebruiken." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Verifieer je telefoonnummer opnieuw om {productName} te blijven gebruiken." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Verzadiging" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Voorbeeld bij spoelen" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Kanalen zoeken" msgid "Search communities" msgstr "Communities zoeken" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Landen zoeken..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Landen zoeken…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Selecteer je woonland." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Selecteer…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Verzenden" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Verzenden ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Stuur nog een melding" msgid "Send button" msgstr "Verzendknop" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Code verzenden" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Berichten verzenden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Berichten verzenden uitgeschakeld" @@ -30151,32 +29759,11 @@ msgstr "Opgeslagen media-item {memeName} verzenden" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Verstuur tekst-naar-spraakberichten met /tts. Leden die tekst-naar-spraak hebben ingeschakeld, horen ze hardop voorgelezen." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Stuur de code <0>{0} naar <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Stuur de code naar het onderstaande telefoonnummer." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Verstuur deze code" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Deze pin terug in de tijd sturen?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Verzenden naar" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Spraakbericht verzenden" msgid "Send:" msgstr "Verzenden:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Het versturen van een sms naar dit telefoonnummer is te duur voor {PRODUCT_NAME}. Daarom vragen we je om ons een sms te sturen. We begrijpen dat dit niet ideaal is. Je kunt ook de beheerders van deze instantie vragen om deze vereiste van je account te verwijderen." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Het versturen van een sms naar dit telefoonnummer is te duur voor {PRODUCT_NAME}. Daarom vragen we je om ons een sms te sturen. We begrijpen dat dit niet ideaal is. Je kunt ook contact opnemen met <0>{SUPPORT_EMAIL} om deze vereiste van je account te laten verwijderen." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Na elkaar verzenden" msgid "Serve the token file" msgstr "Tokenbestand aanbieden" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Servicefout" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Aangepaste sneltoets instellen voor \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Aangepaste status instellen" @@ -30486,18 +30060,6 @@ msgstr "De spraakregio ingesteld op {region}" msgid "Set the voice region to automatic" msgstr "De spraakregio ingesteld op automatisch" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Stel deze controle uit" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Deze controle uitstellen?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Je voornaamwoorden instellen" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Je status instellen" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Sneltoetsen worden tijdens het opnemen gepauzeerd." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Verkort het bericht en probeer het opnieuw." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Toon een {productName}-pictogram in het systeemvak of de menubalk" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Toon een inhoudswaarschuwing" @@ -31672,7 +31234,7 @@ msgstr "Slowmodus · wacht {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Slowmodus actief" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Slowmodus is ingesteld op {durationLabel}. Wacht voordat je nog een bericht verzendt." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Resterende tijd voor slowmodus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Slowmodussimulatie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Resterende tijd voor slowmodus" @@ -31807,11 +31369,6 @@ msgstr "Vloeiend scrollen" msgid "Smoother video" msgstr "Vloeiendere video" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Sms-verificatie is momenteel niet beschikbaar. Probeer het later opnieuw of neem contact op met de ondersteuning." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Er is iets misgegaan bij het voorbereiden van deze sticker. Probeer een ander bestand of probeer het over een ogenblik opnieuw." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Er ging iets mis bij het publiceren. Probeer het later opnieuw." @@ -32009,11 +31566,9 @@ msgstr "Er is iets misgegaan. Laad de pagina opnieuw of log opnieuw in." msgid "Something went wrong. Try again later." msgstr "Er is iets misgegaan. Probeer het later opnieuw." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Er is iets misgegaan. Probeer het opnieuw." @@ -32352,11 +31907,6 @@ msgstr "SSO-aanmelding is verlopen. Probeer het opnieuw." msgid "Staff controls" msgstr "Medewerkersopties" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Standaard sms-tarieven van je provider kunnen van toepassing zijn." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Steranimatie" msgid "Starred channels" msgstr "Favoriete kanalen" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Transport voor ontvangst:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Abonnement" @@ -33051,14 +32599,12 @@ msgstr "Abonnementsscenario's" msgid "Subtext" msgstr "Subtekst" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Gelukt" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Aanbevolen voor de meeste communities" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Systeem en welkom" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Systeemaankondigingen van {productName}-medewerkers. Je kunt hier niet antwoorden." @@ -33765,11 +33311,6 @@ msgstr "Tekst selecteren" msgid "Text size" msgstr "Tekstgrootte" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Sms ons vanaf je telefoon" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Thais" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Bedankt dat je helpt om {productName} veilig te houden. We bekijken je melding zo snel mogelijk." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Die code werkte niet. Controleer de code en probeer het opnieuw." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Die code is verlopen. Vraag een nieuwe code aan." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Dat is niet voltooid. Mogelijk heb je sommige communities al verlaten en is je account nog steeds vergrendeld. Druk nogmaals op \"Stel deze controle uit\" om dit af te ronden." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Dat is niet gelukt. Er is niets veranderd. Probeer het opnieuw." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Dat lijkt geen geldige kleur. Probeer hex, rgb(), hsl() of een CSS-kleur msgid "That doesn't look like a valid URL." msgstr "Dat lijkt geen geldige URL." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Dat e-mailadres is al in gebruik." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "De aangepaste toegangsrechten weigerden {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "De pagina die je zoekt bestaat niet of is verplaatst." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "De telefooncontrole is uitgesteld. Je moet nog één e-mailstap afronden." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Er zijn geen kanalen beschikbaar om een uitnodiging voor te maken." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Er zijn op dit moment geen rollen om toe te wijzen in deze community, maar je kunt een nieuwe rol aanmaken via <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Er zijn geen webhooks ingesteld voor dit kanaal. Maak een webhook aan om externe apps berichten te laten plaatsen." @@ -34273,7 +33784,7 @@ msgstr "Er is een fout opgetreden bij het laden van de uitnodigingen. Probeer he msgid "There was an error loading the stickers. Try again." msgstr "Er is een fout opgetreden bij het laden van de stickers. Probeer het opnieuw." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Er is een fout opgetreden bij het laden van de webhooks voor dit kanaal. Probeer het opnieuw." @@ -34417,7 +33928,7 @@ msgstr "Dit kanaal kan 10 berichten achter elkaar plaatsen, en daarna elke 6 min msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Dit kanaal kan 10 berichten achter elkaar plaatsen, daarna nog één per 6 minuten. Probeer het over een paar minuten opnieuw." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Dit kanaal ondersteunt geen webhooks." @@ -34550,12 +34061,12 @@ msgstr "Deze verbinding is niet geverifieerd." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Dit bevat gevoelige inhoud." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Dit gesprek is niet meer beschikbaar." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Deze groep heeft te veel mensen" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Deze groep is vol. Verwijder iemand voordat je meer mensen toevoegt." @@ -34715,11 +34226,6 @@ msgstr "Dit is een aangepaste sticker uit een community." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Dit is een kanaal met leeftijdsbeperking. Updates kunnen alleen naar kanalen met leeftijdsbeperking gaan." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Dit is een antispamcontrole. Je telefoonnummer is niet gekoppeld aan je account." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Dit is uitgeschakeld" msgid "This is how messages appear" msgstr "Zo worden berichten weergegeven" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Dit is momenteel niet beschikbaar voor je account. Vraag de beheerders van deze instantie om dit te beoordelen." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Dit is momenteel niet beschikbaar voor je account. Mail naar {supportEmail} voor een beoordeling door een medewerker." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Dit is niet het kanaal dat je zoekt." @@ -34792,11 +34288,6 @@ msgstr "Dit is je laatste passkey en passkeys zijn je tweede factor. Als je deze msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Dit is je laatste passkey. Als deze weg is, kun je geen passkey meer gebruiken als je tweede factor." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Dit is geen mobiel nummer en kan daarom onze sms niet ontvangen. Probeer een mobiel nummer, of neem contact op met het supportteam als dit volgens jou niet klopt." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Dit bericht is al verwijderd." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Dit bericht is al gepubliceerd" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Dit bericht bestaat niet meer." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Deze bijnaam is alleen zichtbaar in deze community" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Dit nummer wordt geverifieerd door ons te sms'en. Ga terug en start de telefoonverificatie opnieuw om de code en het nummer om naartoe te sms'en te krijgen." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Om dit nummer te verifiëren, moet je ons een sms sturen in plaats van er een van ons te ontvangen." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Deze deelnemer heeft het geluid uitgeschakeld" msgid "This participant was deafened by moderators" msgstr "Moderators hebben het geluid voor deze deelnemer uitgeschakeld" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Dit telefoonnummer kan niet worden gebruikt. Probeer een ander mobiel nummer of neem contact op met de ondersteuning." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Dit telefoonnummer is al gebruikt. Probeer een ander nummer of neem contact op met support." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Deze gebruiker heeft geen rollen in deze community." msgid "This user is already banned from the community." msgstr "Deze gebruiker is al verbannen uit de community." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Deze gebruiker is niet meer beschikbaar." @@ -35065,11 +34536,6 @@ msgstr "Deze gebruiker is door een platformbeheerder geforceerd toegevoegd aan d msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Deze verificatiesessie is verlopen. Ga terug naar {productName} en start het afrekenen opnieuw." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Deze verificatiesessie is verlopen. Begin opnieuw." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Hiermee log je uit, wis je bestanden in de cache en opgeslagen sessies e msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Hiermee worden alle externe links vertrouwd en wordt de waarschuwing voor elk domein overgeslagen. Je bestaande vertrouwde domeinen worden vervangen. Dit is minder veilig." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Dit venster wordt automatisch bijgewerkt nadat we je bericht hebben ontvangen." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Titelbalk" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Titelbalkplatform" @@ -35470,18 +34931,11 @@ msgstr "Toon" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "HDR-afbeeldingen omzetten naar standaardbereik, waardoor de piekhelderheid wordt verminderd." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Te veel pogingen. Wacht even en probeer het dan opnieuw." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Te veel communities" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Te veel verzoeken. Probeer het later opnieuw." @@ -36151,8 +35605,10 @@ msgstr "Kan geen emoji's voorbereiden om te uploaden. De volgende fouten zijn op #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Niet beschikbaar" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Ongecategoriseerd" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Account met onvoltooide registratie" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Ongenummerd" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Losmaken" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Bericht losmaken" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Dit bericht losmaken?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Niet-opgeslagen wijzigingen" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Niet-ondersteund audiobestand." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Tot ik het weer aanzet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "E-mailadres niet geverifieerd" @@ -36958,12 +36414,7 @@ msgstr "Update {productName} om dit bericht te bekijken." msgid "Update app" msgstr "App bijwerken" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "E-mailadres bijwerken" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Mijn status bijwerken" @@ -37306,18 +36757,13 @@ msgstr "Gebruik {url} op de plek waar de afbeeldings-URL moet worden ingevoegd." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Gebruik een apart venster om een drempeldatum voor de berichtgeschiedenis in te stellen voor leden zonder de machtiging {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Gebruik een ander e-mailadres en verifieer dit met een code." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Werkelijk gebruiken" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Werkelijk premiumtype gebruiken" @@ -37335,16 +36781,6 @@ msgstr "Andere methode gebruiken" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Gebruik een authenticator-app om codes te genereren voor tweefactorauthenticatie" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Gebruik een e-mailadres waar je toegang toe hebt. We sturen daar een code naartoe." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Gebruik een ander e-mailadres dan je huidige." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Donker thema gebruiken in de hele app" msgid "Use default" msgstr "Standaard gebruiken" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Ander e-mailadres gebruiken" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "E-mail gebruiken" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Passkeys gebruiken voor tweefactorauthenticatie?" msgid "Use passkeys to sign in without a password" msgstr "Gebruik passkeys om zonder wachtwoord in te loggen" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Telefoon gebruiken" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Tekst voor herverificatie gebruiken" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Gebruiker wisselt van kanaal" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Gebruiker niet gevonden" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Verificatie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Verificatie en lidmaatschapsbarrières" @@ -37970,15 +37387,8 @@ msgstr "Verificatiecode" msgid "Verification code sent" msgstr "Verificatiecode verzonden" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Verificatiecode verzonden. Controleer je nieuwe e-mailinbox." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Verificatie-e-mail verzonden. Controleer je inbox." @@ -38038,23 +37448,6 @@ msgstr "Formulier voor identiteitsverificatie" msgid "Verify it's you" msgstr "Verifieer dat jij het bent" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Telefoonnummer verifiëren" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Telefoonnummer verifiëren" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formulier voor telefoonnummerverificatie" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Verifieer je e-mailadres voordat je een authenticator-app toevoegt." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Verifieer je e-mailadres voordat je je community-bijnaam, avatar, banner, biografie, voornaamwoorden of accentkleur wijzigt." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Verifieer je e-mailadres voordat je je gebruikersnaam, weergavenaam, avatar, banner, biografie, voornaamwoorden, tijdzone of {premiumProductName}-badgeprivacy wijzigt." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Verifieer je e-mailadres voordat je dit communityprofiel bewerkt. Je kunt het hier nog wel bekijken." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Verifieer je e-mailadres voordat je je profiel bewerkt. Je kunt het hier nog wel bekijken." @@ -38113,11 +37506,6 @@ msgstr "Verifieer je e-mailadres voordat je vriendschapsverzoeken verstuurt." msgid "Verify your email first" msgstr "Verifieer eerst je e-mailadres" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Verifieer je e-mailadres of telefoonnummer om {productName} te blijven gebruiken." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Verifieer je e-mailadres om cadeaus te kopen." msgid "Verify your email to change your username" msgstr "Verifieer je e-mailadres om je gebruikersnaam te wijzigen" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Verifieer je e-mailadres om {productName} te blijven gebruiken." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Verifieer je e-mailadres om dit communityprofiel te bewerken" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Verifieer je e-mailadres om je profiel te bewerken" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Versie" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Zeer hoog" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Volume omhoog" msgid "Wait a moment before deleting more messages." msgstr "Wacht even voordat je meer berichten verwijdert." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Even geduld. Dit venster sluit automatisch zodra we je bericht ontvangen." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Wacht tussen berichten. Leden met de machtiging \"{bypassSlowmodePermissionLabel}\" kunnen deze wachttijd omzeilen." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Even wachten" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Wachten op passkey…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Wachten tot de slowmodus in {forwardChannelDisplayName} is verlopen." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Wachten tot de slowmodus in een of meer geselecteerde kanalen is verlopen." @@ -39115,16 +38482,6 @@ msgstr "We konden dit thema niet lezen. Het is mogelijk beschadigd of ongeldig." msgid "We couldn't remove that account. Try again." msgstr "We konden dat account niet verwijderen. Probeer het opnieuw." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "We konden dit nummer niet automatisch verifiëren. Neem contact op met support en een medewerker zal je account beoordelen." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "We sturen geen verificatie-sms’jes naar dit land. Probeer een mobiel nummer uit een ander land, of neem contact op met het supportteam." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "We hebben een bestaand {premiumProductFullName}-abonnement gevonden voor msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "We hebben de prijs van {premiumProductName} in Brazilië verlaagd. Het is nu {monthlyPrice} per maand of {yearlyPrice} per jaar." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "We hebben nog één verificatiestap nodig voordat je verder kunt. Dit helpt accounts te beschermen en spam van {productName} te weren." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "We hebben twee verificatiestappen nodig voordat je verder kunt gaan. We tonen één stap tegelijk." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "We raden je aan deze codes nu op te slaan, zodat je niet buitengesloten raakt van je account." @@ -39167,11 +38514,6 @@ msgstr "We hebben een code gestuurd naar {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "We vullen {prefillEmail} alvast in zodra het inlogscherm in je browser opent." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "We sturen een sms-code wanneer dat mogelijk is." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "We zouden je graag meer dan een leven lang {PREMIUM_PRODUCT_NAME} geven, maar dat verstoort het ruimtetijdcontinuüm. Stuur het cadeau naar een vriend?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "We verwerken dit zo snel mogelijk. Je ontvangt een e-mail wanneer je archief klaar is." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "We herstellen je vorige e-mailadres, melden oude sessies af, verwijderen telefoonnummers, schakelen MFA uit en beveiligen je account met een nieuw wachtwoord." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "We herstellen je vorige e-mailadres, melden oude sessies af, schakelen MFA uit en beveiligen je account met een nieuw wachtwoord." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "We sturen een verificatiecode naar je e-mailadres voordat je je wachtwoo msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "We sturen een verificatiecode naar je e-mail voordat je je back-upcodes kunt bekijken." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "We sturen een sms-code zodra deze beschikbaar is. Je nummer wordt niet aan je account gekoppeld. We bewaren alleen een versleuteld merkteken, zonder gebruikers-ID, voor een beperkte tijd." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "We verifiëren je huidige en daarna je nieuwe e-mailadres met eenmalige codes." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook aangemaakt" @@ -39331,7 +38669,7 @@ msgstr "Webhook bijgewerkt" msgid "Webhook URL" msgstr "Webhook-URL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooks" @@ -39486,8 +38824,8 @@ msgstr "Wat je deelt, wordt niet bijgewerkt" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Wat is er aan de hand?" @@ -39967,21 +39305,11 @@ msgstr "Je kunt de machtiging <0>{readMessageHistoryPermissionLabel} verwijd msgid "You can sign back in at any time." msgstr "Je kunt op elk moment weer inloggen." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Je kunt de beheerders van deze instantie altijd om een beoordeling door een mens vragen." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Je kunt nog steeds een account aanmaken of inloggen. Als uitnodigingen later opnieuw worden ingeschakeld, kun je dezelfde link gebruiken om deel te nemen." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Je kunt op elk moment naar {supportEmail} mailen voor een beoordeling door een medewerker." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Je kunt links, emoji en Markdown gebruiken." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Je kunt daar geen expressies toevoegen" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Je kunt geen nieuwe reacties toevoegen als je een time-out hebt." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Je kunt jezelf geen vriendschapsverzoek sturen" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Je kunt je bijnaam hier niet wijzigen" @@ -40094,7 +39422,7 @@ msgstr "Je kunt jezelf geen vriendschapsverzoek sturen." msgid "You can't send messages in this channel." msgstr "Je kunt geen berichten verzenden in dit kanaal." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Je kunt geen berichten verzenden in deze community." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Je hebt geen toestemming om deze actie op dit lid uit te voeren." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Je hebt geen toestemming om deel te nemen aan dit spraakkanaal" @@ -40243,7 +39571,7 @@ msgstr "Je hebt geen toestemming om deze emoji te hernoemen. De naam is teruggez msgid "You have been banned from this community." msgstr "Je bent verbannen uit deze community." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Je hebt {username} geblokkeerd. Deblokkeer diegene om berichten te versturen." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Je hebt niet-opgeslagen wijzigingen." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Je hebt niet-opgeslagen wijzigingen. Sla ze op of maak ze ongedaan voordat je weggaat." @@ -40270,7 +39598,7 @@ msgstr "Je hebt niet-opgeslagen wijzigingen. Sla ze op of maak ze ongedaan voord msgid "You haven't authorized any applications to access your account." msgstr "Je hebt nog geen apps gemachtigd om toegang te krijgen tot je account." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Je bent nog niet lang genoeg lid van deze community om berichten te kunnen versturen." @@ -40326,11 +39654,6 @@ msgstr "Je moet akkoord gaan met de gebruiksvoorwaarden om een account aan te ma msgid "You must verify your email before sending a report." msgstr "Je moet je e-mailadres verifiëren voordat je een melding kunt versturen." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Je hebt toegang nodig tot je huidige e-mailadres om het hier te wijzigen. Gebruik telefoonverificatie indien beschikbaar of neem contact op met de ondersteuning." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Je hebt de machtiging \"{manageRolesPermissionLabel}\" nodig om deze mac msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Je hebt de machtiging \"{manageRolesPermissionLabel}\" nodig om deze machtigingen te bewerken." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Je hebt de \"{manageWebhooksPermissionLabel}\"-machtiging nodig om webhooks voor dit kanaal te bekijken en bewerken." @@ -40384,18 +39707,14 @@ msgstr "Je moet de registratie van je account voltooien voordat je een community msgid "You need to claim your account before you can start a direct message." msgstr "Je moet de registratie van je account voltooien voordat je een DM kunt starten." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Je moet de registratie van je account voltooien om privéberichten te kunnen versturen." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Je moet de registratie van je account voltooien om berichten in deze community te kunnen versturen." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Je moet een telefoonnummer verifiëren om berichten te kunnen versturen in deze community." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Je moet je e-mailadres verifiëren voordat je een DM kunt starten." msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Je moet je e-mailadres verifiëren voordat je {premiumProductFullName} kunt kopen." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Je moet je e-mailadres verifiëren om berichten te kunnen versturen in deze community." @@ -40424,11 +39743,6 @@ msgstr "Je moet je e-mailadres verifiëren om berichten te kunnen versturen in d msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Jij of iemand die je toevoegt heeft al het maximale aantal groeps-DM's openstaan. Verlaat er een en probeer het opnieuw." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Je blijft in {ownedNames}. Eigenaren kunnen hun eigen community niet verlaten." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Moderators hebben je geluid uitgeschakeld" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Je wordt doorgestuurd naar {redirectHostname} na autorisatie." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Je verlaat {count, plural, one {# community} other {# communities}} waarvoor deze controle geldt, en je account werkt weer normaal." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Je verlaat {guildNames}. Niets wat je hebt geplaatst wordt verwijderd en je kunt later opnieuw lid worden." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Je moet de e-mailstap nog steeds afronden." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Je gaat te snel" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Je gaat te snel. Wacht even en probeer het opnieuw." @@ -40636,7 +39935,7 @@ msgstr "Je verstuurt te snel berichten" msgid "You're streaming!" msgstr "Je streamt!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Je hebt een time-out. Berichten, reacties en spraak zijn gepauzeerd totdat de time-out verloopt." @@ -40764,25 +40063,25 @@ msgstr "Je verlengingsbetaling via {storeName} is mislukt, maar je <0/> blijven msgid "Your account" msgstr "Je account" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Je account is direct weer normaal en je hebt nu geen telefoonnummer nodig. Dit is geen permanente uitzondering en we kunnen deze controle later opnieuw vragen." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Je account is gekoppeld. Je kunt dit tabblad nu sluiten en teruggaan naar de app." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Je account is weer normaal." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Je account is beperkt" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Je account is beperkt. Controleer je e-mail voor instructies om dit op te heffen." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "De registratie van je account is nog niet voltooid. Zonder e-mailadres en wachtwoord kun je niet inloggen vanaf andere apparaten en kun je de toegang tot je account verliezen. Voltooi nu de registratie om je account te beveiligen." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Je account is te nieuw om berichten te versturen in deze community." @@ -40800,11 +40099,6 @@ msgstr "Je account vereist meervoudige authenticatie, maar er zijn geen onderste msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Je account wordt niet langer beschermd door tweefactorauthenticatie wanneer je met je wachtwoord inlogt. Je verliest ook verhoogde machtigingen in communities die tweefactorauthenticatie vereisen." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Je account werkt direct weer normaal en er wordt niets verwijderd. We kunnen later opnieuw om deze controle vragen." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Je kaart wordt gecontroleerd voor lokale prijzen. Dit duurt meestal even msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Je kaart is geschikt. Je wordt nu doorgestuurd naar de betaalpagina." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Je provider geeft aan dat dit nummer niet in gebruik is. Controleer het en probeer het opnieuw, of neem contact op met support als het wel klopt." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Je wijzigingen bereiken elke community die dit kanaal volgt, wat even kan duren. Elk gepubliceerd bericht staat 3 snelle bewerkingen toe, daarna 1 per 20 minuten." @@ -40869,21 +40158,6 @@ msgstr "Je apparaat vraagt je om een bijgewerkte passkey voor {name} op te slaan msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Je apparaat vraagt je om een bijgewerkte passkey voor {name} op te slaan. Gebruik dezelfde telefoon of beveiligingssleutel die je net hebt gebruikt." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Je e-mailadres is bijgewerkt." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Je e-mailadres kan geen berichten ontvangen. Voeg een werkend e-mailadres toe, zodat we contact met je kunnen opnemen over je account." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Je e-mailadres kon geen berichten ontvangen. Werk het bij om {productName} te blijven gebruiken." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Je e-mailadres is geverifieerd. Je kunt nu inloggen op je account." @@ -41000,21 +40274,11 @@ msgstr "Je bericht is niet bijgewerkt" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "De termijn voor een terugbetaling van je meest recente aankoop is verstreken. Neem bij factureringsproblemen contact op met het supportteam." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "je nieuwe e-mailadres" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Je nieuwe bijnaam, of laat leeg om deze te resetten." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Uw nummer is niet gekoppeld aan uw account. We bewaren slechts een versleuteld merkteken, zonder gebruikers-ID, voor een beperkte tijd." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Je betaling is geannuleerd. Je kunt dit tabblad nu sluiten en teruggaan naar de app." @@ -41054,11 +40318,6 @@ msgstr "Je gekochte cadeaus" msgid "your region" msgstr "je regio" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Je registratie heeft een extra antispamcontrole nodig voordat je verder kunt gaan." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/no/messages.po b/fluxer_app/src/features/i18n/locales/no/messages.po index 05ed488c0..1050517d8 100644 --- a/fluxer_app/src/features/i18n/locales/no/messages.po +++ b/fluxer_app/src/features/i18n/locales/no/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reaksjon} other {# reaksjoner}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# bruker som har reagert} other {# brukere som har reagert}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# sekund} other {# sekunder}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} kl. {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Invitasjonslenken din utløper om # sekund.} other {Invitasjonslenken din utløper om # sekunder.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} valgt" @@ -2252,7 +2252,7 @@ msgstr "1 minutt" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 timer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 måneder (1 år)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Reservekoder for 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2FA-krav" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 medlemmer (skriver)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 måneder" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 timer" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 måneder" @@ -2575,11 +2575,6 @@ msgstr "ett minutt" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "En ny versjon av skrivebordsappen er tilgjengelig. Last ned installasjonsprogrammet og kjør det for å oppdatere {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "En ny bekreftelseskode er sendt." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Kontodata" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Kontoen eksisterer for å spamme, svindle eller misbruke plattformen." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Konto begrenset" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Kontostatus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Kontoen er for ny" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Kontoverifisering kreves" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Legg til en bot i et fellesskap med forespurte tillatelser" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Legg til en kommentar (valgfritt)" @@ -3054,8 +3052,10 @@ msgstr "Legg til et tema i denne kanalen" msgid "Add a word…" msgstr "Legg til et ord …" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Legg til en fungerende e-postadresse" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Legg til en konto for å fortsette." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Legg til en e-postadresse og et passord på kontoen din først." @@ -3424,11 +3424,6 @@ msgstr "Lagt til: {createdDate} • sist brukt: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Ytterligere kommentarer (valgfritt)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Ytterligere bekreftelse kreves" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Alle språk" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Allerede satt til å avsluttes" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Rapporter også denne meldingen til sikkerhetsteamet hos {productName}" @@ -4713,11 +4708,6 @@ msgstr "Spør før du starter samtaler" msgid "Ask for a passkey after your password when you sign in" msgstr "Be om en passnøkkel etter passordet ditt når du logger på" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Be administratorene av denne instansen om å gå gjennom kontoen din. Denne instansen drives uavhengig, og bare administratorene kan endre kontoen din." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Fjerner automatisk sporingsparametere (som utm_source, fbclid, gclid) fr msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Fjern automatisk sporingsparametere fra URL-er i meldinger du sender" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Skann meldinger automatisk for eksplisitt innhold i kanaler som ikke er merket for vokseninnhold." @@ -5359,8 +5349,6 @@ msgstr "Borte akkurat nå" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Tilbake" @@ -6506,11 +6494,6 @@ msgstr "Kameraer og virtuelle opptaksenheter velges her i {productName}, ikke i msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Kameraer er av når det er flere enn {voiceChannelCameraUserLimit} deltakere" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Får du ikke tilgang til den e-postadressen?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Kan ikke laste opp filer her" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Kan ikke laste opp filer her" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Endre e-postadresse" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Endre emoji" @@ -7201,7 +7184,7 @@ msgstr "Endret brukergrensen fra {oldCount} til {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Endret egendefinert URL fra {oldCode} til {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Endret verifiseringsnivået fra {oldLevel} til {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kanal eller kategori" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Egendefinerte kanaltillatelser" @@ -7509,8 +7492,6 @@ msgstr "Sjekk tilkoblingen din og prøv igjen." msgid "Check your connection, then try again." msgstr "Kontroller tilkoblingen din, og prøv igjen." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Velg en skjerm i systemvelgeren din" msgid "Choose a GIF" msgstr "Velg en GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Velg en metode" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Velg et nytt passord." @@ -7680,8 +7656,8 @@ msgstr "Velg en handling." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Velg en emoji" @@ -7749,11 +7725,6 @@ msgstr "Velg hvordan instansen din fungerer" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Velg én av metodene nedenfor for å bekrefte domeneeierskap. Du trenger bare å fullføre én." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Velg én bekreftelsesmetode. Begge metodene kan brukes til å fullføre denne kontrollen." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Velg hva {clientLabel} kan gjøre i fellesskapet ditt. Fjern avmerkingen msgid "Choose what friends see in their active now panel" msgstr "Velg hva venner ser i panelet «Aktiv nå»" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Velg hva medlemmer må ha før de kan legge ut innlegg eller sende direktemeldinger til fellesskapsmedlemmer." @@ -8030,8 +8001,8 @@ msgstr "Renser mikrofonlyden for tydelig tale." msgid "Clear" msgstr "Tøm" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Fjern etter" @@ -8053,7 +8024,7 @@ msgstr "Fjern alle vedleggssimuleringer" msgid "Clear all token overrides" msgstr "Fjern alle overstyringer av temavariabler" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Fjern vedleggssimuleringer" @@ -8066,14 +8037,14 @@ msgstr "Fjern kommando" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Fjern egendefinert status" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Fjerne alle reaksjoner fra denne meldingen?" @@ -8124,7 +8095,7 @@ msgstr "Tøm søkefelt" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Kull-tema" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Kommandoer" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Kommentarer er deaktivert fordi én eller flere valgte kanaler har sakte modus aktivert. Kommentaren ville blitt blokkert av sakte modus rett etter videresendingen." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Kommentarer er deaktivert fordi sakte modus er på i {forwardChannelDisplayName}. Kommentaren ville blitt blokkert av sakte modus rett etter videresendingen." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Kommentarer er utilgjengelige når sakte modus er på." @@ -8670,11 +8639,11 @@ msgstr "Fellesskap" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Fellesskap og kanaler der du ikke kan administrere webhooks, er skjult." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Fellesskap som er oppført under Oppdag, må skanne meldinger fra alle medlemmer. Denne innstillingen kan ikke endres mens Oppdag er aktivert." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Fellesskap som er oppført under Oppdag, krever minst bekreftet e-postadresse. «Ingen» kan ikke velges mens Oppdag er aktivert." @@ -8827,7 +8796,7 @@ msgstr "Fellesskapsnavn" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Kallenavn i fellesskapet" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Fellesskapsprofil" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Fellesskapsprofilen er oppdatert" @@ -8907,7 +8876,7 @@ msgstr "Nivå for merker for uleste meldinger i fellesskapet" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Fellesskap oppdatert" @@ -8952,11 +8921,6 @@ msgstr "Sammenligning" msgid "Complete mature content check" msgstr "Fullfør kontroll for vokseninnhold" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Fullfør en av bekreftelsesmetodene nedenfor for å fortsette å bruke {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Fullfør betaling" msgid "Complete the mature content check to unlock mature media." msgstr "Fullfør kontrollen for vokseninnhold for å låse opp voksent medieinnhold." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Fullfør de obligatoriske trinnene for e-post- og telefonverifisering nedenfor for å fortsette å bruke {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Fullfør den påkrevde bekreftelsen for å fortsette å bruke {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Konfigurer profilmerket ditt" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Tilkoblinger omorganisert" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Samtykke kreves" @@ -9349,16 +9304,6 @@ msgstr "Lag en autoriserings-URL med omfang og tillatelser." msgid "Contact" msgstr "Kontakt" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Kontakt kundestøtte" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Kontakt administratorene av denne instansen for hjelp." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Innholdsskaper" msgid "Content filter" msgstr "Innholdsfilter" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Innholdsfiltrering" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Innholdshint" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Sikkerhetskontroller for innhold" @@ -9416,12 +9361,10 @@ msgstr "Du kan åpne kontekstmenyer med venstreklikk (på knapper) eller høyrek #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Styr hvordan indikatorer for uleste meldinger vises for dempede kanaler msgid "Control which chat updates are announced by assistive technology." msgstr "Kontroller hvilke chat-oppdateringer som leses opp av hjelpeteknologi." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Samtalen ble ikke funnet" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Kunne ikke legge til tagg" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Kunne ikke legge til denne vennen i gruppen. Prøv igjen." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Kunne ikke legge til i gruppe" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Kunne ikke opprette en temalenke" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Kunne ikke opprette invitasjonslenke" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Kunne ikke avslutte respittperioden din" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Kunne ikke generere en invitasjonslenke. Prøv igjen." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Kunne ikke behandle bildet" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Kunne ikke publisere denne meldingen" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Kunne ikke bli med i Visionary-fellesskapet igjen" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Kunne ikke fjerne ankomstlyden" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Kunne ikke lagre kanalinnstillinger" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Kunne ikke lagre ankomstlyden" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Kunne ikke trekke tilbake søknaden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Nedtellingstidtaker" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Land" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Opprett administratorkontoen" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Opprette gruppechatten med {addableCount, plural, one {# gjenværende mottaker} other {# gjenværende mottakere}} og hoppe over de andre?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Opprett webhook" @@ -10948,7 +10884,7 @@ msgstr "Egendefinert emoji {emojiName} fra et fellesskap" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Egendefinerte ankomstlyder er ikke aktivert på denne instansen." @@ -11108,7 +11044,7 @@ msgstr "Egendefinert talebehandling" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Egendefinert advarselstekst" @@ -11530,11 +11466,6 @@ msgstr "Standard søkemotor" msgid "Default shortcuts" msgstr "Standard snarveier" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Standardfane" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Slett denne meldingen" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Slette denne meldingen? Kan ikke angres." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Slett denne meldingen? Kan ikke angres. Denne meldingen fjernes også fra alle fellesskap som følger denne kanalen." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Utviklermodus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Utvikleralternativ" @@ -12299,7 +12230,7 @@ msgstr "Direkte inndata" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Visningsmodus" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Visningsnavn" @@ -12858,7 +12789,7 @@ msgstr "Vil du bli med i {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, jeg er fra fremtiden. Jeg kom hit i en tidsmaskin du fant opp. Nå trenger jeg hjelpen din for å komme tilbake til 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Rediger lokal tid på profilen" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Rediger publisert melding?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Rediger meldingene dine over eller under" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Rediger profilens utseende og se en forhåndsvisning som oppdateres fortløpende" @@ -13590,10 +13521,8 @@ msgstr "Du kan få refusjon frem til {windowEndsOn}. Dette vil også avslutte ab msgid "Email" msgstr "E-post" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "E-postadresse er påkrevd." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-postadresse endret" @@ -13616,49 +13547,17 @@ msgstr "E-postadresse endret" msgid "Email delivery" msgstr "E-postlevering" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-post eller telefon" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "E-postadressen eller telefonnummeret må bekreftes på nytt" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "E-postadressen må bekreftes på nytt" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-post utilgjengelig" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Du kan ikke endre e-postadressen akkurat nå. Prøv igjen senere eller kontakt kundestøtte." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "E-postadressen må oppdateres" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Send oss en e-post, så vil en person gjennomgå kontoen din. Fortell oss at du ikke kan bekrefte kontoen via SMS, så tar vi det derfra. Vi svarer på e-post, så du får ikke svar med én gang." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Varsellinje for e-postbekreftelse" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "E-postverifisering kreves" @@ -13675,6 +13574,10 @@ msgstr "Overstyring av e-postbekreftelse" msgid "Email verified successfully" msgstr "E-post bekreftet" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "E-poster til din nåværende adresse blir ikke levert. Skriv inn en ny e-postadresse, så sender vi en kode dit." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Innebygd innhold" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Innebygd innhold er skjult" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Innebygd innhold vises" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Aktiver opplesing av /tts-meldinger" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Aktiver 2FA på kontoen din for å endre denne innstillingen" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Skriv inn en gyldig mal-URL eller malkode fra {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Skriv inn en gyldig e-postadresse." @@ -14298,33 +14199,11 @@ msgstr "Skriv inn en gyldig e-postadresse." msgid "Enter a valid message link." msgstr "Skriv inn en gyldig meldingslenke." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Skriv inn et gyldig mobilnummer." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Skriv inn et gyldig telefonnummer" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Skriv inn et gyldig brukernavn ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Skriv inn en e-postadresse du har tilgang til. Vi sender en kode dit." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Skriv inn kode" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Gå til fullskjerm" msgid "Enter gift code…" msgstr "Skriv inn gavekode …" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Skriv inn ny e-postadresse" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Skriv inn en av reservekodene dine hvis du ikke kan bruke passnøkkelen msgid "Enter one of your backup codes." msgstr "Skriv inn en av reservekodene dine." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Skriv inn telefonnummer" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Skriv inn den {digitCount}-sifrede koden fra autentiseringsappen din ell msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Skriv inn den {digitCount}-sifrede koden fra autentiseringsappen din." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Skriv inn den {digitCount}-sifrede koden som ble sendt til {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Skriv inn koden med {MFA_CODE_DIGIT_COUNT} siffer som ble sendt til {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Skriv inn koden" @@ -14408,11 +14267,6 @@ msgstr "Skriv inn koden før du fortsetter." msgid "Enter the code from your authenticator app." msgstr "Skriv inn koden fra autentiseringsappen din." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Skriv inn koden som ble sendt til {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Skriv inn koden som ble sendt til din nåværende e-postadresse." @@ -14426,6 +14280,7 @@ msgstr "Skriv inn koden som ble sendt til e-postadressen din." msgid "Enter the code shown in the app to continue." msgstr "Skriv inn koden som vises i appen, for å fortsette." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Skriv inn koden vi sendte til den nye e-postadressen din." @@ -14434,11 +14289,6 @@ msgstr "Skriv inn koden vi sendte til den nye e-postadressen din." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Skriv inn koden vi sendte til e-postadressen din, for å bekrefte den. Passordet ditt blir angitt når koden er bekreftet." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Skriv inn e-postkoden" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Skriv inn invitasjonslenken for å bli med i et fellesskap." @@ -14452,11 +14302,6 @@ msgstr "Skriv inn den nye e-postadressen du vil bruke. Deretter sender vi en kod msgid "Enter the PIN for your security key to continue." msgstr "Skriv inn PIN-koden for sikkerhetsnøkkelen din for å fortsette." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Skriv inn SMS-koden" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Skriv inn denne koden i nettleseren din for å fullføre påloggingen." @@ -14492,11 +14337,6 @@ msgstr "Skriv inn navnet ditt" msgid "Enter your password." msgstr "Skriv inn passordet ditt." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Skriv inn telefonnummeret ditt" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Ankomstlyd" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Ankomstlydfiler må være {limit} eller mindre." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Biblioteket for ankomstlyder er fullt" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Ankomstlyd fjernet" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Ankomstlyd lagret" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Ankomstlyder" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Ankomstlyder er utilgjengelige" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Utløper:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Innstilling for filter for eksplisitt innhold" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Klarte ikke å kopiere til utklippstavlen" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Kunne ikke opprette webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Kunne ikke laste inn egendefinert URL. Prøv igjen." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Kunne ikke laste inn webhooker" @@ -15190,11 +15030,6 @@ msgstr "Kunne ikke fjerne egendefinert URL. Prøv igjen." msgid "Failed to resend code. Try again." msgstr "Kunne ikke sende kode på nytt. Prøv igjen." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Kunne ikke sende bekreftelseskoden på nytt. Prøv igjen senere." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Kunne ikke sende melding. Hold inne for alternativer." msgid "Failed to send report. Try again." msgstr "Rapporten ble ikke sendt. Prøv igjen." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Kunne ikke sende bekreftelsesmeldingen på e-post. Prøv igjen senere." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Kunne ikke starte" @@ -15551,15 +15381,15 @@ msgstr "Filtrer etter bruker" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtrer alle" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtrer medlemmer uten roller" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Følg denne kanalen" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Følg for å få disse kunngjøringene i en kanal du velger." @@ -15773,7 +15603,7 @@ msgstr "Fulgte kanal {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Følgende kanaler" @@ -15857,11 +15687,6 @@ msgstr "Kun for britiske øyne ..." msgid "For me" msgstr "For meg" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "For denne kontrollen sender du oss en tekstmelding i stedet for å motta en fra oss." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Av sikkerhetshensyn må du bekrefte at det er deg, for å fortsette." @@ -15905,7 +15730,7 @@ msgstr "Fremtving plassholder ved innlasting" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Simuler voksent medieinnhold" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Tving flytting til AFK-kanal" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Fremtving manglende tillatelse for «{permissionName}»" @@ -15948,7 +15773,7 @@ msgstr "Fremtving varsel om egendefinert URL" msgid "Force show voice connection" msgstr "Vis alltid taletilkobling" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Fremtving aktiv sakte modus" @@ -16020,7 +15845,7 @@ msgstr "Videresend medieinnhold" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Videresend melding" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Overlegg for geoblokkering" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Geobegrenset" @@ -16490,12 +16315,6 @@ msgstr "Få en animert avatar og banner, et abonnentmerke, fire sifre i taggen d msgid "Get monthly" msgstr "Få månedlig" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Få ny kode" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Gavekoder" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Gavevarighet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Gavebeholdning" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Gavebeholdningsflyt" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Gaven ble ikke funnet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Gave innløst" @@ -17030,7 +16849,7 @@ msgstr "Gruppechat" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hei, {displayName}! Fullfør registreringen av kontoen din for å unngå å miste tilgangen." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hei, {displayName}! Bekreft e-postadressen din." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hei {displayName}, vi kan ikke levere e-post til adressen din. Legg til en fungerende e-post for å verifisere kontoen din." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Skjule din egen skjermdeling?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Høy" @@ -17755,11 +17579,6 @@ msgstr "Jeg er et verktøytips" msgid "I changed my mind" msgstr "Jeg ombestemte meg" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Jeg trenger en annen måte" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Hvis denne rapporten gjelder en bestemt melding, rapporter heller den me msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Hvis denne rapporten gjelder bestemte meldinger, rapporter heller den mest relevante meldingen. Rapporter om meldinger gir sikkerhetsteamet vårt det tydeligste bildet av saken, og flere detaljer i kommentarfeltet kan hjelpe oss å behandle rapporten raskere. Fortsett bare med å rapportere brukeren som helhet hvis en rapport om en melding ikke dekker det større problemet." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Hvis du ikke kan bekrefte via SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Hvis du ikke kan bruke noen bekreftelsesmetode, kan du kontakte kundestøtte for å få hjelp." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Grensesnittstørrelse" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Ugyldig lydfil" @@ -18674,8 +18483,10 @@ msgstr "Ugyldig JSON. Lim inn hele svaret fra URL-en ovenfor." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Bli med i talesamtale" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Bli med i talekanal" @@ -19613,16 +19424,6 @@ msgstr "Finn ut mer om Visionary" msgid "Leave" msgstr "Forlat" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Forlate {count, plural, one {# fellesskap} other {# fellesskap}} og legge denne kontrollen til side?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Forlat og legg til side" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "La skjermlesere kunngjøre nye meldinger når de kommer inn i den åpne kanalen. Varsellyder påvirkes ikke." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "La fellesskapet moderere seg selv" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Bibliotek" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Biblioteket er fullt (maks. {max} lyder). Slett én før du legger til en ny." @@ -19812,7 +19613,7 @@ msgstr "Bibliotek: {count} av {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Livstid" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Laster inn …" #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Laster inn …" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Lav" @@ -20416,7 +20217,7 @@ msgstr "Administrer fellesskapsfunksjoner" msgid "Manage emoji & stickers" msgstr "Administrer emojier og klistremerker" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Administrer innkommende webhooker som kan legge ut meldinger i denne kanalen." @@ -20514,7 +20315,7 @@ msgstr "Merk alle uleste kanaler i innboksen som lest umiddelbart, uten å be om msgid "Mark as read" msgstr "Merk som lest" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Merk som innløst" @@ -20676,14 +20477,14 @@ msgstr "Fellesskap med voksent innhold" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Voksent innhold" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Voksent innhold og innholdsadvarsler" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maksimal levetid (dager)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Maksimal beskyttelse for familievennlige områder" @@ -20924,7 +20725,7 @@ msgstr "Stopp avspilling" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Utestengelse av medlem opphevet" msgid "Member updated" msgstr "Medlem oppdatert" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Medlemsverifisering" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Verifiseringsnivå for medlemmer" @@ -21048,7 +20849,7 @@ msgstr "Medlemmer fjernes når de er frakoblet, med mindre de har fått en rolle msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Medlemmer med «{pinMessagesPermissionLabel}» kan feste meldinger for alle." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Medlemmer med roller kan omgå disse kontrollene. For offentlige fellesskap anbefaler vi å aktivere verifisering." @@ -21153,7 +20954,7 @@ msgstr "Omtaler av deg vises her i {retentionDays} dager." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Kun omtaler" @@ -21292,7 +21093,7 @@ msgstr "Innstillinger for meldingsvisning er bare tilgjengelige på datamaskin." msgid "Message editing" msgstr "Redigering av meldinger" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Melding videresendt" @@ -21341,7 +21142,7 @@ msgstr "Knapper i meldingsfeltet" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Meldingen er for lang" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Forhåndsvisninger av meldinger i listen over direktemeldingssamtaler" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Melding publisert" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Meldinger publisert i #{sourceName} vil nå vises i #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Meldinger som publiseres i disse kunngjøringskanalene, kopieres hit." @@ -21504,7 +21305,7 @@ msgstr "Meldinger publisert i disse kunngjøringskanalene kopieres til dine kana msgid "Messages you can bookmark" msgstr "Meldinger du kan bokmerke" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Sending av meldinger er midlertidig satt på pause i dette fellesskapet." @@ -21733,30 +21534,30 @@ msgstr "Simuler utløp om 1 dag" msgid "Mock expires in 7 days" msgstr "Simuler utløp om 7 dager" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Simuler overlegg for geografisk blokkering" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Simulert gavebeholdning" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simuler innkommende anrop" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Simuler årsak til tilgangskontroll for kanaler med voksent innhold" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Simuler årsak til tilgangskontroll for voksent medieinnhold" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Simuler plassering i Storbritannia" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Fiktive brukeravatarer i ulike størrelser og alle statuskombinasjoner." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Simulert variant" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Simulerte produktflyter" @@ -22698,14 +22494,16 @@ msgstr "Nytt fellesskap dempet" msgid "New direct message" msgstr "Ny direktemelding" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Ny e-post" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Skjema for ny e-postadresse" @@ -22816,9 +22614,7 @@ msgstr "Nyeste først" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Neste" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Nei" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Mangler tillatelsen «{attachFilesPermission}»" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Mangler tillatelsen «{sendMessagesPermission}»" @@ -23005,7 +22801,7 @@ msgstr "Ingen endringer å lagre" msgid "No channels available" msgstr "Ingen kanaler tilgjengelige" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Ingen kanaler funnet" @@ -23233,11 +23029,6 @@ msgstr "Ingen tillatelser funnet" msgid "No personal words yet." msgstr "Ingen personlige ord ennå." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Ikke noe telefonnummer" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Ingen resultater" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Ingen resultater funnet" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Ingen brukere funnet" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Ingen verifisering er nødvendig." @@ -23452,7 +23243,7 @@ msgstr "Ingen verifisering er nødvendig." msgid "No verification methods available" msgstr "Ingen bekreftelsesmetoder tilgjengelig" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Ingen webhooker" @@ -23504,7 +23295,7 @@ msgstr "Ingen konvertering" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Ingen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Ingen (normal oppførsel)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norsk" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Ikke vært medlem lenge nok" @@ -23798,9 +23589,9 @@ msgstr "Objekter" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Av" @@ -23848,7 +23639,7 @@ msgstr "Eldste først" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "På" @@ -23884,11 +23675,6 @@ msgstr "Ett eller flere vedlegg kunne ikke leses eller lastes opp. Filen kan ha msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Én eller flere filer du prøver å laste opp, overskrider den maksimale størrelsesgrensen på {maxSizeFormatted} per fil." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "En rask sjekk" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Kun høyttalere" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Bare fellesskapets eier kan endre denne innstillingen" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Åpne emoji i nettleser" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Åpne emojivelger" @@ -24382,12 +24168,8 @@ msgstr "Åpne meny med ikon" msgid "Open message history threshold" msgstr "Åpne innstillinger for grensen for meldingshistorikk" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Åpne overlegg" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Åpne popup" @@ -24485,11 +24267,6 @@ msgstr "Åpne den nye appen. Du er allerede logget på." msgid "Open the shortcuts list for quick actions." msgstr "Åpne snarveioversikten for raske handlinger." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Åpne bekreftelses-e-posten og bruk lenken i den. Dette vinduet oppdateres etter at lenken er åpnet." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Åpne innstillinger for tale og video" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Åpne nettleseren din, logg på, og skriv inn koden nedenfor for å koble til kontoen din." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Åpne meldingene dine" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Åpne din gamle {PRODUCT_NAME}-app og velg «Koble til en ny enhet», og skriv deretter inn koden nedenfor." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Åpne telefonens meldingsapp og opprett en ny tekstmelding." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Åpne meldingsappen på telefonen din og start en ny tekstmelding." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Annen reaksjon …" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Nummerkontrollen vår er nede akkurat nå. Dette er vår feil, ikke nummeret ditt. Vent noen minutter og prøv samme nummer igjen." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, svindel, skadelige lenker eller falske påstander som sannsynligvis vil forårsake skade i den virkelige verden." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefon" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Telefonnummer" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Telefonnummer er påkrevd" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Telefonnummer bekreftet" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Telefonbekreftelse kreves på nytt" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Trinn for telefonbekreftelse" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Telefonverifisering er ikke tilgjengelig for denne kontoen. Bruk en annen metode eller kontakt kundestøtte." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Telefonbekreftelse kreves" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Velg firesifret tall etter brukernavnet ditt" msgid "Pick the appearance this administrator account should start with." msgstr "Velg utseendet denne administratorkontoen skal starte med." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Velg metoden du kan fullføre nå." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Bilde i bilde" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Fest" @@ -25471,7 +25176,7 @@ msgstr "Fest gruppechat" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Fest eller løsne en hvilken som helst melding." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Fest denne meldingen til kanalen så alle kan se den." @@ -26227,18 +25932,18 @@ msgstr "Profilfarge" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Profiltilpasning" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Profiltilpasning for {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Skjema for profiltilpasning" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Profiltype" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profilen er oppdatert" @@ -26340,7 +26045,7 @@ msgstr "Spør om nye lydenheter" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Raidkoordinering" msgid "Rate" msgstr "Hastighet" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Forespørselsgrensen er nådd" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Rå JSON for innebygd innhold" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Fjerne {userName} fra vennene dine?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Fjern alle" @@ -27290,7 +26990,7 @@ msgstr "Fjerne alle {emojiNameWithColons}-reaksjoner fra denne meldingen?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Fjern alle reaksjoner" @@ -27899,20 +27599,10 @@ msgstr "Brukertagg til rapportert bruker (valgfritt)" msgid "Reposts: <0>{countLabel}" msgstr "Videredelinger: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Be om en ny kode først." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Be om en ny tilbakestillingslenke" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Be om en bekreftelseskode først." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Forespørsler" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Krev 2FA for modereringshandlinger" @@ -27958,7 +27648,7 @@ msgstr "Krev autorisasjonskodeflyten i OAuth2" msgid "Require passkey" msgstr "Krev passnøkkel" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Krev tofaktorautentisering for moderatorer før de kan utestenge eller fjerne medlemmer, gi timeout eller slette meldinger." @@ -27972,46 +27662,6 @@ msgstr "Påkrevd" msgid "Required 2FA for moderation actions" msgstr "Krever 2FA for modereringshandlinger" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Standardfane for påkrevd handling" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Flyt for påkrevde handlinger" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Trinn for telefonbekreftelse i påkrevd handling" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Lastetilstand ved ny sending i påkrevd handling" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Resultat av ny sending i påkrevd handling" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Tekst om ny bekreftelse i påkrevd handling" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Variant av påkrevd handling" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Overlegg for påkrevde handlinger" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Krever en omdirigerings-URI og en autorisasjonskode når denne boten inviteres." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Krever en bekreftet e-postadresse og en konto som er minst 5 minutter gammel." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Krever en bekreftet e-postadresse." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Krever et bekreftet telefonnummer." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Krever alt under «Middels», i tillegg til minst 10 minutters medlemskap i fellesskapet." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Send på nytt ({resendSecondsRemaining} s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Send på nytt ({secondsRemaining} s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Lastetilstand for «Send på nytt»-knappen" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Send kode på nytt" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Send e-post på nytt" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Resultat av ny sending" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Sendt på nytt" @@ -28518,21 +28152,6 @@ msgstr "Vis" msgid "Reveal spoiler" msgstr "Vis spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Bekreft e-posten din på nytt eller bekreft telefonnummeret ditt for å fortsette å bruke {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Bekreft e-postadressen din på nytt for å fortsette å bruke {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Bekreft telefonnummeret ditt på nytt for å fortsette å bruke {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Metning" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Forhåndsvisning ved spoling" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Søk i kanaler" msgid "Search communities" msgstr "Søk i fellesskap" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Søk etter land …" - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Søk etter land …" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Velg bostedsland." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Velg …" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Send" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Send ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Send en ny rapport" msgid "Send button" msgstr "Send-knapp" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Send kode" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Send meldinger" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Sending av meldinger er deaktivert" @@ -30151,32 +29759,11 @@ msgstr "Send det lagrede medieelementet {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Send tekst-til-tale-meldinger med /tts. Medlemmer som har slått på tekst-til-tale, hører dem bli lest opp." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Send koden <0>{0} til <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Send koden til telefonnummeret nedenfor." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Send denne koden" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Sende denne festede meldingen tilbake i tid?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Send til" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Send talemelding" msgid "Send:" msgstr "Send:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Det er for dyrt for {PRODUCT_NAME} å sende en SMS til dette telefonnummeret, så vi trenger at du sender oss en SMS i stedet. Vi vet at dette ikke er ideelt. Du kan også be administratorene av denne instansen om å fjerne dette kravet fra kontoen din." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Det er for dyrt for {PRODUCT_NAME} å sende en SMS til dette telefonnummeret, så vi trenger at du sender oss en SMS i stedet. Vi vet at dette ikke er ideelt. Du kan også kontakte <0>{SUPPORT_EMAIL} for å få oss til å fjerne dette kravet fra kontoen din." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Seriell sending" msgid "Serve the token file" msgstr "Gjør token-filen tilgjengelig på nettstedet" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Tjenestefeil" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Angi egendefinert snarvei for «{label}»" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Angi egendefinert status" @@ -30486,18 +30060,6 @@ msgstr "Satte taleregionen til {region}" msgid "Set the voice region to automatic" msgstr "Satte taleregionen til automatisk" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Sett denne sjekken til side" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Legg denne sjekken til side?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Angi pronomenene dine" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Angi statusen din" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Snarveier er satt på pause mens du registrerer en tastkombinasjon." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Forkort meldingen og prøv igjen." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Vis et {productName}-ikon i systemstatusfeltet eller menylinjen" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Vis en innholdsadvarsel" @@ -31672,7 +31234,7 @@ msgstr "Sakte modus · vent {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Sakte modus er aktiv" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Sakte modus er satt til {durationLabel}. Vent før du sender en ny melding." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Gjenstående ventetid i sakte modus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulering av sakte modus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Gjenstående tid i sakte modus" @@ -31807,11 +31369,6 @@ msgstr "Jevn rulling" msgid "Smoother video" msgstr "Jevnere video" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "SMS-verifisering er utilgjengelig akkurat nå. Prøv igjen senere, eller kontakt kundestøtte." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Noe gikk galt under klargjøringen av dette klistremerket. Prøv en annen fil, eller prøv igjen om en liten stund." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Noe gikk galt da meldingen ble publisert. Prøv igjen om et øyeblikk." @@ -32009,11 +31566,9 @@ msgstr "Noe gikk galt. Last inn siden på nytt eller logg på igjen." msgid "Something went wrong. Try again later." msgstr "Noe gikk galt. Prøv igjen senere." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Noe gikk galt. Prøv igjen." @@ -32352,11 +31907,6 @@ msgstr "Tidsavbrudd ved SSO-pålogging. Prøv igjen." msgid "Staff controls" msgstr "Kontroller for ansatte" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Standard meldingspriser fra operatøren din kan gjelde." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Stjernemerk animasjon" msgid "Starred channels" msgstr "Stjernemerkede kanaler" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Abonnenttransport:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Abonnement" @@ -33051,14 +32599,12 @@ msgstr "Abonnementsscenarioer" msgid "Subtext" msgstr "Undertekst" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Vellykket" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Anbefalt for de fleste fellesskap" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "System og velkomst" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Systemkunngjøringer fra {productName}-ansatte. Du kan ikke svare her." @@ -33765,11 +33311,6 @@ msgstr "Tekstmarkering" msgid "Text size" msgstr "Tekststørrelse" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Send oss en tekstmelding fra telefonen din" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Thai" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Takk for at du hjelper oss med å holde {productName} trygt. Vi vil gjennomgå rapporten din så snart som mulig." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Koden fungerte ikke. Sjekk den og prøv igjen." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Koden er utløpt. Be om en ny kode." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Det ble ikke fullført. Noen fellesskap kan allerede være forlatt, og kontoen din er fortsatt låst. Trykk «Sett denne sjekken til side» igjen for å fullføre." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Det gikk ikke. Ingenting er endret. Prøv igjen." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Det ser ikke ut som en gyldig farge. Prøv heksadesimal, rgb(), hsl() el msgid "That doesn't look like a valid URL." msgstr "Det ser ikke ut som en gyldig URL." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "E-postadressen er allerede i bruk." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Overstyringen nektet {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Siden du leter etter finnes ikke eller har blitt flyttet." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Telefonsjekken er satt til side. Ett e-posttrinn gjenstår." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Det finnes ingen kanaler du kan opprette en invitasjon til." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Det er ingen roller å tilordne i dette fellesskapet for øyeblikket, men du kan opprette en ny rolle i <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Det er ingen webhooker konfigurert for denne kanalen. Opprett en webhook for å la eksterne apper legge ut meldinger." @@ -34273,7 +33784,7 @@ msgstr "Det oppsto en feil under lasting av invitasjonene. Prøv igjen." msgid "There was an error loading the stickers. Try again." msgstr "Det oppsto en feil under lasting av klistremerkene. Prøv igjen." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Det oppsto en feil under lasting av webhookene for denne kanalen. Prøv igjen." @@ -34417,7 +33928,7 @@ msgstr "Denne kanalen kan publisere 10 meldinger etter hverandre, deretter én t msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Denne kanalen kan publisere 10 meldinger etter hverandre, deretter én til hvert 6. minutt. Prøv igjen om noen minutter." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Denne kanalen støtter ikke webhooker." @@ -34550,12 +34061,12 @@ msgstr "Denne tilkoblingen er ikke bekreftet." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Dette inneholder sensitivt innhold." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Denne samtalen er ikke lenger tilgjengelig." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Denne gruppen har for mange personer" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Denne gruppen er full. Fjern noen før du legger til flere." @@ -34715,11 +34226,6 @@ msgstr "Dette er et egendefinert klistremerke fra et fellesskap." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Dette er en aldersbegrenset kanal. Oppdateringer kan bare sendes til aldersbegrensede kanaler." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Dette er en antispam-kontroll. Telefonnummeret ditt er ikke koblet til kontoen din." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Dette er deaktivert" msgid "This is how messages appear" msgstr "Slik vises meldinger" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Dette er ikke tilgjengelig for kontoen din akkurat nå. Be administratorene av denne instansen om å se på det." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Dette er ikke tilgjengelig for kontoen din akkurat nå. Send en e-post til {supportEmail} og en person vil gjennomgå det." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Dette er ikke kanalen du leter etter." @@ -34792,11 +34288,6 @@ msgstr "Dette er din siste passnøkkel, og passnøkler er din andre faktor. Hvis msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Dette er din siste passnøkkel. Når den er borte, kan du ikke lenger bruke en passnøkkel som din andre faktor." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Dette er ikke et mobilnummer, så det kan ikke motta SMS-en vår. Prøv et mobilnummer, eller kontakt kundestøtte hvis du mener dette er feil." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Denne meldingen er allerede slettet." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Denne meldingen er allerede publisert" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Denne meldingen finnes ikke lenger." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Dette kallenavnet vil bare være synlig i dette fellesskapet" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Dette nummeret må i stedet bekreftes ved at du sender en SMS til oss. Gå tilbake og start telefonbekreftelsen på nytt for å få koden og nummeret du skal sende til." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Dette nummeret krever at du sender oss en SMS for å bekrefte det, i stedet for å motta en SMS fra oss." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Denne deltakeren har slått av lyden" msgid "This participant was deafened by moderators" msgstr "Moderatorene har slått av lyden for denne deltakeren" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Dette telefonnummeret kan ikke brukes. Prøv et annet mobilnummer eller kontakt kundestøtte." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Dette telefonnummeret har allerede vært brukt. Prøv et annet nummer eller kontakt kundestøtte." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Denne brukeren har ingen roller i dette fellesskapet." msgid "This user is already banned from the community." msgstr "Denne brukeren er allerede utestengt fra fellesskapet." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Denne brukeren er ikke lenger tilgjengelig." @@ -35065,11 +34536,6 @@ msgstr "Denne brukeren ble lagt til med tvang i dette fellesskapet av en plattfo msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Denne bekreftelsesøkten utløp. Gå tilbake til {productName} og start betalingen på nytt." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Denne bekreftelsesøkten er utløpt. Start på nytt." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Dette logger deg ut, fjerner hurtigbufrede filer og lagrede økter og st msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Dette klarerer alle eksterne lenker og hopper over advarselen for alle domener. Dine eksisterende klarerte domener blir erstattet. Dette er mindre sikkert." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Dette vinduet oppdateres automatisk når vi mottar meldingen din." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Tittellinje" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Plattform for tittellinje" @@ -35470,18 +34931,11 @@ msgstr "Tone" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Tilpass tonene i HDR-bilder til standard dynamisk område for å redusere maksimal lysstyrke." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "For mange forsøk. Vent litt, og prøv igjen." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "For mange fellesskap" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "For mange forespørsler. Prøv igjen senere." @@ -36151,8 +35605,10 @@ msgstr "Kunne ikke klargjøre noen emojier for opplasting. Følgende feil oppsto #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Utilgjengelig" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Ukategorisert" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Uregistrert konto" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Unummerert" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Løsne" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Løsne melding" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Løsne denne meldingen?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Ulagrede endringer" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Lydfilen støttes ikke." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Til jeg slår den på igjen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Ubekreftet e-post" @@ -36958,12 +36414,7 @@ msgstr "Oppdater {productName} for å se denne meldingen." msgid "Update app" msgstr "Oppdater appen" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Oppdater e-post" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Oppdater statusen min" @@ -37306,18 +36757,13 @@ msgstr "Bruk {url} der bilde-URL-en skal settes inn." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Bruk et eget dialogvindu for å angi en grensedato for meldingshistorikken til medlemmer som ikke har tillatelsen «{readMessageHistoryPermissionLabel}»." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Bruk en annen e-postadresse og bekreft den med en kode." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Bruk faktisk" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Bruk faktisk premiumtype" @@ -37335,16 +36781,6 @@ msgstr "Bruk alternativ metode" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Bruk en autentiseringsapp for å generere koder for tofaktorautentisering" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Bruk en e-postadresse du har tilgang til. Vi sender en kode dit." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Bruk en annen e-postadresse enn den du har nå." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Bruk mørkt tema i hele appen" msgid "Use default" msgstr "Bruk standard" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Bruk en annen e-post" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Bruk e-post" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Bruke passnøkler for tofaktorautentisering?" msgid "Use passkeys to sign in without a password" msgstr "Bruk passnøkler for å logge på uten passord" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Bruk telefon" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Bruk tekst for ny verifisering" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Bruker flyttes til en annen kanal" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Brukeren ble ikke funnet" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Verifisering" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Verifiserings- og medlemskapsbarrierer" @@ -37970,15 +37387,8 @@ msgstr "Bekreftelseskode" msgid "Verification code sent" msgstr "Bekreftelseskode sendt" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Bekreftelseskoden er sendt. Sjekk innboksen for den nye e-postadressen din." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "E-post for bekreftelse er sendt. Sjekk innboksen din." @@ -38038,23 +37448,6 @@ msgstr "Skjema for identitetsbekreftelse" msgid "Verify it's you" msgstr "Bekreft at det er deg" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Bekreft telefonnummer" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Bekreft telefonnummer" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Skjema for bekreftelse av telefonnummer" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Bekreft e-postadressen din før du legger til en autentiseringsapp." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Bekreft e-postadressen din før du endrer kallenavn, avatar, banner, biografi, pronomen eller aksentfarge i fellesskapet." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Bekreft e-postadressen din før du endrer brukernavn, visningsnavn, avatar, banner, biografi, pronomen, tidssone eller personverninnstillinger for {premiumProductName}-merket ditt." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Bekreft e-postadressen din før du redigerer denne fellesskapsprofilen. Du kan fortsatt forhåndsvise den her." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Bekreft e-postadressen din før du redigerer profilen din. Du kan fortsatt forhåndsvise den her." @@ -38113,11 +37506,6 @@ msgstr "Bekreft e-postadressen din før du sender venneforespørsler." msgid "Verify your email first" msgstr "Bekreft e-postadressen din først" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Bekreft e-postadressen eller telefonnummeret ditt for å fortsette å bruke {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Bekreft e-posten din for å kjøpe gaver." msgid "Verify your email to change your username" msgstr "Bekreft e-postadressen din for å endre brukernavnet ditt" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Bekreft e-postadressen din for å fortsette å bruke {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Bekreft e-postadressen din for å redigere denne fellesskapsprofilen" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Bekreft e-postadressen din for å redigere profilen din" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Versjon" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Veldig høy" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Øk volumet" msgid "Wait a moment before deleting more messages." msgstr "Vent litt før du sletter flere meldinger." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Vent litt. Dette vinduet lukkes automatisk når vi mottar meldingen din." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Ventetid mellom meldinger. Medlemmer med «{bypassSlowmodePermissionLabel}» kan omgå dette." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Vent her" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Venter på passnøkkel …" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Venter på at sakte modus i {forwardChannelDisplayName} skal utløpe." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Venter på at sakte modus skal utløpe i én eller flere valgte kanaler." @@ -39115,16 +38482,6 @@ msgstr "Vi kunne ikke lese dette temaet. Det kan være skadet eller ugyldig." msgid "We couldn't remove that account. Try again." msgstr "Vi kunne ikke fjerne den kontoen. Prøv igjen." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Vi kunne ikke verifisere dette nummeret automatisk. Kontakt kundestøtte, så vil en person gjennomgå kontoen din." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Vi sender ikke bekreftelses-SMS til dette landet. Prøv et mobilnummer fra et annet land, eller kontakt kundestøtte." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Vi fant et eksisterende {premiumProductFullName}-abonnement for denne ko msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Vi har senket prisen på {premiumProductName} i Brasil. Det koster nå {monthlyPrice} i måneden eller {yearlyPrice} i året." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Vi trenger ett bekreftelsestrinn før du fortsetter. Dette bidrar til å beskytte kontoer og holde spam unna {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Vi trenger to bekreftelsestrinn før du kan fortsette. Vi viser ett trinn om gangen." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Vi anbefaler å lagre disse kodene nå, slik at du ikke blir låst ute fra kontoen din." @@ -39167,11 +38514,6 @@ msgstr "Vi sendte en kode til {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Vi fyller ut {prefillEmail} automatisk når nettleserpåloggingen åpnes." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Vi sender en SMS-kode når det er mulig." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Vi skulle gjerne gitt deg mer enn et helt liv med {PREMIUM_PRODUCT_NAME}, men det ville brutt romtidskontinuumet. Vil du heller sende gaven til en venn?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Vi behandler dette så snart som mulig. Du får en e-post når arkivet ditt er klart." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Vi gjenoppretter den forrige e-postadressen din, logger ut gamle økter, fjerner telefonnumre, deaktiverer MFA og sikrer kontoen din med et nytt passord." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Vi gj" #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Vi sender en bekreftelseskode til e-posten din før du kan endre passord msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Vi sender en bekreftelseskode til e-posten din før du kan se reservekodene dine." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Vi sender en SMS-kode når den er tilgjengelig. Nummeret ditt er ikke knyttet til kontoen din. Vi beholder kun en kryptert markør, uten bruker-ID, i en begrenset periode." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Vi bekrefter den nåværende e-postadressen din, og deretter den nye e-postadressen din, med engangskoder." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook opprettet" @@ -39331,7 +38669,7 @@ msgstr "Webhook oppdatert" msgid "Webhook URL" msgstr "Webhook-URL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooker" @@ -39486,8 +38824,8 @@ msgstr "Det du deler oppdateres ikke" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Hva skjer?" @@ -39967,21 +39305,11 @@ msgstr "Du kan fjerne tillatelsen <0>{readMessageHistoryPermissionLabel} fra msgid "You can sign back in at any time." msgstr "Du kan logge på igjen når som helst." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Du kan når som helst be administratorene av denne instansen om en manuell gjennomgang." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Du kan fortsatt opprette en konto eller logge på. Hvis invitasjoner aktiveres igjen senere, kan du bruke den samme lenken for å bli med." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Du kan fortsatt sende en e-post til {supportEmail} for en manuell gjennomgang når som helst." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Du kan bruke lenker, emojier og Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Du kan ikke legge til uttrykk der" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Du kan ikke legge til nye reaksjoner mens du har timeout." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Du kan ikke bli venn med deg selv" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Du kan ikke endre kallenavnet ditt her" @@ -40094,7 +39422,7 @@ msgstr "Du kan ikke sende en venneforespørsel til deg selv." msgid "You can't send messages in this channel." msgstr "Du kan ikke sende meldinger i denne kanalen." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Du kan ikke sende meldinger i dette fellesskapet." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Du har ikke tillatelse til å gjøre dette med dette medlemmet." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Du har ikke tillatelse til å bli med i denne talekanalen" @@ -40243,7 +39571,7 @@ msgstr "Du har ikke tillatelse til å endre navn på denne emojien. Navnet ble t msgid "You have been banned from this community." msgstr "Du har blitt utestengt fra dette fellesskapet." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Du har blokkert {username}. Opphev blokkeringen for å sende meldinger." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Du har ulagrede endringer." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Du har ulagrede endringer. Lagre eller tilbakestill før du går herfra." @@ -40270,7 +39598,7 @@ msgstr "Du har ulagrede endringer. Lagre eller tilbakestill før du går herfra. msgid "You haven't authorized any applications to access your account." msgstr "Du har ikke gitt noen apper tilgang til kontoen din." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Du har ikke vært medlem av dette fellesskapet lenge nok til å sende meldinger." @@ -40326,11 +39654,6 @@ msgstr "Du må godta vilkårene for bruk for å opprette en konto" msgid "You must verify your email before sending a report." msgstr "Du må bekrefte e-postadressen din før du sender en rapport." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Du må ha tilgang til den nåværende e-postadressen din for å endre den herfra. Bruk bekreftelse via telefon hvis det er tilgjengelig, eller kontakt kundestøtte." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Du trenger tillatelsen «{manageRolesPermissionLabel}» for å redigere msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Du trenger tillatelsen «{manageRolesPermissionLabel}» for å redigere disse tillatelsene." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Du trenger tillatelsen «{manageWebhooksPermissionLabel}» for å se og redigere webhooker for denne kanalen." @@ -40384,18 +39707,14 @@ msgstr "Du må fullføre registreringen av kontoen din før du kan opprette et f msgid "You need to claim your account before you can start a direct message." msgstr "Du må fullføre registreringen av kontoen din før du kan starte en direktemelding." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Du må fullføre registreringen av kontoen din for å sende direktemeldinger." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Du må fullføre registreringen av kontoen din for å sende meldinger i dette fellesskapet." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Du må bekrefte et telefonnummer for å sende meldinger i dette fellesskapet." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Du må bekrefte e-postadressen din før du kan starte en direktemelding. msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Du må bekrefte e-postadressen din før du kan kjøpe {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Du må bekrefte e-postadressen din for å sende meldinger i dette fellesskapet." @@ -40424,11 +39743,6 @@ msgstr "Du må bekrefte e-postadressen din for å sende meldinger i dette felles msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Du eller noen du legger til, har allerede maksimalt antall åpne gruppechatter. Forlat én og prøv igjen." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Du blir værende i {ownedNames}. Eiere kan ikke forlate sitt eget fellesskap." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Moderatorene har slått av lyden for deg" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Du blir sendt til {redirectHostname} etter godkjenning." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Du vil forlate {count, plural, one {# fellesskap} other {# fellesskap}} som denne sjekken gjelder for, og kontoen din vil fungere normalt igjen." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Du vil forlate {guildNames}. Ingenting du har lagt ut, blir slettet, og du kan bli med igjen senere." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Du må fortsatt fullføre e-poststeget." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Du er for rask" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Du er for rask. Vent litt og prøv igjen." @@ -40636,7 +39935,7 @@ msgstr "Du sender meldinger for raskt" msgid "You're streaming!" msgstr "Du strømmer!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Du har timeout. Meldinger, reaksjoner og tale er satt på pause til timeouten er over." @@ -40764,25 +40063,25 @@ msgstr "Betalingen for fornyelsen via {storeName} mislyktes, men <0/> forblir ak msgid "Your account" msgstr "Din konto" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Kontoen din blir normal igjen med en gang, og du trenger ikke telefonnummer nå. Dette er ikke et permanent unntak, og vi kan be om denne bekreftelsen igjen senere." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Kontoen din er nå koblet til. Du kan lukke denne fanen og gå tilbake til appen." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Kontoen din fungerer som normalt igjen." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Kontoen din er begrenset" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Kontoen din er begrenset. Sjekk e-posten din for å se hvordan du kan fjerne begrensningen." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Du har ikke fullført registreringen av kontoen din ennå. Uten e-postadresse og passord kan du ikke logge på fra andre enheter, og du kan miste tilgangen til kontoen. Fullfør registreringen nå for å sikre kontoen din." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Kontoen din er for ny til å sende meldinger i dette fellesskapet." @@ -40800,11 +40099,6 @@ msgstr "Kontoen din krever multifaktorautentisering, men ingen støttede metoder msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Kontoen din vil ikke lenger være beskyttet av tofaktorautentisering når du logger på med passordet ditt. Du vil også miste forhøyede tillatelser i fellesskap som krever tofaktorautentisering." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Kontoen din fungerer som normalt igjen med en gang, og ingenting blir fjernet. Vi kan be om denne sjekken igjen senere." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Kortet ditt sjekkes for lokale priser. Dette tar vanligvis et øyeblikk. msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Kortet ditt oppfyller kravene. Du blir nå sendt videre til betalingssiden." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Mobiloperatøren din sier at dette nummeret ikke er i bruk. Sjekk det og prøv igjen, eller kontakt kundestøtte hvis det er riktig." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Endringene dine når alle lokalsamfunn som følger denne kanalen, noe som kan ta et minutt. Hver publiserte melding tillater 3 raske redigeringer, deretter 1 hver 20. minutt." @@ -40869,21 +40158,6 @@ msgstr "Enheten din vil be deg om å lagre en oppdatert passnøkkel for {name}. msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Enheten din vil be deg om å lagre en oppdatert passnøkkel for {name}. Bruk samme telefon eller sikkerhetsnøkkel som du nettopp brukte." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "E-postadressen din er oppdatert." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Vi fikk ikke levert e-post til adressen din. Legg til en e-postadresse som fungerer, slik at vi kan nå deg om kontoen din." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Vi fikk ikke levert e-post til adressen din. Oppdater den for å fortsette å bruke {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "E-postadressen din er bekreftet. Du kan nå logge på kontoen din." @@ -41000,21 +40274,11 @@ msgstr "Meldingen din ble ikke oppdatert" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Det siste kjøpet ditt er ikke lenger innenfor refusjonsperioden. Kontakt kundestøtte ved faktureringsproblemer." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "din nye e-postadresse" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Det nye kallenavnet ditt, eller la det stå tomt for å tilbakestille det." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Nummeret ditt er ikke knyttet til kontoen din. Vi lagrer kun en kryptert markør, uten bruker-ID, i en begrenset periode." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Betalingen din ble avbrutt. Du kan nå lukke denne fanen og gå tilbake til appen." @@ -41054,11 +40318,6 @@ msgstr "Dine kjøpte gaver" msgid "your region" msgstr "din region" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Registreringen din krever en ekstra antispam-sjekk før du kan fortsette." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/pl/messages.po b/fluxer_app/src/features/i18n/locales/pl/messages.po index 2cafb548b..c1dbaf16a 100644 --- a/fluxer_app/src/features/i18n/locales/pl/messages.po +++ b/fluxer_app/src/features/i18n/locales/pl/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reakcja} few {# reakcje} many {# reakcji} other { msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# osoba, która zareagowała} few {# osoby, które zareagowały} many {# osób, które zareagowały} other {# osoby, która zareagowała}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# sekunda} few {# sekundy} many {# sekund} other {# sekundy}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} o {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Twój link z zaproszeniem wygaśnie za # sekundę.} few {Twój link z zaproszeniem wygaśnie za # sekundy.} many {Twój link z zaproszeniem wygaśnie za # sekund.} other {Twój link z zaproszeniem wygaśnie za # sekundy.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Wybrano: {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 minuta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 godzin" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 miesięcy (1 rok)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Kody zapasowe 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Wymóg 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 członków (w trakcie pisania)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 miesiące" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 godzin" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 miesięcy" @@ -2575,11 +2575,6 @@ msgstr "minutę" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Dostępna jest nowa wersja aplikacji komputerowej. Pobierz instalator i uruchom go, aby zaktualizować {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Wysłaliśmy nowy kod weryfikacyjny." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Dane konta" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Konto służy do spamowania, oszukiwania lub nadużywania platformy." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Konto ograniczone" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Stan konta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Konto jest zbyt nowe" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Wymagana weryfikacja konta" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Dodaj bota do społeczności z żądanymi uprawnieniami" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Dodaj komentarz (opcjonalnie)" @@ -3054,8 +3052,10 @@ msgstr "Dodaj temat do tego kanału" msgid "Add a word…" msgstr "Dodaj słowo…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Dodaj działający adres e-mail" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Dodaj konto, aby kontynuować." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Najpierw dodaj adres e-mail i hasło do swojego konta." @@ -3424,11 +3424,6 @@ msgstr "Dodano: {createdDate} • ostatnio używano: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Dodatkowe uwagi (opcjonalnie)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Wymagana dodatkowa weryfikacja" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Wszystkie języki" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Anulowanie już zaplanowane" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Zgłoś tę wiadomość również zespołowi ds. bezpieczeństwa {productName}" @@ -4713,11 +4708,6 @@ msgstr "Pytaj przed rozpoczęciem połączeń" msgid "Ask for a passkey after your password when you sign in" msgstr "Pytaj o klucz dostępu po podaniu hasła podczas logowania" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Poproś administratorów tej instancji o sprawdzenie Twojego konta. Ta instancja jest zarządzana niezależnie i tylko jej administratorzy mogą zmienić Twoje konto." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Automatycznie usuwaj parametry śledzenia (takie jak utm_source, fbclid, msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Automatycznie usuwaj parametry śledzenia z adresów URL w wysyłanych wiadomościach" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Automatycznie sprawdzaj wiadomości pod kątem treści o jednoznacznie seksualnym charakterze w kanałach nieoznaczonych jako przeznaczone dla dorosłych." @@ -5359,8 +5349,6 @@ msgstr "Chwilowo mnie nie ma" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Wstecz" @@ -6506,11 +6494,6 @@ msgstr "Kamery i wirtualne urządzenia przechwytujące wybiera się tutaj w {pro msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Kamery są wyłączane, gdy liczba uczestników przekracza {voiceChannelCameraUserLimit}" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Nie masz dostępu do tego adresu e-mail?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Nie można tu przesyłać plików" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Nie można tu przesyłać plików" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Zmień adres e-mail" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Zmień emoji" @@ -7201,7 +7184,7 @@ msgstr "Zmieniono limit użytkowników z {oldCount} na {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Zmieniono niestandardowy adres URL z {oldCode} na {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Zmieniono poziom weryfikacji z {oldLevel} na {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kanał lub kategoria" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Indywidualne uprawnienia kanału" @@ -7509,8 +7492,6 @@ msgstr "Sprawdź połączenie i spróbuj ponownie." msgid "Check your connection, then try again." msgstr "Sprawdź swoje połączenie, a potem spróbuj ponownie." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Wybierz ekran w systemowym oknie wyboru" msgid "Choose a GIF" msgstr "Wybierz GIF-a" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Wybierz metodę" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Wybierz nowe hasło." @@ -7680,8 +7656,8 @@ msgstr "Wybierz akcję." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Wybierz emoji" @@ -7749,11 +7725,6 @@ msgstr "Wybierz sposób działania instancji" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Wybierz jedną z poniższych metod, aby potwierdzić własność domeny. Wystarczy skorzystać z jednej z nich." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Wybierz jedną metodę weryfikacji. Każda z nich pozwala spełnić ten wymóg." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Wybierz, co {clientLabel} może robić w Twojej społeczności. Odznacz msgid "Choose what friends see in their active now panel" msgstr "Wybierz, co znajomi widzą w panelu „Aktywni teraz”" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Wybierz, jakie wymagania muszą spełnić członkowie, zanim będą mogli publikować wiadomości lub wysyłać wiadomości prywatne do członków społeczności." @@ -8030,8 +8001,8 @@ msgstr "Oczyszcza dźwięk mikrofonu, aby mowa była wyraźna." msgid "Clear" msgstr "Wyczyść" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Wyczyść po" @@ -8053,7 +8024,7 @@ msgstr "Usuń wszystkie symulacje załączników" msgid "Clear all token overrides" msgstr "Usuń wszystkie niestandardowe wartości tokenów" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Usuń symulacje załączników" @@ -8066,14 +8037,14 @@ msgstr "Wyczyść polecenie" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Wyczyść status niestandardowy" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Usunąć wszystkie reakcje z tej wiadomości?" @@ -8124,7 +8095,7 @@ msgstr "Wyczyść pole wyszukiwania" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Węglowy motyw" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Polecenia" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Komentarze są wyłączone, ponieważ w co najmniej jednym wybranym kanale włączono tryb wolny. Komentarz zostałby przez niego zablokowany zaraz po przekazaniu wiadomości." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Komentarze są wyłączone, ponieważ w kanale „{forwardChannelDisplayName}” włączono tryb wolny. Komentarz zostałby przez niego zablokowany zaraz po przekazaniu wiadomości." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Komentarze są niedostępne, gdy włączony jest tryb wolny." @@ -8670,11 +8639,11 @@ msgstr "Społeczności" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Społeczności i kanały, w których nie możesz zarządzać webhookami, są ukryte." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Społeczności widoczne w sekcji Odkrywanie muszą skanować wiadomości wszystkich członków. Tego ustawienia nie można zmienić, gdy Odkrywanie jest włączone." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Społeczności widoczne w sekcji Odkrywanie wymagają co najmniej weryfikacji adresu e-mail. Nie można wybrać opcji „Brak”, gdy Odkrywanie jest włączone." @@ -8827,7 +8796,7 @@ msgstr "Nazwa społeczności" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Pseudonim w społeczności" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Profil społeczności" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Profil społeczności zaktualizowany" @@ -8907,7 +8876,7 @@ msgstr "Tryb znacznika nieprzeczytanych wiadomości społeczności" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Społeczność zaktualizowana" @@ -8952,11 +8921,6 @@ msgstr "Porównanie" msgid "Complete mature content check" msgstr "Ukończ weryfikację treści dla dorosłych" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Ukończ jedną z poniższych ścieżek weryfikacji, aby nadal korzystać z {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Dokończ płatność" msgid "Complete the mature content check to unlock mature media." msgstr "Ukończ weryfikację treści dla dorosłych, aby odblokować materiały dla dorosłych." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Aby nadal korzystać z aplikacji {productName}, wykonaj poniższe kroki weryfikacji e-maila i numeru telefonu." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Ukończ wymaganą weryfikację, aby nadal korzystać z {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Skonfiguruj swoją odznakę profilową" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Kolejność połączeń zmieniona" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Wymagana zgoda" @@ -9349,16 +9304,6 @@ msgstr "Utwórz adres URL autoryzacji z zakresami i uprawnieniami." msgid "Contact" msgstr "Kontakt" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Skontaktuj się z pomocą techniczną" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Skontaktuj się z administratorami tej instancji, aby uzyskać pomoc." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Twórca treści" msgid "Content filter" msgstr "Filtr treści" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Filtrowanie treści" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Typ treści dla kodera" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Zabezpieczenia dostępu do treści" @@ -9416,12 +9361,10 @@ msgstr "Menu kontekstowe można otworzyć lewym przyciskiem myszy (na przyciskac #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Kontroluj zachowanie wskaźnika nieprzeczytanych wiadomości dla wyciszo msgid "Control which chat updates are announced by assistive technology." msgstr "Kontroluj, które zmiany na czacie są ogłaszane przez technologie asystujące." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Nie znaleziono rozmowy" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Nie udało się dodać tagu" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Nie udało się dodać tego znajomego do grupy. Spróbuj ponownie." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Nie udało się dodać do grupy" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Nie udało się utworzyć linku do motywu" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Nie udało się utworzyć linku z zaproszeniem" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Nie udało się zakończyć okresu karencji" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Nie udało się wygenerować linku z zaproszeniem. Spróbuj ponownie." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Nie udało się przetworzyć obrazu" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Nie udało się opublikować tej wiadomości" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Nie udało się ponownie dołączyć do społeczności Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Nie udało się usunąć dźwięku wejścia" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Nie można zapisać ustawień kanału" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Nie udało się zapisać dźwięku wejścia" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Nie udało się wycofać zgłoszenia" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Minutnik" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Kraj" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Utwórz konto administratora" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Utworzyć czat grupowy z {addableCount, plural, one {# pozostałym odbiorcą} few {# pozostałymi odbiorcami} many {# pozostałymi odbiorcami} other {# pozostałego odbiorcy}} i pominąć użytkowników, których nie można dodać?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Utwórz webhooka" @@ -10948,7 +10884,7 @@ msgstr "Niestandardowe emoji {emojiName} ze społeczności" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Niestandardowe dźwięki wejścia nie są włączone w tej instancji." @@ -11108,7 +11044,7 @@ msgstr "Indywidualne przetwarzanie dźwięku" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Własny tekst ostrzeżenia" @@ -11530,11 +11466,6 @@ msgstr "Domyślna wyszukiwarka" msgid "Default shortcuts" msgstr "Domyślne skróty" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Domyślna karta" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Usuń tę wiadomość" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Usunąć tę wiadomość? Tej operacji nie można cofnąć." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Usunąć tę wiadomość? Nie można tego cofnąć. Ta wiadomość zostanie również usunięta ze wszystkich społeczności, które obserwują ten kanał." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Tryb programisty" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Opcja dla programistów" @@ -12299,7 +12230,7 @@ msgstr "Bezpośrednie wejście" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Tryb wyświetlania" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Nazwa wyświetlana" @@ -12858,7 +12789,7 @@ msgstr "Czy chcesz dołączyć do {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doktorze, jestem z przyszłości. Przybyłem tu wehikułem czasu, który pan wynalazł. Teraz potrzebuję pańskiej pomocy, żeby wrócić do roku 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Edytuj czas lokalny profilu" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Edytować opublikowaną wiadomość?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Edytuj swoje wiadomości powyżej lub poniżej" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Edytuj wygląd swojego profilu i zobacz podgląd na żywo" @@ -13590,10 +13521,8 @@ msgstr "Zwrot możliwy do {windowEndsOn}. Spowoduje to również natychmiastowe msgid "Email" msgstr "E-mail" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Adres e-mail jest wymagany." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Adres e-mail zmieniony" @@ -13616,49 +13547,17 @@ msgstr "Adres e-mail zmieniony" msgid "Email delivery" msgstr "Dostarczanie wiadomości e-mail" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-mail lub telefon" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Wymagana ponowna weryfikacja e-maila lub numeru telefonu" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Wymagana ponowna weryfikacja adresu e-mail" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-mail niedostępny" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Aktualizacja adresu e-mail jest obecnie niedostępna. Spróbuj ponownie później lub skontaktuj się z pomocą techniczną." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Wymagana aktualizacja adresu e-mail" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Napisz do nas e-mailem, a ktoś z naszego zespołu sprawdzi Twoje konto. Poinformuj nas, że nie możesz ukończyć weryfikacji przez SMS, a my zajmiemy się resztą. Odpowiemy e-mailem, więc nie nastąpi to od razu." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Pasek weryfikacji e-maila" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Wymagana weryfikacja e-maila" @@ -13675,6 +13574,10 @@ msgstr "Wymuszenie stanu weryfikacji adresu e-mail" msgid "Email verified successfully" msgstr "E-mail zweryfikowany pomyślnie" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "E-maile na Twój obecny adres nie są dostarczane. Wpisz nowy adres e-mail, a wyślemy tam kod." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Osadzone treści" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Osadzone treści ukryte" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Przywrócono widoczność osadzonych treści" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Włącz odtwarzanie mowy /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Włącz uwierzytelnianie dwuskładnikowe na swoim koncie, aby zmienić to ustawienie" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Wprowadź prawidłowy adres URL lub kod szablonu {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Wpisz prawidłowy adres e-mail." @@ -14298,33 +14199,11 @@ msgstr "Wpisz prawidłowy adres e-mail." msgid "Enter a valid message link." msgstr "Wprowadź prawidłowy link do wiadomości." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Wprowadź prawidłowy numer telefonu komórkowego." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Wprowadź prawidłowy numer telefonu" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Wprowadź prawidłową nazwę użytkownika ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Wpisz adres e-mail, do którego masz dostęp. Wyślemy na niego kod." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Wpisz kod" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Przejdź do trybu pełnoekranowego" msgid "Enter gift code…" msgstr "Wpisz kod podarunkowy…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Wprowadź nowy adres e-mail" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Wpisz jeden z kodów zapasowych, jeśli nie możesz użyć klucza dostę msgid "Enter one of your backup codes." msgstr "Wpisz jeden z kodów zapasowych." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Wpisz numer telefonu" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Wpisz {digitCount}-cyfrowy kod z aplikacji uwierzytelniającej lub jeden msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Wprowadź {digitCount}-cyfrowy kod z aplikacji uwierzytelniającej." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Wpisz {digitCount}-cyfrowy kod wysłany na numer {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Wpisz kod składający się z {MFA_CODE_DIGIT_COUNT} cyfr wysłany na numer {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Wpisz kod" @@ -14408,11 +14267,6 @@ msgstr "Wpisz kod, aby kontynuować." msgid "Enter the code from your authenticator app." msgstr "Wpisz kod z aplikacji uwierzytelniającej." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Wpisz kod wysłany na adres {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Wpisz kod wysłany na Twój obecny adres e-mail." @@ -14426,6 +14280,7 @@ msgstr "Wpisz kod wysłany na Twój adres e-mail." msgid "Enter the code shown in the app to continue." msgstr "Wpisz kod wyświetlony w aplikacji, aby kontynuować." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Wpisz kod, który wysłaliśmy na Twój nowy adres e-mail." @@ -14434,11 +14289,6 @@ msgstr "Wpisz kod, który wysłaliśmy na Twój nowy adres e-mail." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Wpisz kod, który wysłaliśmy na Twój adres e-mail, aby go zweryfikować. Twoje hasło zostanie ustawione po potwierdzeniu kodu." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Wpisz kod z e-maila" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Wprowadź link z zaproszeniem, aby dołączyć do społeczności." @@ -14452,11 +14302,6 @@ msgstr "Wpisz nowy adres e-mail, którego chcesz użyć. Wyślemy na niego kod." msgid "Enter the PIN for your security key to continue." msgstr "Wprowadź kod PIN swojego klucza bezpieczeństwa, aby kontynuować." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Wpisz kod SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Wpisz ten kod w przeglądarce, aby dokończyć logowanie." @@ -14492,11 +14337,6 @@ msgstr "Wpisz swoje imię" msgid "Enter your password." msgstr "Wprowadź hasło." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Wprowadź swój numer telefonu" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Dźwięk wejścia" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Pliki dźwiękowe wejścia muszą mieć rozmiar {limit} lub mniejszy." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Biblioteka dźwięków wejścia jest pełna" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Dźwięk wejścia usunięty" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Dźwięk wejścia zapisany" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Dźwięki wejścia" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Dźwięki wejścia niedostępne" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Wygasa:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Ustawienia filtra treści dla dorosłych" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Nie udało się skopiować do schowka" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Nie udało się utworzyć webhooka" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Nie udało się załadować niestandardowego adresu URL. Spróbuj ponownie." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Nie udało się załadować webhooków" @@ -15190,11 +15030,6 @@ msgstr "Nie udało się usunąć niestandardowego adresu URL. Spróbuj ponownie. msgid "Failed to resend code. Try again." msgstr "Nie udało się ponownie wysłać kodu. Spróbuj ponownie." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Nie udało się ponownie wysłać kodu weryfikacyjnego. Spróbuj ponownie później." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Nie udało się wysłać wiadomości. Przytrzymaj, aby wyświetlić opcj msgid "Failed to send report. Try again." msgstr "Nie udało się wysłać zgłoszenia. Spróbuj ponownie." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Nie udało się wysłać e-maila weryfikacyjnego. Spróbuj ponownie później." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Nie udało się uruchomić" @@ -15551,15 +15381,15 @@ msgstr "Filtruj według użytkownika" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtruj wszystkich" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtruj członków bez ról" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Obserwuj ten kanał" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Obserwuj, aby otrzymywać te ogłoszenia na wybranym przez siebie kanale." @@ -15773,7 +15603,7 @@ msgstr "Śledzony kanał {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Śledzone kanały" @@ -15857,11 +15687,6 @@ msgstr "Tylko dla brytyjskich oczu..." msgid "For me" msgstr "Dla mnie" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "W ramach tej weryfikacji wyślesz nam wiadomość SMS, zamiast ją od nas otrzymać." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Dla Twojego bezpieczeństwa potwierdź swoją tożsamość, aby kontynuować." @@ -15905,7 +15730,7 @@ msgstr "Wymuś szkielet ładowania" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Wymuś oznaczenie multimediów jako treści dla dorosłych" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Wymuś przeniesienie na kanał AFK" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Wymuś brak uprawnienia {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Wymuś wyświetlanie zastrzeżenia dotyczącego niestandardowego adresu msgid "Force show voice connection" msgstr "Wymuś wyświetlanie połączenia głosowego" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Wymuś aktywny tryb wolny" @@ -16020,7 +15845,7 @@ msgstr "Przekaż dalej multimedia" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Przekaż wiadomość dalej" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Nakładka blokady geograficznej" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Ograniczenia geograficzne" @@ -16490,12 +16315,6 @@ msgstr "Uzyskaj animowany awatar i baner, odznakę subskrybenta, czterocyfrowy t msgid "Get monthly" msgstr "Subskrybuj co miesiąc" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Wyślij nowy kod" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Kody podarunkowe" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Czas trwania prezentu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Ekwipunek prezentów" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Przebieg obsługi ekwipunku prezentów" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Nie znaleziono prezentu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Prezent odebrany" @@ -17030,7 +16849,7 @@ msgstr "Czat grupowy" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Cześć, {displayName}! Dokończ rejestrację konta, aby nie stracić do niego dostępu." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Cześć {displayName}, zweryfikuj swój adres e-mail." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Cześć {displayName}, nie możemy dostarczyć wiadomości e-mail na Twój adres. Dodaj działający adres e-mail, aby zweryfikować konto." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Ukryć udostępnianie własnego ekranu?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Wysoki" @@ -17755,11 +17579,6 @@ msgstr "Jestem podpowiedzią" msgid "I changed my mind" msgstr "Jednak rezygnuję" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Potrzebuję innej metody" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Jeśli zgłoszenie dotyczy konkretnej wiadomości, zgłoś tę wiadomoś msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Jeśli zgłoszenie dotyczy konkretnych wiadomości, zgłoś tę najistotniejszą. Zgłoszenia wiadomości najlepiej przedstawiają kontekst naszemu zespołowi ds. bezpieczeństwa, a dodatkowe szczegóły w komentarzach mogą przyspieszyć rozpatrzenie sprawy. Kontynuuj ogólne zgłoszenie użytkownika tylko wtedy, gdy zgłoszenie wiadomości nie oddałoby szerszego problemu." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Jeśli nie możesz ukończyć weryfikacji przez SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Jeśli nie możesz użyć żadnej metody weryfikacji, skontaktuj się z pomocą techniczną." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Rozmiar interfejsu" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Nieprawidłowy plik audio" @@ -18674,8 +18483,10 @@ msgstr "Nieprawidłowy JSON. Wklej pełną odpowiedź z powyższego adresu URL." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Dołącz do rozmowy głosowej" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Dołącz do kanału głosowego" @@ -19613,16 +19424,6 @@ msgstr "Dowiedz się więcej o Visionary" msgid "Leave" msgstr "Opuść" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Opuścić {count, plural, one {# społeczność} few {# społeczności} many {# społeczności} other {# społeczności}} i odłożyć tę weryfikację na później?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Opuść i odłóż na później" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Czytniki ekranu będą ogłaszać nowe wiadomości, gdy tylko pojawią się w otwartym kanale. Dźwięki powiadomień pozostaną bez zmian." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Pozwól społeczności na samodzielną moderację" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Biblioteka" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Biblioteka pełna (maks. {max} dźwięków). Usuń jeden, zanim dodasz kolejny." @@ -19812,7 +19613,7 @@ msgstr "Biblioteka: {count} z {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Dożywotnio" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Ładowanie..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Ładowanie…" @@ -20261,7 +20062,7 @@ msgstr "Luizjana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Niski" @@ -20416,7 +20217,7 @@ msgstr "Zarządzaj funkcjami społeczności" msgid "Manage emoji & stickers" msgstr "Zarządzanie emoji i naklejkami" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Zarządzaj przychodzącymi webhookami, które mogą publikować wiadomości na tym kanale." @@ -20514,7 +20315,7 @@ msgstr "Oznacz wszystkie nieprzeczytane kanały w skrzynce odbiorczej jako przec msgid "Mark as read" msgstr "Oznacz jako przeczytane" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Oznacz prezent jako odebrany" @@ -20676,14 +20477,14 @@ msgstr "Społeczność dla dorosłych" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Treści dla dorosłych" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Treści dla dorosłych i ostrzeżenia o treści" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maksymalny czas życia (dni)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Maksymalna ochrona dla przestrzeni przyjaznych rodzinie" @@ -20924,7 +20725,7 @@ msgstr "Zatrzymaj odtwarzanie" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Cofnięto bana członka" msgid "Member updated" msgstr "Członek zaktualizowany" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Weryfikacja członków" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Poziom weryfikacji członków" @@ -21048,7 +20849,7 @@ msgstr "Członkowie są usuwani, gdy są offline, chyba że otrzymają rolę." msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Członkowie z uprawnieniem „{pinMessagesPermissionLabel}” mogą przypinać wiadomości dla wszystkich." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Członkowie z rolami mogą omijać te weryfikacje. W przypadku przestrzeni publicznych zalecamy włączenie weryfikacji." @@ -21153,7 +20954,7 @@ msgstr "Wzmianki o Tobie są tutaj widoczne przez {retentionDays} dni." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Tylko wzmianki" @@ -21292,7 +21093,7 @@ msgstr "Ustawienia wyświetlania wiadomości są dostępne tylko na komputerze." msgid "Message editing" msgstr "Edytowanie wiadomości" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Wiadomość przesłana dalej" @@ -21341,7 +21142,7 @@ msgstr "Przyciski wprowadzania wiadomości" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Wiadomość jest za długa" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Podglądy wiadomości na liście rozmów prywatnych" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Wiadomość opublikowana" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Wiadomości publikowane w kanale #{sourceName} będą teraz pojawiać się w kanale #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Wiadomości publikowane w tych kanałach ogłoszeń są kopiowane tutaj." @@ -21504,7 +21305,7 @@ msgstr "Wiadomości publikowane na tych kanałach informacyjnych są kopiowane n msgid "Messages you can bookmark" msgstr "Wiadomości, które możesz dodać do zakładek" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Wysyłanie wiadomości w tej społeczności jest tymczasowo wstrzymane." @@ -21733,30 +21534,30 @@ msgstr "Symuluj wygaśnięcie za 1 dzień" msgid "Mock expires in 7 days" msgstr "Symuluj wygaśnięcie za 7 dni" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Symuluj nakładkę blokady geograficznej" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Symuluj ekwipunek prezentów" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Symuluj połączenie przychodzące" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Zasymuluj powód blokady kanału z treściami dla dorosłych" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Symuluj powód blokady multimediów dla dorosłych" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Symuluj lokalizację w Wielkiej Brytanii" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Przykładowe awatary użytkowników w różnych rozmiarach i ze wszystkimi możliwymi statusami." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Wariant testowy" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Symulowane scenariusze korzystania z aplikacji" @@ -22698,14 +22494,16 @@ msgstr "Nowa społeczność wyciszona" msgid "New direct message" msgstr "Nowa wiadomość prywatna" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Nowy e-mail" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formularz nowego adresu e-mail" @@ -22816,9 +22614,7 @@ msgstr "Najpierw najnowsze" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Dalej" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Nie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Brak uprawnienia „{attachFilesPermission}”" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Brak uprawnienia „{sendMessagesPermission}”" @@ -23005,7 +22801,7 @@ msgstr "Brak zmian do zapisania" msgid "No channels available" msgstr "Brak dostępnych kanałów" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Nie znaleziono kanałów" @@ -23233,11 +23029,6 @@ msgstr "Nie znaleziono uprawnień" msgid "No personal words yet." msgstr "Nie dodano jeszcze własnych słów." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Brak numeru telefonu" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Brak wyników" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Brak wyników" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Nie znaleziono użytkowników" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Weryfikacja nie jest wymagana." @@ -23452,7 +23243,7 @@ msgstr "Weryfikacja nie jest wymagana." msgid "No verification methods available" msgstr "Brak dostępnych metod weryfikacji" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Brak webhooków" @@ -23504,7 +23295,7 @@ msgstr "Bez konwersji" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Brak" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Brak (normalne zachowanie)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norweski" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Zbyt krótki staż w społeczności" @@ -23798,9 +23589,9 @@ msgstr "Obiekty" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Wyłączone" @@ -23848,7 +23639,7 @@ msgstr "Od najstarszych" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Włączone" @@ -23884,11 +23675,6 @@ msgstr "Nie udało się odczytać lub wysłać jednego lub więcej załącznikó msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Jeden lub więcej plików, które próbujesz przesłać, przekracza maksymalny limit rozmiaru wynoszący {maxSizeFormatted} na plik." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Szybka weryfikacja" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Tylko głośniki" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Tylko właściciel społeczności może zmienić to ustawienie" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Otwórz emoji w przeglądarce" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Otwórz wybór emoji" @@ -24382,12 +24168,8 @@ msgstr "Ikona otwierania menu" msgid "Open message history threshold" msgstr "Otwórz ustawienia progu historii wiadomości" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Otwórz nakładkę" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Otwórz listę" @@ -24485,11 +24267,6 @@ msgstr "Otwórz nową aplikację. Jesteś już zalogowany." msgid "Open the shortcuts list for quick actions." msgstr "Otwórz listę skrótów, aby szybko wykonywać działania." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Otwórz e-mail weryfikacyjny i użyj znajdującego się w nim linku. To okno zaktualizuje się po otwarciu linku." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Otwórz ustawienia głosu i wideo" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Otwórz przeglądarkę, zaloguj się, a następnie wprowadź poniższy kod, aby połączyć swoje konto." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Otwórz wiadomości" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Otwórz starą aplikację {PRODUCT_NAME} i wybierz „Połącz nowe urządzenie”, a następnie wpisz poniższy kod." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Otwórz aplikację do SMS-ów w telefonie i utwórz nową wiadomość." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Otwórz aplikację do obsługi wiadomości na telefonie i rozpocznij nową wiadomość tekstową." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Inna reakcja…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Nasz system weryfikacji numerów telefonu jest obecnie niedostępny. Problem leży po naszej stronie, a nie w Twoim numerze. Poczekaj kilka minut i spróbuj ponownie z tym samym numerem." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, oszustwa, złośliwe linki lub fałszywe twierdzenia, które mogą spowodować szkody w świecie rzeczywistym." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefon" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Numer telefonu" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Numer telefonu jest wymagany" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Numer telefonu zweryfikowany" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Wymagana ponowna weryfikacja numeru telefonu" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Krok: telefon" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Weryfikacja numeru telefonu nie jest dostępna dla tego konta. Użyj innej metody lub skontaktuj się z pomocą techniczną." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Wymagana weryfikacja numeru telefonu" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Wybierz 4-cyfrową liczbę po swojej nazwie użytkownika" msgid "Pick the appearance this administrator account should start with." msgstr "Wybierz początkowy wygląd interfejsu dla tego konta administratora." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Wybierz metodę, którą możesz teraz ukończyć." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Obraz w obrazie" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Przypnij" @@ -25471,7 +25176,7 @@ msgstr "Przypnij czat grupowy" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Przypinaj lub odpinaj dowolne wiadomości." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Przypnij tę wiadomość do kanału, aby wszyscy ją widzieli." @@ -26227,18 +25932,18 @@ msgstr "Kolor profilu" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Dostosowywanie profilu" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Dostosowywanie profilu dla {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formularz dostosowywania profilu" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Typ profilu" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profil zaktualizowany" @@ -26340,7 +26045,7 @@ msgstr "Pytaj o nowe urządzenia audio" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Koordynacja nalotu" msgid "Rate" msgstr "Tempo" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Osiągnięto limit zapytań" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Surowy JSON osadzonej treści" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Usunąć {userName} ze znajomych?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Usuń wszystko" @@ -27290,7 +26990,7 @@ msgstr "Usunąć wszystkie reakcje {emojiNameWithColons} z tej wiadomości?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Usuń wszystkie reakcje" @@ -27899,20 +27599,10 @@ msgstr "Tag zgłoszonego użytkownika (opcjonalnie)" msgid "Reposts: <0>{countLabel}" msgstr "Udostępnienia: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Najpierw poproś o nowy kod." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Poproś o nowy link do resetowania" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Najpierw poproś o kod weryfikacyjny." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Zaproszenia" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Wymagaj 2FA dla działań moderacyjnych" @@ -27958,7 +27648,7 @@ msgstr "Wymagaj przepływu OAuth2 z kodem autoryzacyjnym" msgid "Require passkey" msgstr "Wymagaj klucza dostępu" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Wymagaj uwierzytelniania dwuskładnikowego od moderatorów, zanim będą mogli banować i wyrzucać członków, nakładać na nich czasowe ograniczenia lub usuwać wiadomości." @@ -27972,46 +27662,6 @@ msgstr "Wymagane" msgid "Required 2FA for moderation actions" msgstr "Zaczęto wymagać uwierzytelniania dwuskładnikowego (2FA) do działań moderacyjnych" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Domyślna karta wymaganej akcji" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Przebieg wymaganego działania" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Etap telefoniczny wymaganego działania" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Stan ponownego wysyłania kodu wymaganego działania" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Wynik ponownego wysłania kodu wymaganego działania" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Tekst ponownej weryfikacji w wymaganym działaniu" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Wariant wymaganego działania" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Nakładka wymaganych działań" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Wymaga identyfikatora URI przekierowania i kodu autoryzacji podczas zapraszania tego bota." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Wymaga zweryfikowanego adresu e-mail i konta, które ma co najmniej 5 minut." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Wymaga zweryfikowanego adresu e-mail." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Wymaga zweryfikowanego numeru telefonu." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Wymaga spełnienia wszystkich warunków z poziomu średniego oraz bycia członkiem społeczności przez co najmniej 10 minut." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Wyślij ponownie ({resendSecondsRemaining} s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Wyślij ponownie ({secondsRemaining} s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Stan ładowania przycisku ponownego wysyłania" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Wyślij kod ponownie" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Wyślij e-mail ponownie" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Wynik ponownego wysłania" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Wysłano ponownie" @@ -28518,21 +28152,6 @@ msgstr "Odkryj" msgid "Reveal spoiler" msgstr "Odkryj spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Zweryfikuj ponownie swój adres e-mail lub zweryfikuj numer telefonu, aby dalej korzystać z {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Zweryfikuj ponownie swój adres e-mail, aby nadal korzystać z {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Zweryfikuj ponownie swój numer telefonu, aby nadal korzystać z {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Nasycenie" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Podgląd podczas przewijania" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Szukaj kanałów" msgid "Search communities" msgstr "Szukaj społeczności" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Szukaj krajów..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Szukaj krajów…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Wybierz kraj zamieszkania." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Wybierz…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Wyślij" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Wyślij ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Wyślij kolejne zgłoszenie" msgid "Send button" msgstr "Przycisk wysyłania" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Wyślij kod" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Wysyłanie wiadomości" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Wysyłanie wiadomości wyłączone" @@ -30151,32 +29759,11 @@ msgstr "Wyślij zapisany element multimedialny „{memeName}”" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Wysyłaj wiadomości TTS za pomocą /tts. Członkowie, którzy włączyli syntezę mowy, usłyszą je odczytywane na głos." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Wyślij kod <0>{0} na numer <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Wyślij kod na numer telefonu poniżej." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Wyślij ten kod" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Cofnąć przypiętą wiadomość w czasie?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Wyślij na numer" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Wyślij wiadomość głosową" msgid "Send:" msgstr "Wysyłanie:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Wysłanie SMS-a na ten numer telefonu jest zbyt kosztowne dla {PRODUCT_NAME}, dlatego prosimy o wysłanie SMS-a do nas. Wiemy, że to nie jest idealne rozwiązanie. Możesz też poprosić administratorów tej instancji o usunięcie tego wymogu z Twojego konta." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Wysłanie SMS-a na ten numer telefonu jest zbyt kosztowne dla {PRODUCT_NAME}, dlatego prosimy o wysłanie SMS-a do nas. Wiemy, że to nie jest idealne rozwiązanie. Możesz też napisać na <0>{SUPPORT_EMAIL}, abyśmy usunęli ten wymóg z Twojego konta." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Wyślij seryjnie" msgid "Serve the token file" msgstr "Udostępnij plik tokenu" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Błąd usługi" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Ustaw niestandardowy skrót dla „{label}”" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Ustaw status niestandardowy" @@ -30486,18 +30060,6 @@ msgstr "Ustawiono region głosowy na {region}" msgid "Set the voice region to automatic" msgstr "Ustawiono region głosowy na automatyczny" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Odłóż tę weryfikację na później" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Odłożyć tę weryfikację na później?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Ustaw swoje zaimki" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Ustaw swój status" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Skróty klawiszowe są wstrzymane podczas nagrywania." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Skróć wiadomość i spróbuj ponownie." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Pokaż ikonę {productName} w zasobniku systemowym lub na pasku menu" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Pokaż ostrzeżenie o treści" @@ -31672,7 +31234,7 @@ msgstr "Tryb wolny · czekaj {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Tryb wolny aktywny" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Tryb wolny jest ustawiony na {durationLabel}. Poczekaj przed wysłaniem kolejnej wiadomości." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Pozostały czas oczekiwania w trybie wolnym" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Symulacja trybu wolnego" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Pozostały czas oczekiwania w trybie wolnym" @@ -31807,11 +31369,6 @@ msgstr "Płynne przewijanie" msgid "Smoother video" msgstr "Płynniejszy obraz" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Weryfikacja SMS jest teraz niedostępna. Spróbuj ponownie później lub skontaktuj się z pomocą techniczną." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Coś poszło nie tak podczas przygotowywania tej naklejki. Spróbuj z innym plikiem lub spróbuj ponownie za chwilę." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Coś poszło nie tak podczas publikowania. Spróbuj ponownie za chwilę." @@ -32009,11 +31566,9 @@ msgstr "Coś poszło nie tak. Odśwież stronę lub zaloguj się ponownie." msgid "Something went wrong. Try again later." msgstr "Coś poszło nie tak. Spróbuj ponownie później." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Coś poszło nie tak. Spróbuj ponownie." @@ -32352,11 +31907,6 @@ msgstr "Logowanie SSO przekroczyło limit czasu. Spróbuj ponownie." msgid "Staff controls" msgstr "Narzędzia zespołu" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Mogą obowiązywać standardowe stawki operatora za wiadomości." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Animacja gwiazdki" msgid "Starred channels" msgstr "Kanały oznaczone gwiazdką" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Transport subskrybenta:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Subskrypcja" @@ -33051,14 +32599,12 @@ msgstr "Scenariusze subskrypcji" msgid "Subtext" msgstr "Tekst pomocniczy" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Sukces" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Sugerowane dla większości społeczności" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "System i powitanie" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Ogłoszenia systemowe od zespołu {productName}. Nie możesz tutaj odpowiadać." @@ -33765,11 +33311,6 @@ msgstr "Zaznaczanie tekstu" msgid "Text size" msgstr "Rozmiar tekstu" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Wyślij nam SMS-a ze swojego telefonu" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Tajski" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Dziękujemy za pomoc w dbaniu o bezpieczeństwo w {productName}. Rozpatrzymy Twoje zgłoszenie tak szybko, jak to możliwe." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Ten kod nie zadziałał. Sprawdź go i spróbuj ponownie." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Ten kod wygasł. Poproś o nowy kod." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Nie udało się dokończyć. Niektóre społeczności mogły zostać już opuszczone, a Twoje konto nadal jest zablokowane. Naciśnij ponownie „Odłóż tę weryfikację na później”, aby dokończyć." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Nie udało się. Nic się nie zmieniło. Spróbuj ponownie." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "To nie wygląda na prawidłowy kolor. Spróbuj formatu szesnastkowego, r msgid "That doesn't look like a valid URL." msgstr "To nie wygląda na prawidłowy adres URL." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Ten adres e-mail jest już używany." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Nadpisanie odmówiło {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Strona, której szukasz, nie istnieje lub została przeniesiona." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Odłożono weryfikację numeru telefonu. Pozostał jeden etap weryfikacji e-mail." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Brak dostępnych kanałów, do których można utworzyć zaproszenie." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "W tej społeczności nie ma obecnie ról do przypisania, ale możesz utworzyć nową rolę w <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Dla tego kanału nie skonfigurowano żadnych webhooków. Utwórz webhook, aby umożliwić aplikacjom zewnętrznym publikowanie wiadomości." @@ -34273,7 +33784,7 @@ msgstr "Wystąpił błąd podczas ładowania zaproszeń. Spróbuj ponownie." msgid "There was an error loading the stickers. Try again." msgstr "Wystąpił błąd podczas ładowania naklejek. Spróbuj ponownie." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Wystąpił błąd podczas ładowania webhooków dla tego kanału. Spróbuj ponownie." @@ -34417,7 +33928,7 @@ msgstr "Ten kanał może publikować 10 wiadomości z rzędu, a następnie jedn msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Ten kanał może publikować 10 wiadomości z rzędu, a następnie jedną co 6 minut. Spróbuj ponownie za kilka minut." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Ten kanał nie obsługuje webhooków." @@ -34550,12 +34061,12 @@ msgstr "To połączenie nie zostało zweryfikowane." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Zawiera treści wrażliwe." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Ta rozmowa jest już niedostępna." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Ta grupa ma za dużo osób" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Ta grupa jest pełna. Usuń kogoś, zanim dodasz więcej osób." @@ -34715,11 +34226,6 @@ msgstr "To naklejka niestandardowa ze społeczności." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "To jest kanał z ograniczeniami wiekowymi. Aktualizacje mogą trafiać tylko do kanałów z ograniczeniami wiekowymi." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "To kontrola antyspamowa. Twój numer telefonu nie jest powiązany z kontem." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "To jest wyłączone" msgid "This is how messages appear" msgstr "Tak wyglądają wiadomości" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "To nie jest teraz dostępne dla Twojego konta. Poproś administratorów tej instancji o sprawdzenie." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Ta funkcja nie jest obecnie dostępna dla Twojego konta. Wyślij e-mail na adres {supportEmail}, a ktoś to sprawdzi." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "To nie jest kanał, którego szukasz." @@ -34792,11 +34288,6 @@ msgstr "To Twój ostatni klucz dostępu, a klucze dostępu są Twoim drugim czyn msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "To Twój ostatni klucz dostępu. Po jego usunięciu nie będzie można używać klucza dostępu jako drugiego czynnika uwierzytelniania." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "To nie jest numer komórkowy, więc nie może odbierać naszych SMS-ów. Spróbuj podać numer komórkowy lub skontaktuj się z pomocą techniczną, jeśli uważasz, że to błąd." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Ta wiadomość została już usunięta." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Ta wiadomość została już opublikowana" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Ta wiadomość już nie istnieje." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Ten pseudonim będzie widoczny tylko w tej społeczności" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Ten numer jest weryfikowany przez wysłanie nam SMS-a. Wróć i ponownie rozpocznij weryfikację telefoniczną, aby otrzymać kod i numer do wysłania SMS-a." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Ten numer wymaga weryfikacji przez wysłanie do nas SMS-a zamiast odebrania SMS-a od nas." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Ten uczestnik ma wyłączony dźwięk" msgid "This participant was deafened by moderators" msgstr "Moderatorzy wyłączyli dźwięk temu uczestnikowi" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Tego numeru telefonu nie można użyć. Spróbuj użyć innego numeru telefonu komórkowego lub skontaktuj się z pomocą techniczną." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Ten numer telefonu został już użyty. Spróbuj użyć innego numeru lub skontaktuj się z pomocą techniczną." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Ten użytkownik nie ma żadnych ról w tej społeczności." msgid "This user is already banned from the community." msgstr "Ten użytkownik jest już zbanowany w społeczności." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Ten użytkownik jest już niedostępny." @@ -35065,11 +34536,6 @@ msgstr "Ten użytkownik został przymusowo dodany do tej społeczności przez ad msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Sesja weryfikacji wygasła. Wróć do {productName} i rozpocznij płatność ponownie." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Sesja weryfikacji wygasła. Zacznij od nowa." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Spowoduje to wylogowanie, wyczyszczenie plików pamięci podręcznej i z msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Spowoduje to zaufanie do wszystkich linków zewnętrznych i pominięcie ostrzeżenia dla każdej domeny. Twoje istniejące zaufane domeny zostaną zastąpione. Jest to mniej bezpieczne." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "To okno zaktualizuje się automatycznie po otrzymaniu wiadomości." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Pasek tytułowy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Platforma paska tytułu" @@ -35470,18 +34931,11 @@ msgstr "Tonacja" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Mapuj obrazy HDR do standardowego zakresu, zmniejszając szczytową jasność." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Zbyt wiele prób. Poczekaj chwilę, a następnie spróbuj ponownie." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Za dużo społeczności" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Zbyt wiele żądań. Spróbuj ponownie później." @@ -36151,8 +35605,10 @@ msgstr "Nie udało się przygotować żadnych emoji do wysłania. Wystąpiły na #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Niedostępne" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Bez kategorii" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Konto z niedokończoną rejestracją" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Punktowana" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Odepnij" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Odepnij wiadomość" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Odpiąć tę wiadomość?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Niezapisane zmiany" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Nieobsługiwany format audio." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Dopóki nie włączę ponownie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Niezweryfikowany e-mail" @@ -36958,12 +36414,7 @@ msgstr "Zaktualizuj {productName}, aby wyświetlić tę wiadomość." msgid "Update app" msgstr "Zaktualizuj aplikację" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Zaktualizuj adres e-mail" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Zaktualizuj mój status" @@ -37306,18 +36757,13 @@ msgstr "Użyj {url} w miejscu, w którym ma zostać wstawiony adres URL obrazu." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Użyj osobnego okna, aby ustawić datę graniczną historii wiadomości dla członków bez uprawnienia „{readMessageHistoryPermissionLabel}”." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Użyj innego adresu e-mail i zweryfikuj go kodem." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Użyj rzeczywistego" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Użyj rzeczywistego typu Premium" @@ -37335,16 +36781,6 @@ msgstr "Użyj innej metody" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Użyj aplikacji uwierzytelniającej do generowania kodów uwierzytelniania dwuskładnikowego" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Użyj adresu e-mail, do którego masz dostęp. Wyślemy tam kod." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Użyj adresu e-mail innego niż bieżący." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Używaj ciemnego motywu w całej aplikacji" msgid "Use default" msgstr "Użyj domyślnych" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Użyj innego adresu e-mail" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Użyj e-maila" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Używać kluczy dostępu do uwierzytelniania dwuskładnikowego?" msgid "Use passkeys to sign in without a password" msgstr "Używaj kluczy dostępu do logowania bez hasła" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Użyj telefonu" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Użyj tekstu ponownej weryfikacji" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Użytkownik zmienia kanał" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Nie znaleziono użytkownika" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Weryfikacja" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Weryfikacja i ograniczenia członkostwa" @@ -37970,15 +37387,8 @@ msgstr "Kod weryfikacyjny" msgid "Verification code sent" msgstr "Kod weryfikacyjny wysłany" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Kod weryfikacyjny wysłany. Sprawdź swoją nową skrzynkę e-mail." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Wysłano e-mail weryfikacyjny. Sprawdź swoją skrzynkę odbiorczą." @@ -38038,23 +37448,6 @@ msgstr "Formularz weryfikacji tożsamości" msgid "Verify it's you" msgstr "Potwierdź, że to Ty" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Zweryfikuj numer telefonu" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Zweryfikuj numer telefonu" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formularz weryfikacji numeru telefonu" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Zweryfikuj swój adres e-mail, zanim dodasz aplikację uwierzytelniającą." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Zweryfikuj swój adres e-mail, zanim zmienisz pseudonim, awatar, baner, biogram, zaimki lub kolor akcentujący w profilu w społeczności." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Zweryfikuj swój adres e-mail, zanim zmienisz nazwę użytkownika, nazwę wyświetlaną, awatar, baner, biogram, zaimki, strefę czasową lub prywatność odznaki {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Zweryfikuj swój adres e-mail, zanim zaczniesz edytować ten profil w społeczności. Nadal możesz go tutaj podejrzeć." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Zweryfikuj swój adres e-mail, zanim edytujesz profil. Nadal możesz go tutaj podejrzeć." @@ -38113,11 +37506,6 @@ msgstr "Zweryfikuj swój adres e-mail, zanim wyślesz zaproszenia do znajomych." msgid "Verify your email first" msgstr "Najpierw zweryfikuj swój adres e-mail" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Zweryfikuj swój adres e-mail lub numer telefonu, aby dalej korzystać z {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Zweryfikuj swój adres e-mail, aby kupować prezenty." msgid "Verify your email to change your username" msgstr "Zweryfikuj swój adres e-mail, aby zmienić nazwę użytkownika" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Zweryfikuj swój adres e-mail, aby dalej korzystać z {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Zweryfikuj swój adres e-mail, aby edytować ten profil w społeczności" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Zweryfikuj swój adres e-mail, aby edytować profil" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Wersja" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Bardzo wysoki" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Zwiększ głośność" msgid "Wait a moment before deleting more messages." msgstr "Poczekaj chwilę, zanim usuniesz więcej wiadomości." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Poczekaj chwilę. To okno zamknie się automatycznie, gdy tylko otrzymamy Twoją wiadomość." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Odstęp między wiadomościami. Użytkownicy z uprawnieniem „{bypassSlowmodePermissionLabel}” mogą go obejść." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Poczekaj tutaj" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Czekam na klucz dostępu…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Oczekiwanie na koniec odstępu między wiadomościami wymaganego przez tryb wolny w kanale „{forwardChannelDisplayName}”." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Oczekiwanie na koniec odstępu między wiadomościami wymaganego przez tryb wolny w co najmniej jednym z wybranych kanałów." @@ -39115,16 +38482,6 @@ msgstr "Nie udało nam się odczytać tego motywu. Może być uszkodzony lub nie msgid "We couldn't remove that account. Try again." msgstr "Nie udało nam się usunąć tego konta. Spróbuj ponownie." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Nie udało nam się automatycznie zweryfikować tego numeru. Skontaktuj się z pomocą techniczną, a ktoś z zespołu sprawdzi Twoje konto." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Nie wysyłamy wiadomości weryfikacyjnych do tego kraju. Spróbuj użyć numeru telefonu komórkowego z innego kraju lub skontaktuj się z pomocą techniczną." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Znaleźliśmy istniejącą subskrypcję {premiumProductFullName} dla teg msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Obniżyliśmy cenę {premiumProductName} w Brazylii. Teraz kosztuje {monthlyPrice} miesięcznie lub {yearlyPrice} rocznie." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Zanim przejdziesz dalej, wymagany jest jeden etap weryfikacji. Pomaga to chronić konta i zapobiegać spamowi w {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Zanim przejdziesz dalej, wymagane są dwa etapy weryfikacji. Będą wyświetlane pojedynczo." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Zalecamy zapisanie tych kodów teraz, aby nie utracić dostępu do konta." @@ -39167,11 +38514,6 @@ msgstr "Wysłaliśmy kod na adres {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Wypełnimy wstępnie pole adresem {prefillEmail}, gdy otworzy się logowanie w przeglądarce." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Wyślemy kod SMS, gdy będzie dostępny." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Chcielibyśmy dać Ci dostęp do {PREMIUM_PRODUCT_NAME} na dłużej niż całe życie, ale to zaburza kontinuum czasoprzestrzenne. Może wyślesz prezent znajomemu?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Przetworzymy to tak szybko, jak to możliwe. Otrzymasz e-mail, gdy archiwum będzie gotowe." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Przywrócimy Twój poprzedni adres e-mail, wylogujemy stare sesje, usuniemy numery telefonów, wyłączymy MFA i zabezpieczymy Twoje konto nowym hasłem." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Przywrócimy Twój poprzedni adres e-mail, wylogujemy stare sesje, wyłączymy uwierzytelnianie wieloskładnikowe i zabezpieczymy Twoje konto nowym hasłem." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Wyślemy kod weryfikacyjny na Twój adres e-mail, zanim zmienisz hasło. msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Wyślemy kod weryfikacyjny na Twój adres e-mail, zanim będziesz mógł wyświetlić swoje kody zapasowe." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Wyślemy kod SMS, gdy będzie dostępny. Twój numer nie jest powiązany z Twoim kontem. Przechowujemy tylko zaszyfrowany znacznik, bez identyfikatora użytkownika, przez ograniczony czas." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Zweryfikujemy Twój obecny, a następnie nowy adres e-mail za pomocą kodów jednorazowych." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Utworzono webhooka" @@ -39331,7 +38669,7 @@ msgstr "Webhook zaktualizowany" msgid "Webhook URL" msgstr "Adres URL webhooka" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooki" @@ -39486,8 +38824,8 @@ msgstr "To, czym się dzielisz, nie jest aktualizowane" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Co słychać?" @@ -39967,21 +39305,11 @@ msgstr "Możesz usunąć uprawnienie <0>{readMessageHistoryPermissionLabel} msgid "You can sign back in at any time." msgstr "Zawsze możesz zalogować się ponownie." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "W każdej chwili możesz poprosić administratorów tej instancji o sprawdzenie przez człowieka." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Nadal możesz utworzyć konto lub się zalogować. Jeśli zaproszenia zostaną później ponownie włączone, możesz użyć tego samego linku, aby dołączyć." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "W każdej chwili możesz też napisać na adres {supportEmail}, aby ktoś z zespołu osobiście sprawdził Twoją sprawę." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Możesz używać linków, emoji i formatowania Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Nie możesz tam dodawać wyrażeń" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Nie możesz dodawać nowych reakcji, gdy masz nałożone czasowe ograniczenie." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Nie możesz zaprosić samego siebie do znajomych" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Nie możesz zmienić pseudonimu tutaj" @@ -40094,7 +39422,7 @@ msgstr "Nie możesz wysłać zaproszenia do znajomych do siebie." msgid "You can't send messages in this channel." msgstr "Nie możesz wysyłać wiadomości na tym kanale." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Nie możesz wysyłać wiadomości w tej społeczności." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Nie masz uprawnień, aby wykonać tę czynność wobec tego członka." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Nie masz uprawnień, aby dołączyć do tego kanału głosowego" @@ -40243,7 +39571,7 @@ msgstr "Nie masz uprawnień do zmiany nazwy tego emoji. Przywrócono poprzednią msgid "You have been banned from this community." msgstr "Masz bana w tej społeczności." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Masz zablokowanego użytkownika {username}. Odblokuj go, aby wysyłać wiadomości." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Masz niezapisane zmiany." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Masz niezapisane zmiany. Zapisz je lub zresetuj przed wyjściem." @@ -40270,7 +39598,7 @@ msgstr "Masz niezapisane zmiany. Zapisz je lub zresetuj przed wyjściem." msgid "You haven't authorized any applications to access your account." msgstr "Nie autoryzowano żadnych aplikacji do dostępu do Twojego konta." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Nie należysz do tej społeczności wystarczająco długo, aby wysyłać wiadomości." @@ -40326,11 +39654,6 @@ msgstr "Musisz zaakceptować warunki korzystania z usługi, aby utworzyć konto" msgid "You must verify your email before sending a report." msgstr "Musisz zweryfikować swój adres e-mail, zanim wyślesz zgłoszenie." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Aby zmienić adres e-mail, musisz mieć dostęp do obecnego. Jeśli to możliwe, użyj weryfikacji telefonicznej lub skontaktuj się z pomocą." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Potrzebujesz uprawnienia „{manageRolesPermissionLabel}”, aby edytowa msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Potrzebujesz uprawnienia „{manageRolesPermissionLabel}”, aby edytować te uprawnienia." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Potrzebujesz uprawnienia „{manageWebhooksPermissionLabel}”, aby wyświetlać i edytować webhooki dla tego kanału." @@ -40384,18 +39707,14 @@ msgstr "Musisz dokończyć rejestrację konta, zanim utworzysz społeczność." msgid "You need to claim your account before you can start a direct message." msgstr "Musisz dokończyć rejestrację konta, zanim rozpoczniesz rozmowę prywatną." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Musisz dokończyć rejestrację konta, aby wysyłać wiadomości prywatne." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Musisz dokończyć rejestrację konta, aby wysyłać wiadomości w tej społeczności." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Aby wysyłać wiadomości w tej społeczności, musisz zweryfikować swój numer telefonu." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Musisz zweryfikować swój adres e-mail, zanim rozpoczniesz rozmowę pry msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Musisz zweryfikować swój adres e-mail, zanim kupisz {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Musisz zweryfikować swój adres e-mail, aby wysyłać wiadomości w tej społeczności." @@ -40424,11 +39743,6 @@ msgstr "Musisz zweryfikować swój adres e-mail, aby wysyłać wiadomości w tej msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Ty lub osoba, którą dodajesz, macie już otwartą maksymalną liczbę czatów grupowych. Opuść jeden i spróbuj ponownie." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Pozostajesz w {ownedNames}. Właściciele nie mogą opuścić własnej społeczności." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Moderatorzy wyłączyli Ci dźwięk" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Po autoryzacji nastąpi przekierowanie do witryny {redirectHostname}." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Opuścisz {count, plural, one {# społeczność, której dotyczy ta weryfikacja} few {# społeczności, których dotyczy ta weryfikacja} many {# społeczności, których dotyczy ta weryfikacja} other {# społeczności, których dotyczy ta weryfikacja}}, a Twoje konto znów będzie działać normalnie." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Opuścisz {guildNames}. Żadne opublikowane przez Ciebie treści nie zostaną usunięte i możesz dołączyć ponownie później." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Nadal musisz ukończyć etap weryfikacji e-mail." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Działasz za szybko" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Działasz za szybko. Poczekaj chwilę i spróbuj ponownie." @@ -40636,7 +39935,7 @@ msgstr "Wysyłasz wiadomości zbyt szybko" msgid "You're streaming!" msgstr "Transmitujesz na żywo!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Masz nałożone czasowe ograniczenie. Wysyłanie wiadomości, dodawanie reakcji i korzystanie z połączeń głosowych są zablokowane do jego wygaśnięcia." @@ -40764,25 +40063,25 @@ msgstr "Płatność za odnowienie przez {storeName} nie powiodła się, ale <0/> msgid "Your account" msgstr "Twoje konto" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Twoje konto natychmiast wróci do normy i nie będziesz już potrzebować numeru telefonu. Nie jest to stałe zwolnienie i możemy poprosić o tę weryfikację ponownie w przyszłości." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Twoje konto zostało pomyślnie połączone. Możesz teraz zamknąć tę kartę i wrócić do aplikacji." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Twoje konto wróciło do normy." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Twoje konto ma ograniczenia" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Twoje konto jest ograniczone. Sprawdź e-mail, aby dowiedzieć się, jak je odblokować." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Rejestracja Twojego konta nie została jeszcze dokończona. Bez adresu e-mail i hasła nie będzie można zalogować się z innych urządzeń i możesz stracić dostęp do konta. Dokończ rejestrację teraz, aby zabezpieczyć konto." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Twoje konto jest zbyt nowe, by wysyłać wiadomości w tej społeczności." @@ -40800,11 +40099,6 @@ msgstr "Twoje konto wymaga uwierzytelniania wieloskładnikowego, ale na tym urz msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Twoje konto nie będzie już chronione uwierzytelnianiem dwuskładnikowym podczas logowania hasłem. Utracisz również podwyższone uprawnienia w społecznościach, które wymagają uwierzytelniania dwuskładnikowego." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Twoje konto znów działa normalnie i nic nie zostało usunięte. Możemy poprosić o ponowne sprawdzenie później." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Sprawdzamy Twoją kartę pod kątem lokalnych cen. Zazwyczaj trwa to tyl msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Twoja karta spełnia warunki. Przekierowujemy Cię teraz do strony płatności." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Twój operator twierdzi, że ten numer jest wyłączony. Sprawdź go i spróbuj ponownie lub skontaktuj się z pomocą techniczną, jeśli numer jest poprawny." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Twoje zmiany trafią do wszystkich społeczności obserwujących ten kanał. Może to potrwać minutę. Każda opublikowana wiadomość pozwala na 3 szybkie edycje, a następnie 1 co 20 minut." @@ -40869,21 +40158,6 @@ msgstr "Twoje urządzenie poprosi o zapisanie zaktualizowanego klucza dostępu d msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Twoje urządzenie poprosi o zapisanie zaktualizowanego klucza dostępu dla {name}. Użyj tego samego telefonu lub klucza bezpieczeństwa co przed chwilą." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Twój adres e-mail został zaktualizowany." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Nie udało się dostarczać wiadomości na Twój adres e-mail. Dodaj działający adres, abyśmy mogli się z Tobą kontaktować w sprawie konta." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Nie udało się dostarczyć wiadomości na Twój adres e-mail. Zaktualizuj go, aby nadal korzystać z {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Twój adres e-mail został zweryfikowany. Możesz teraz zalogować się na swoje konto." @@ -41000,21 +40274,11 @@ msgstr "Nie udało się zaktualizować wiadomości" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Upłynął termin zwrotu za Twój ostatni zakup. Skontaktuj się z pomocą techniczną w przypadku problemów z płatnościami." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "Twój nowy adres e-mail" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Twój nowy pseudonim lub pozostaw puste, aby zresetować." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Twój numer nie jest powiązany z Twoim kontem. Przez ograniczony czas przechowujemy jedynie zaszyfrowany znacznik, bez identyfikatora użytkownika." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Twoja płatność została anulowana. Możesz teraz zamknąć tę kartę i wrócić do aplikacji." @@ -41054,11 +40318,6 @@ msgstr "Twoje kupione prezenty" msgid "your region" msgstr "Twój region" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Zanim przejdziesz dalej, musimy przeprowadzić dodatkową weryfikację antyspamową Twojej rejestracji." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/pt-BR/messages.po b/fluxer_app/src/features/i18n/locales/pt-BR/messages.po index 4eede37b7..df5505d40 100644 --- a/fluxer_app/src/features/i18n/locales/pt-BR/messages.po +++ b/fluxer_app/src/features/i18n/locales/pt-BR/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, =0 {# reações} one {# reação} other {# reações}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, =1 {# pessoa reagiu} other {# pessoas reagiram}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, =0 {# segundos} one {# segundo} other {# segundos}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} às {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, =0 {Seu link de convite expira em # segundos.} one {Seu link de convite expira em # segundo.} other {Seu link de convite expira em # segundos.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Seleção: {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 minuto" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 horas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 meses (1 ano)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Recuperação de 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Exigência de 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 membros (digitando)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 meses" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 horas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 meses" @@ -2575,11 +2575,6 @@ msgstr "um minuto" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Uma nova versão para computador está disponível. Baixe o instalador e execute-o para atualizar o {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Um novo código de verificação foi enviado." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Dados da conta" msgid "Account exists to spam, scam, or abuse the platform." msgstr "A conta existe para enviar spam, aplicar golpes ou abusar da plataforma." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Conta limitada" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Estado da conta" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Conta muito nova" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Verificação de conta necessária" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Adicionar um bot a uma comunidade com as permissões solicitadas" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Adicionar um comentário (opcional)" @@ -3054,8 +3052,10 @@ msgstr "Adicionar um tópico a este canal" msgid "Add a word…" msgstr "Adicionar uma palavra…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Adicione um e-mail válido" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Adicione uma conta para continuar." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Adicione um e-mail e senha à sua conta primeiro." @@ -3424,11 +3424,6 @@ msgstr "Adicionado: {createdDate} • último uso: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Comentários adicionais (opcionais)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Verificação adicional necessária" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Todos os idiomas" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Cancelamento já agendado" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Também denunciar esta mensagem à equipe de segurança do {productName}" @@ -4713,11 +4708,6 @@ msgstr "Perguntar antes de iniciar chamadas" msgid "Ask for a passkey after your password when you sign in" msgstr "Pedir uma chave de acesso após sua senha ao fazer login" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Peça aos administradores desta instância que revisem sua conta. Esta instância é mantida de forma independente, e só os administradores dela podem alterar sua conta." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Remove automaticamente parâmetros de rastreamento (como utm_source, fbc msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Remover automaticamente parâmetros de rastreamento de URLs nas mensagens que você envia" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Filtre automaticamente mensagens com conteúdo explícito em canais não marcados para conteúdo adulto." @@ -5359,8 +5349,6 @@ msgstr "Ausente no momento" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Voltar" @@ -6506,11 +6494,6 @@ msgstr "Câmeras e dispositivos de captura virtual são selecionados aqui no {pr msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Câmeras desativadas acima de {voiceChannelCameraUserLimit} participantes" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Não consegue acessar esse e-mail?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Não é possível enviar arquivos aqui" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Não é possível enviar arquivos aqui" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Alterar e-mail" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Alterar emoji" @@ -7201,7 +7184,7 @@ msgstr "Alterou o limite de usuários de {oldCount} para {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Alterou a URL personalizada de {oldCode} para {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Alterou o nível de verificação de {oldLevel} para {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Canal ou categoria" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Permissões específicas do canal" @@ -7509,8 +7492,6 @@ msgstr "Verifique sua conexão e tente novamente." msgid "Check your connection, then try again." msgstr "Verifique sua conexão e tente novamente." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Escolha uma tela no seletor do sistema" msgid "Choose a GIF" msgstr "Escolha um GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Escolha um método" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Escolha uma nova senha." @@ -7680,8 +7656,8 @@ msgstr "Escolha uma ação." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Escolha um emoji" @@ -7749,11 +7725,6 @@ msgstr "Defina como sua instância funciona" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Escolha um dos métodos abaixo para provar a propriedade do domínio. Você só precisa concluir um." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Escolha um método de verificação. Qualquer um deles pode concluir esta verificação." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Escolha o que {clientLabel} pode fazer na sua comunidade. Desmarque as p msgid "Choose what friends see in their active now panel" msgstr "Escolha o que os amigos veem no painel \"Ativos agora\"" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Escolha o que os membros devem ter antes de poderem postar ou enviar mensagens diretas para os membros da comunidade." @@ -8030,8 +8001,8 @@ msgstr "Melhora o áudio do microfone para uma fala mais nítida." msgid "Clear" msgstr "Limpar" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Limpar depois de" @@ -8053,7 +8024,7 @@ msgstr "Limpar todas as simulações de anexos" msgid "Clear all token overrides" msgstr "Limpar todas as substituições de token" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Limpar simulações de anexo" @@ -8066,14 +8037,14 @@ msgstr "Limpar comando" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Limpar status personalizado" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Limpar todas as reações desta mensagem?" @@ -8124,7 +8095,7 @@ msgstr "Limpar busca" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Tema carvão" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Comandos" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Os comentários estão desativados porque um ou mais canais selecionados estão com o modo lento ativado. O comentário seria bloqueado pelo modo lento logo após o encaminhamento." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Os comentários estão desativados porque o modo lento está ativado em {forwardChannelDisplayName}. O comentário seria bloqueado pelo modo lento logo após o encaminhamento." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Os comentários não estão disponíveis enquanto o modo lento estiver ativado." @@ -8670,11 +8639,11 @@ msgstr "Comunidades" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Comunidades e canais onde você não pode gerenciar webhooks são ocultados." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "As comunidades listadas em Descobrir precisam analisar as mensagens de todos os membros. Esta configuração não pode ser alterada enquanto Descobrir estiver ativado." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "As comunidades listadas em Descobrir exigem, no mínimo, a verificação de e-mail. A opção \"Nenhuma\" não pode ser selecionada enquanto Descobrir estiver ativado." @@ -8827,7 +8796,7 @@ msgstr "Nome da comunidade" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Apelido na comunidade" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Perfil na comunidade" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Perfil na comunidade atualizado" @@ -8907,7 +8876,7 @@ msgstr "Nível dos avisos de não lidas da comunidade" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Comunidade atualizada" @@ -8952,11 +8921,6 @@ msgstr "Comparação" msgid "Complete mature content check" msgstr "Concluir verificação de conteúdo adulto" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Conclua um dos caminhos de verificação abaixo para continuar usando o {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Concluir pagamento" msgid "Complete the mature content check to unlock mature media." msgstr "Conclua a verificação de conteúdo adulto para desbloquear mídias adultas." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Conclua as etapas de verificação de e-mail e telefone abaixo para continuar usando o {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Conclua a verificação necessária para continuar usando o {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Configurar seu selo de perfil" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Conexões reordenadas" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Consentimento necessário" @@ -9349,16 +9304,6 @@ msgstr "Crie uma URL de autorização com escopos e permissões." msgid "Contact" msgstr "Contato" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Fale com o suporte" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Entre em contato com os administradores desta instância para obter ajuda." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Criador de conteúdo" msgid "Content filter" msgstr "Filtro de conteúdo" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Filtragem de conteúdo" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Indicação do tipo de conteúdo" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Verificações de segurança de conteúdo" @@ -9416,12 +9361,10 @@ msgstr "Os menus de contexto podem ser abertos com um clique esquerdo (em botõe #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Controle o indicador de mensagens não lidas dos canais com notificaçõ msgid "Control which chat updates are announced by assistive technology." msgstr "Controle quais atualizações de chat são anunciadas pela tecnologia assistiva." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Conversa não encontrada" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Não foi possível adicionar a etiqueta" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Não foi possível adicionar este amigo ao grupo. Tente novamente." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Não foi possível adicionar ao grupo" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Não foi possível criar um link para o tema" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Não foi possível criar o link de convite" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Não foi possível encerrar seu período de carência" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Não foi possível gerar um link de convite. Tente novamente." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Não foi possível processar a imagem" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Não foi possível publicar esta mensagem" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Não foi possível entrar novamente na comunidade Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Não foi possível remover o som de entrada" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Não foi possível salvar as configurações do canal" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Não foi possível salvar o som de entrada" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Não foi possível retirar a inscrição" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Contagem regressiva" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "País" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Criar a conta de administrador" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Criar a conversa em grupo com {addableCount, plural, =1 {# destinatário restante} other {# destinatários restantes}} e deixar os outros de fora?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Criar webhook" @@ -10948,7 +10884,7 @@ msgstr "Emoji personalizado {emojiName} de uma comunidade" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Sons de entrada personalizados não estão ativados nesta instância." @@ -11108,7 +11044,7 @@ msgstr "Processamento de voz personalizado" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Texto de aviso personalizado" @@ -11530,11 +11466,6 @@ msgstr "Buscador padrão" msgid "Default shortcuts" msgstr "Atalhos padrão" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Aba padrão" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Excluir esta mensagem" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Excluir esta mensagem? Não é possível desfazer." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Excluir esta mensagem? Não pode ser desfeito. Esta mensagem também será removida de todas as comunidades que seguem este canal." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Modo desenvolvedor" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Opção do desenvolvedor" @@ -12299,7 +12230,7 @@ msgstr "Entrada direta" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Modo de exibição" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Nome de exibição" @@ -12858,7 +12789,7 @@ msgstr "Deseja entrar em {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doutor, eu sou do futuro. Vim parar aqui em uma máquina do tempo que você inventou. Agora, preciso da sua ajuda para voltar para o ano de 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Editar horário local do perfil" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Editar mensagem publicada?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Editar suas mensagens acima ou abaixo" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Edite a aparência do seu perfil e veja uma prévia ao vivo" @@ -13590,10 +13521,8 @@ msgstr "Você pode solicitar um reembolso até {windowEndsOn}. Isso também canc msgid "Email" msgstr "E-mail" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "O endereço de e-mail é obrigatório." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-mail alterado" @@ -13616,49 +13547,17 @@ msgstr "E-mail alterado" msgid "Email delivery" msgstr "Entrega de e-mail" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-mail ou telefone" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "É preciso verificar seu e-mail ou telefone novamente" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "É preciso verificar seu e-mail novamente" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-mail indisponível" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "A atualização de e-mail não está disponível no momento. Tente novamente mais tarde ou entre em contato com o suporte." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Atualização de e-mail necessária" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Envie um e-mail para nós e uma pessoa analisará sua conta. Informe que você não consegue verificar por SMS e nós cuidaremos do resto. As respostas chegam por e-mail, então não é instantâneo." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Barra de notificação de verificação de e-mail" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Verificação de e-mail necessária" @@ -13675,6 +13574,10 @@ msgstr "Substituir verificação de e-mail" msgid "Email verified successfully" msgstr "E-mail verificado com sucesso" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Os e-mails para seu endereço atual não estão sendo entregues. Insira um novo e-mail e enviaremos um código para lá." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Conteúdo incorporado" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Conteúdo incorporado ocultado" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Conteúdo incorporado reativado" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Ativar reprodução de fala /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Ative a autenticação de dois fatores na sua conta para alterar esta configuração" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Insira uma URL ou um código de modelo válido do {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Insira um endereço de e-mail válido." @@ -14298,33 +14199,11 @@ msgstr "Insira um endereço de e-mail válido." msgid "Enter a valid message link." msgstr "Insira um link de mensagem válido." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Insira um número de celular válido." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Insira um número de telefone válido" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Insira um nome de usuário válido ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Insira um endereço de e-mail ao qual você tenha acesso. Enviaremos um código para ele." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Inserir código" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Entrar em tela cheia" msgid "Enter gift code…" msgstr "Insira o código do presente…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Insira o novo e-mail" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Insira um dos seus códigos de recuperação se não conseguir usar sua msgid "Enter one of your backup codes." msgstr "Insira um dos seus códigos de recuperação." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Insira o telefone" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Insira o código de {digitCount} dígitos do seu aplicativo autenticador msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Insira o código de {digitCount} dígitos do seu aplicativo autenticador." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Insira o código de {digitCount} dígitos enviado para {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Insira o código de {MFA_CODE_DIGIT_COUNT} dígitos enviado para {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Insira o código" @@ -14408,11 +14267,6 @@ msgstr "Insira o código antes de continuar." msgid "Enter the code from your authenticator app." msgstr "Insira o código do seu app autenticador." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Insira o código enviado para {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Insira o código enviado para seu e-mail atual." @@ -14426,6 +14280,7 @@ msgstr "Digite o código enviado para o seu e-mail." msgid "Enter the code shown in the app to continue." msgstr "Insira o código exibido no aplicativo para continuar." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Digite o código que enviamos para seu novo endereço de e-mail." @@ -14434,11 +14289,6 @@ msgstr "Digite o código que enviamos para seu novo endereço de e-mail." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Insira o código que enviamos para seu e-mail para verificá-lo. Sua senha será definida assim que o código for confirmado." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Insira o código do e-mail" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Insira o link de convite para entrar em uma comunidade." @@ -14452,11 +14302,6 @@ msgstr "Insira o novo e-mail que você quer usar. Enviaremos um código para lá msgid "Enter the PIN for your security key to continue." msgstr "Digite o PIN da sua chave de segurança para continuar." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Insira o código SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Insira este código no seu navegador para concluir o login." @@ -14492,11 +14337,6 @@ msgstr "Digite seu nome" msgid "Enter your password." msgstr "Digite sua senha." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Insira seu número de telefone" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Som de entrada" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "O arquivo de som de entrada deve ter no máximo {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Biblioteca de sons de entrada cheia" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Som de entrada removido" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Som de entrada salvo" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Sons de entrada" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Sons de entrada indisponíveis" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Expira:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Configuração do filtro de conteúdo explícito" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Falha ao copiar para a área de transferência" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Não foi possível criar o webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Não foi possível carregar a URL personalizada. Tente novamente." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Não foi possível carregar os webhooks" @@ -15190,11 +15030,6 @@ msgstr "Falha ao remover a URL personalizada. Tente novamente." msgid "Failed to resend code. Try again." msgstr "Falha ao reenviar o código. Tente novamente." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Falha ao reenviar o código de verificação. Tente novamente mais tarde." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Não foi possível enviar a mensagem. Segure para ver as opções." msgid "Failed to send report. Try again." msgstr "Não foi possível enviar a denúncia. Tente novamente." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Falha ao enviar e-mail de verificação. Tente novamente mais tarde." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Falha ao iniciar" @@ -15551,15 +15381,15 @@ msgstr "Filtrar por usuário" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtrar todos" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtrar membros sem cargos" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Seguir este canal" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Siga para receber estes anúncios em um canal de sua escolha." @@ -15773,7 +15603,7 @@ msgstr "Canal seguido {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Canais seguidos" @@ -15857,11 +15687,6 @@ msgstr "Apenas para britânicos..." msgid "For me" msgstr "Para mim" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Para esta verificação, você nos envia uma mensagem de texto em vez de receber uma nossa." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Para sua segurança, confirme que é você para continuar." @@ -15905,7 +15730,7 @@ msgstr "Forçar esqueleto de carregamento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forçar mídia adulta" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Forçar mudança para o canal de ausência" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Forçar sem a permissão {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Forçar exibição do aviso de URL personalizada" msgid "Force show voice connection" msgstr "Forçar exibição da conexão de voz" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Forçar modo lento ativo" @@ -16020,7 +15845,7 @@ msgstr "Encaminhar mídia" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Encaminhar mensagem" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Sobreposição de bloqueio geográfico" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Com restrição geográfica" @@ -16490,12 +16315,6 @@ msgstr "Obtenha um avatar e banner animados, um selo de assinante, a tag de quat msgid "Get monthly" msgstr "Assinar mensalmente" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Obter novo código" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Códigos de presente" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Duração do presente" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventário de presentes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Fluxo de inventário de presentes" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Presente não encontrado" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Presente resgatado" @@ -17030,7 +16849,7 @@ msgstr "Conversa em grupo" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Olá, {displayName}, reivindique sua conta para não perder o acesso." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Olá, {displayName}, por favor, verifique seu endereço de e-mail." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Ei {displayName}, não conseguimos entregar e-mails no seu endereço. Adicione um e-mail válido para verificar sua conta." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Ocultar sua própria tela compartilhada?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Alta" @@ -17755,11 +17579,6 @@ msgstr "Eu sou uma dica de ferramenta" msgid "I changed my mind" msgstr "Mudei de ideia" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Preciso de outra forma" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Se esta denúncia é sobre uma mensagem específica, denuncie a mensagem msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Se esta denúncia é sobre mensagens específicas, denuncie a mensagem mais relevante. Denúncias de mensagens dão à nossa equipe de segurança o contexto mais claro, e adicionar detalhes nos comentários pode nos ajudar a analisar mais rápido. Só continue com a denúncia do usuário como um todo se denunciar uma mensagem não abranger o problema maior." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Se não conseguir verificar por SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Se você não conseguir usar nenhum método de verificação, entre em contato com o suporte para obter ajuda." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Tamanho da interface" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Arquivo de áudio inválido" @@ -18674,8 +18483,10 @@ msgstr "JSON inválido. Cole a resposta completa da URL acima." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Entrar na chamada de voz" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Entrar no canal de voz" @@ -19613,16 +19424,6 @@ msgstr "Saiba mais sobre o Visionary" msgid "Leave" msgstr "Sair" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Sair de {count, plural, =0 {# comunidades} one {# comunidade} other {# comunidades}} e adiar esta verificação?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Sair e deixar de lado" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Permitir que leitores de tela anunciem novas mensagens assim que elas chegam no canal aberto. Os sons de notificação não serão afetados." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Deixar a comunidade se moderar" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Biblioteca" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Biblioteca cheia (máx. de {max} sons). Exclua um antes de adicionar outro." @@ -19812,7 +19613,7 @@ msgstr "Biblioteca: {count} de {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Vitalício" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Carregando..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Carregando…" @@ -20261,7 +20062,7 @@ msgstr "Luisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Baixa" @@ -20416,7 +20217,7 @@ msgstr "Gerenciar recursos da comunidade" msgid "Manage emoji & stickers" msgstr "Gerenciar emojis e figurinhas" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Gerencie webhooks de entrada que podem publicar mensagens neste canal." @@ -20514,7 +20315,7 @@ msgstr "Marcar todos os canais não lidos da caixa de entrada como lidos imediat msgid "Mark as read" msgstr "Marcar como lida" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Marcar como resgatado" @@ -20676,14 +20477,14 @@ msgstr "Comunidade adulta" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Conteúdo adulto" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Conteúdo adulto e avisos de conteúdo" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Tempo máximo de vida (dias)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Proteção máxima para espaços familiares" @@ -20924,7 +20725,7 @@ msgstr "Parar reprodução" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Membro desbanido" msgid "Member updated" msgstr "Membro atualizado" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Verificação de membros" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Nível de verificação de membros" @@ -21048,7 +20849,7 @@ msgstr "Membros são removidos quando offline, a menos que recebam um cargo." msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Membros com \"{pinMessagesPermissionLabel}\" podem fixar mensagens para todos." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Membros com cargos podem ignorar essas verificações. Para espaços públicos, recomendamos ativar a verificação." @@ -21153,7 +20954,7 @@ msgstr "As menções a você aparecem aqui por {retentionDays} dias." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Somente menções" @@ -21292,7 +21093,7 @@ msgstr "As configurações de exibição de mensagens estão disponíveis apenas msgid "Message editing" msgstr "Edição de mensagem" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Mensagem encaminhada" @@ -21341,7 +21142,7 @@ msgstr "Botões de entrada de mensagem" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "A mensagem é muito longa" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Prévias de mensagens na lista de conversas por mensagem direta" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Mensagem publicada" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Mensagens publicadas em #{sourceName} agora aparecerão em #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Mensagens publicadas nestes canais de anúncio são copiadas aqui." @@ -21504,7 +21305,7 @@ msgstr "Mensagens publicadas nestes canais de anúncio são copiadas para os seu msgid "Messages you can bookmark" msgstr "Mensagens que você pode marcar" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "O envio de mensagens está temporariamente pausado nesta comunidade." @@ -21733,30 +21534,30 @@ msgstr "Simular expiração em 1 dia" msgid "Mock expires in 7 days" msgstr "Simular expiração em 7 dias" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Simular sobreposição de bloqueio geográfico" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Simular inventário de presentes" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simular chamada recebida" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Simular motivo de bloqueio de canal de conteúdo adulto" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Simular motivo de bloqueio de mídia de conteúdo adulto" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Simular localização no Reino Unido" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Avatares de usuários simulados em vários tamanhos e em todas as combinações de status." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Simular variante" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Fluxos de produto simulados" @@ -22698,14 +22494,16 @@ msgstr "Comunidade nova silenciada" msgid "New direct message" msgstr "Nova mensagem direta" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Novo e-mail" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formulário de novo e-mail" @@ -22816,9 +22614,7 @@ msgstr "Mais recentes primeiro" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Próximo" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Não" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Sem a permissão {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Sem a permissão {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Nenhuma alteração para salvar" msgid "No channels available" msgstr "Nenhum canal disponível" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Nenhum canal encontrado" @@ -23233,11 +23029,6 @@ msgstr "Nenhuma permissão encontrada" msgid "No personal words yet." msgstr "Nenhuma palavra adicionada ao dicionário ainda." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Sem número de telefone" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Nenhum resultado" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Nenhum resultado encontrado" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Nenhum usuário encontrado" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Nenhuma verificação é necessária." @@ -23452,7 +23243,7 @@ msgstr "Nenhuma verificação é necessária." msgid "No verification methods available" msgstr "Nenhum método de verificação disponível" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Nenhum webhook" @@ -23504,7 +23295,7 @@ msgstr "Não converter" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Nenhuma" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Nenhum (comportamento normal)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norueguês" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Não é membro há tempo suficiente" @@ -23798,9 +23589,9 @@ msgstr "Objetos" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Desativado" @@ -23848,7 +23639,7 @@ msgstr "Mais antigos primeiro" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Ativado" @@ -23884,11 +23675,6 @@ msgstr "Não foi possível ler ou enviar um ou mais anexos. O arquivo pode ter s msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Um ou mais arquivos que você está tentando enviar excedem o limite máximo de {maxSizeFormatted} por arquivo." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Só uma verificação rápida" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Apenas alto-falantes" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Apenas o proprietário da comunidade pode alterar esta configuração" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Abrir emoji no navegador" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Abrir seletor de emojis" @@ -24382,12 +24168,8 @@ msgstr "Ícone de abrir menu" msgid "Open message history threshold" msgstr "Abrir data de corte do histórico de mensagens" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Abrir sobreposição" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Abrir menu suspenso" @@ -24485,11 +24267,6 @@ msgstr "Abra o novo app. Você já está conectado." msgid "Open the shortcuts list for quick actions." msgstr "Abra a lista de atalhos para ações rápidas." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Abra o e-mail de verificação e use o link. Esta janela será atualizada depois que o link for aberto." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Abrir configurações de voz e vídeo" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Abra seu navegador, faça login e insira o código abaixo para vincular sua conta." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Abra suas mensagens" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Abra seu app antigo do {PRODUCT_NAME} e escolha \"Vincular um novo dispositivo\", depois insira o código abaixo." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Abra o app de mensagens do seu celular e crie uma nova mensagem de texto." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Abra o aplicativo de mensagens do celular e comece uma nova mensagem de texto." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Outra reação…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Nosso serviço de verificação de número de telefone está indisponível no momento. A falha é nossa, não do seu número. Aguarde alguns minutos e tente o mesmo número novamente." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, fraude, links maliciosos ou alegações falsas com potencial de causar danos no mundo real." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefone" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Número de telefone" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Número de telefone é obrigatório" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Número de telefone verificado" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "É preciso verificar seu telefone novamente" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Etapa do telefone" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "A verificação por telefone não está disponível para esta conta. Use outro método ou entre em contato com o suporte." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Verificação de telefone necessária" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Escolha o número de 4 dígitos após seu nome de usuário" msgid "Pick the appearance this administrator account should start with." msgstr "Escolha a aparência que esta conta de administrador deve ter inicialmente." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Escolha o método que você pode concluir agora." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Janela flutuante (picture-in-picture)" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Fixar" @@ -25471,7 +25176,7 @@ msgstr "Fixar conversa em grupo" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Fixar ou desafixar qualquer mensagem." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Fixar esta mensagem no canal para que todos possam ver." @@ -26227,18 +25932,18 @@ msgstr "Cor do perfil" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Personalização do perfil" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Personalização de perfil para {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formulário de personalização do perfil" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Tipo de perfil" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Perfil atualizado" @@ -26340,7 +26045,7 @@ msgstr "Perguntar sobre novos dispositivos de áudio" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Coordenação de ataques em massa" msgid "Rate" msgstr "Velocidade" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Limite de solicitações atingido" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "JSON bruto do conteúdo incorporado" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Remover {userName} dos seus amigos?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Remover tudo" @@ -27290,7 +26990,7 @@ msgstr "Remover todas as reações {emojiNameWithColons} desta mensagem?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Remover todas as reações" @@ -27899,20 +27599,10 @@ msgstr "Tag do usuário denunciado (opcional)" msgid "Reposts: <0>{countLabel}" msgstr "Republicações: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Primeiro, solicite um novo código." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Solicitar um novo link para redefinir a senha" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Solicite um código de verificação primeiro." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Solicitações" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Exigir 2FA para ações de moderação" @@ -27958,7 +27648,7 @@ msgstr "Exigir concessão de código OAuth2" msgid "Require passkey" msgstr "Exigir chave de acesso" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Exigir autenticação de dois fatores para que moderadores possam banir, expulsar, suspender temporariamente ou remover mensagens." @@ -27972,46 +27662,6 @@ msgstr "Obrigatório" msgid "Required 2FA for moderation actions" msgstr "Exigiu 2FA para ações de moderação" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Aba padrão de ação obrigatória" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Fluxo de ação obrigatória" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Etapa de telefone da ação obrigatória" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Carregamento do reenvio na ação obrigatória" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Resultado do reenvio na ação obrigatória" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Texto de reverificação de ação obrigatória" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Variante da ação obrigatória" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Sobreposição de ações obrigatórias" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Requer um URI de redirecionamento e um código de autorização ao convidar este bot." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Exige um endereço de e-mail verificado e uma conta criada há pelo menos 5 minutos." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Exige um endereço de e-mail verificado." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Exige um número de telefone verificado." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Exige tudo do nível médio, além de ser membro da comunidade há pelo menos 10 minutos." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Reenviar ({resendSecondsRemaining}s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Reenviar ({secondsRemaining}s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Botão de reenviar carregando" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Reenviar código" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Reenviar e-mail" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Resultado do reenvio" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Reenviado" @@ -28518,21 +28152,6 @@ msgstr "Mostrar" msgid "Reveal spoiler" msgstr "Mostrar spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Verifique seu e-mail novamente ou verifique seu telefone para continuar usando o {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Verifique seu e-mail novamente para continuar usando o {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Verifique seu número de telefone novamente para continuar usando o {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Saturação" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Prévia ao percorrer o vídeo" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Buscar canais" msgid "Search communities" msgstr "Buscar comunidades" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Pesquisar países..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Pesquisar países…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Selecione seu país de residência." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Selecionar…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Enviar" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Enviar ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Enviar outra denúncia" msgid "Send button" msgstr "Botão de enviar" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Enviar código" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Enviar mensagens" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Envio de mensagens desativado" @@ -30151,32 +29759,11 @@ msgstr "Enviar mídia salva {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Enviar mensagens de texto para fala com /tts. Os membros que ativaram esse recurso ouvirão as mensagens lidas em voz alta." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Enviar o código <0>{0} para <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Envie o código para o número de telefone abaixo." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Enviar este código" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Enviar este item fixado de volta no tempo?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Enviar para" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Enviar mensagem de voz" msgid "Send:" msgstr "Enviar:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Enviar um SMS para este número de telefone é muito caro para o {PRODUCT_NAME}, então precisamos que você nos envie um SMS. Sabemos que isso não é o ideal. Você também pode pedir aos administradores desta instância que removam essa exigência da sua conta." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Enviar um SMS para este número de telefone é muito caro para o {PRODUCT_NAME}, então precisamos que você nos envie um SMS. Sabemos que isso não é o ideal. Você também pode entrar em contato com <0>{SUPPORT_EMAIL} para que removamos essa exigência da sua conta." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Envio em série" msgid "Serve the token file" msgstr "Disponibilizar o arquivo do token" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Erro no serviço" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Definir atalho personalizado para \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Definir status personalizado" @@ -30486,18 +30060,6 @@ msgstr "Definiu a região de voz para {region}" msgid "Set the voice region to automatic" msgstr "Definiu a região de voz como automática" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Adiar esta verificação" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Adiar esta verificação?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Defina seus pronomes" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Definir seu status" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Os atalhos ficam pausados durante a gravação." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Encurte a mensagem e tente novamente." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Mostrar um ícone do {productName} na bandeja do sistema ou barra de menus" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Mostrar aviso de conteúdo" @@ -31672,7 +31234,7 @@ msgstr "Modo lento · aguarde {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Modo lento ativado" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "O modo lento está definido como {durationLabel}. Aguarde antes de enviar outra mensagem." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Tempo restante do modo lento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulação de modo lento" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Tempo restante do modo lento" @@ -31807,11 +31369,6 @@ msgstr "Rolagem suave" msgid "Smoother video" msgstr "Vídeo mais fluido" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "A verificação por SMS está indisponível no momento. Tente novamente mais tarde ou entre em contato com o suporte." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Algo deu errado ao preparar esta figurinha. Tente outro arquivo ou tente novamente em alguns instantes." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Algo deu errado ao publicar. Tente novamente em um momento." @@ -32009,11 +31566,9 @@ msgstr "Algo deu errado. Recarregue a página ou entre novamente." msgid "Something went wrong. Try again later." msgstr "Algo deu errado. Tente novamente mais tarde." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Algo deu errado. Tente novamente." @@ -32352,11 +31907,6 @@ msgstr "O login SSO expirou. Tente novamente." msgid "Staff controls" msgstr "Controles da equipe" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Sua operadora pode cobrar as tarifas habituais de mensagens." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Animação de estrela" msgid "Starred channels" msgstr "Canais favoritos" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Transporte do assinante:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Assinatura" @@ -33051,14 +32599,12 @@ msgstr "Cenários de assinatura" msgid "Subtext" msgstr "Subtexto" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Sucesso" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Sugerido para a maioria das comunidades" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Sistema e boas-vindas" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Comunicados do sistema da equipe {productName}. Não é possível responder aqui." @@ -33765,11 +33311,6 @@ msgstr "Seleção de texto" msgid "Text size" msgstr "Tamanho do texto" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Envie-nos uma mensagem do seu telefone" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Tailandês" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Obrigado por ajudar a manter o {productName} seguro. Analisaremos sua denúncia o mais rápido possível." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Esse código não funcionou. Verifique e tente novamente." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Esse código expirou. Solicite um novo código." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "A ação não foi concluída. Você pode já ter saído de algumas comunidades, e sua conta continua bloqueada. Pressione \"Adiar esta verificação\" novamente para concluir." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Não foi possível. Nada mudou. Tente novamente." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Essa cor não parece válida. Tente usar hexadecimal, rgb(), hsl() ou um msgid "That doesn't look like a valid URL." msgstr "Parece que este não é um URL válido." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Este e-mail já está em uso." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "A substituição negava {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "A página que você está procurando não existe ou foi movida." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "A verificação do telefone foi adiada. Falta uma etapa por e-mail." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Não há canais disponíveis para criar um convite." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Não há cargos para atribuir nesta comunidade no momento, mas você pode criar um novo cargo em <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Não há webhooks configurados para este canal. Crie um webhook para permitir que aplicativos externos publiquem mensagens." @@ -34273,7 +33784,7 @@ msgstr "Ocorreu um erro ao carregar os convites. Tente novamente." msgid "There was an error loading the stickers. Try again." msgstr "Ocorreu um erro ao carregar as figurinhas. Tente novamente." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Ocorreu um erro ao carregar os webhooks deste canal. Tente novamente." @@ -34417,7 +33928,7 @@ msgstr "Este canal pode publicar 10 mensagens seguidas, e mais uma a cada 6 minu msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Este canal pode publicar 10 mensagens seguidas, e mais uma a cada 6 minutos. Tente novamente em alguns minutos." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Este canal não aceita webhooks." @@ -34550,12 +34061,12 @@ msgstr "Esta conexão não foi verificada." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Isto contém conteúdo sensível." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Esta conversa não está mais disponível." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Este grupo tem pessoas demais" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Este grupo está cheio. Remova alguém antes de adicionar mais pessoas." @@ -34715,11 +34226,6 @@ msgstr "Este é um adesivo personalizado de uma comunidade." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Este é um canal com restrição de idade. As atualizações só podem ir para canais com restrição de idade." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Esta é uma verificação antispam. Seu número de telefone não está vinculado à sua conta." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Isto está desativado" msgid "This is how messages appear" msgstr "É assim que as mensagens aparecem" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Isso não está disponível para sua conta no momento. Peça aos administradores desta instância que analisem." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "No momento, isso não está disponível na sua conta. Envie um e-mail para {supportEmail} e alguém analisará." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Este não é o canal que você está procurando." @@ -34792,11 +34288,6 @@ msgstr "Esta é sua última chave de acesso, e as chaves de acesso são seu segu msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Esta é sua última chave de acesso. Depois que ela for removida, você não poderá mais usar uma chave de acesso como seu segundo fator." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Este não é um número de celular, então não pode receber nossos SMS. Tente um número de celular ou entre em contato com o suporte se achar que isso está incorreto." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Esta mensagem já foi excluída." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Esta mensagem já foi publicada" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Esta mensagem não existe mais." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Este apelido só ficará visível nesta comunidade" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Este número é verificado enviando uma mensagem de texto para nós. Volte e inicie a verificação por telefone novamente para obter o código e o número para enviar a mensagem." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Para verificar este número, você precisa nos enviar um SMS em vez de receber um nosso." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Este participante está com o áudio desativado" msgid "This participant was deafened by moderators" msgstr "Os moderadores desativaram o áudio deste participante" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Este número de telefone não pode ser usado. Tente outro número de celular ou entre em contato com o suporte." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Este número de telefone já foi usado. Tente outro número ou entre em contato com o suporte." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Este usuário não tem cargos nesta comunidade." msgid "This user is already banned from the community." msgstr "Este usuário já foi banido da comunidade." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Este usuário não está mais disponível." @@ -35065,11 +34536,6 @@ msgstr "Este usuário foi adicionado diretamente a esta comunidade por um admini msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Esta sessão de verificação expirou. Volte para o {productName} e inicie a compra novamente." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Esta sessão de verificação expirou. Comece novamente." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Isso encerrará sua sessão, limpará os arquivos em cache e as sessões msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Isso fará com que todos os links externos sejam confiáveis e pulará o aviso para todos os domínios. Seus domínios confiáveis existentes serão substituídos. Isso é menos seguro." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Esta janela é atualizada automaticamente depois que recebemos sua mensagem." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Barra de título" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Plataforma da barra de título" @@ -35470,18 +34931,11 @@ msgstr "Mapeamento de tons" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Mapeie imagens HDR para o intervalo padrão, reduzindo o pico de brilho." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Muitas tentativas. Espere um pouco e tente novamente." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Comunidades demais" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Muitas solicitações. Tente novamente mais tarde." @@ -36151,8 +35605,10 @@ msgstr "Não foi possível preparar nenhum emoji para upload. Ocorreram os segui #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Indisponível" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Não categorizado" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Conta não reivindicada" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Sem ordem" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Desafixar" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Desafixar mensagem" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Desafixar esta mensagem?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Alterações não salvas" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Arquivo de áudio não suportado." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Até eu ativar novamente" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "E-mail não verificado" @@ -36958,12 +36414,7 @@ msgstr "Atualize o {productName} para ver esta mensagem." msgid "Update app" msgstr "Atualizar app" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Atualizar e-mail" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Atualizar meu status" @@ -37306,18 +36757,13 @@ msgstr "Use {url} onde o URL da imagem deve ser inserido." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Use uma janela específica para definir a data de corte do histórico de mensagens para membros que não têm a permissão {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Use um endereço de e-mail diferente e verifique-o com um código." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Usar real" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Usar tipo premium real" @@ -37335,16 +36781,6 @@ msgstr "Usar outro método" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Use um app autenticador para gerar códigos para a autenticação de dois fatores" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Use um endereço de e-mail ao qual você tenha acesso. Enviaremos um código para ele." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Use um e-mail diferente do seu atual." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Usar tema escuro em todo o aplicativo" msgid "Use default" msgstr "Usar padrão" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Usar outro e-mail" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Usar e-mail" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Usar chaves de acesso para autenticação de dois fatores?" msgid "Use passkeys to sign in without a password" msgstr "Use chaves de acesso para entrar sem senha" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Usar telefone" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Usar texto de reverificação" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Usuário muda de canal" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Usuário não encontrado" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Verificação" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Verificação e requisitos para participação" @@ -37970,15 +37387,8 @@ msgstr "Código de verificação" msgid "Verification code sent" msgstr "Código de verificação enviado" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Código de verificação enviado. Verifique sua nova caixa de entrada de e-mail." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "E-mail de verificação enviado. Verifique sua caixa de entrada." @@ -38038,23 +37448,6 @@ msgstr "Formulário de verificação de identidade" msgid "Verify it's you" msgstr "Verifique sua identidade" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Verificar telefone" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Verificar número de telefone" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formulário de verificação do número de telefone" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Verifique seu e-mail antes de adicionar um aplicativo autenticador." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Verifique seu e-mail antes de mudar seu apelido da comunidade, avatar, banner, biografia, pronomes ou cor de destaque." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Verifique seu e-mail antes de alterar seu nome de usuário, nome de exibição, avatar, banner, biografia, pronomes, fuso horário ou privacidade do selo {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Verifique seu e-mail antes de editar seu perfil nesta comunidade. Você ainda pode ver uma prévia aqui." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Verifique seu e-mail antes de editar seu perfil. Você ainda pode pré-visualizá-lo aqui." @@ -38113,11 +37506,6 @@ msgstr "Verifique seu e-mail antes de enviar pedidos de amizade." msgid "Verify your email first" msgstr "Verifique seu e-mail primeiro" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Verifique seu e-mail ou telefone para continuar usando o {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Verifique seu e-mail para comprar presentes." msgid "Verify your email to change your username" msgstr "Verifique seu e-mail para mudar seu nome de usuário" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Verifique seu e-mail para continuar usando o {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Verifique seu e-mail para editar seu perfil nesta comunidade" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Verifique seu e-mail para editar seu perfil" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Versão" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Muito alta" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Aumentar volume" msgid "Wait a moment before deleting more messages." msgstr "Aguarde um momento antes de excluir mais mensagens." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Aguarde um momento. Esta janela fechará automaticamente assim que recebermos sua mensagem." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Intervalo entre mensagens. Membros com a permissão \"{bypassSlowmodePermissionLabel}\" podem ignorá-lo." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Aguarde" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Aguardando a chave de acesso…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Aguardando o modo lento em {forwardChannelDisplayName} expirar." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Aguardando o modo lento expirar em um ou mais canais selecionados." @@ -39115,16 +38482,6 @@ msgstr "Não conseguimos ler este tema. Ele pode estar corrompido ou ser inváli msgid "We couldn't remove that account. Try again." msgstr "Não foi possível remover essa conta. Tente novamente." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Não foi possível verificar este número automaticamente. Entre em contato com o suporte e uma pessoa analisará sua conta." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Não enviamos SMS de verificação para este país. Tente um número de celular de outro país ou entre em contato com o suporte." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Encontramos uma assinatura {premiumProductFullName} existente para esta msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Reduzimos o preço do {premiumProductName} no Brasil. Agora custa {monthlyPrice} por mês ou {yearlyPrice} por ano." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Precisamos de uma etapa de verificação antes que você continue. Isso ajuda a proteger as contas e a manter o spam longe do {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Precisamos de duas etapas de verificação antes de você continuar. Mostraremos uma etapa por vez." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Recomendamos que você salve esses códigos agora para não perder o acesso à sua conta." @@ -39167,11 +38514,6 @@ msgstr "Enviamos um código para {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Vamos preencher automaticamente {prefillEmail} assim que o login no navegador abrir." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Enviaremos um código por SMS quando disponível." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Adoraríamos dar a você mais do que uma vida inteira de {PREMIUM_PRODUCT_NAME}, mas isso quebraria o contínuo espaço-tempo. Que tal enviar o presente para um amigo?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Processaremos isso o mais rápido possível. Você receberá um e-mail quando seu arquivo estiver pronto." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Vamos restaurar seu e-mail anterior, desconectar sessões antigas, remover números de telefone, desativar a MFA e proteger sua conta com uma nova senha." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Restauraremos seu e-mail anterior, encerraremos sessões antigas, desativaremos a MFA e protegeremos sua conta com uma nova senha." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Enviaremos um código de verificação para seu e-mail antes que você p msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Enviaremos um código de verificação para seu e-mail antes que você possa ver seus códigos de recuperação." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Enviaremos um código por SMS quando estiver disponível. Seu número não está vinculado à sua conta. Mantemos apenas um marcador criptografado, sem ID de usuário, por tempo limitado." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Vamos verificar seu e-mail atual e depois o novo com códigos de uso único." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook criado" @@ -39331,7 +38669,7 @@ msgstr "Webhook atualizado" msgid "Webhook URL" msgstr "URL do webhook" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooks" @@ -39486,8 +38824,8 @@ msgstr "O que você está compartilhando não está atualizando" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "O que está acontecendo?" @@ -39967,21 +39305,11 @@ msgstr "Você pode remover a permissão <0>{readMessageHistoryPermissionLabel} continua msgid "Your account" msgstr "Sua conta" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Sua conta volta ao normal imediatamente e você não precisará de um número de telefone agora. Esta não é uma isenção permanente e podemos solicitar essa verificação novamente mais tarde." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Sua conta foi vinculada com sucesso. Agora você pode fechar esta aba e voltar para o aplicativo." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Sua conta voltou ao normal." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Sua conta está limitada" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Sua conta está limitada. Verifique seu e-mail para saber como removê-la." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Sua conta ainda não foi reivindicada. Sem um e-mail e senha, você não conseguirá fazer login em outros aparelhos e poderá perder o acesso à sua conta. Reivindique sua conta agora para protegê-la." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Sua conta é muito nova para enviar mensagens nesta comunidade." @@ -40800,11 +40099,6 @@ msgstr "Sua conta exige autenticação multifator, mas nenhum método compatíve msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Sua conta não estará mais protegida pela autenticação de dois fatores ao fazer login com sua senha. Você também perderá permissões elevadas em comunidades que exigem autenticação de dois fatores." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Sua conta volta a funcionar normalmente na hora e nada é removido. Podemos pedir essa verificação novamente mais tarde." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Seu cartão está sendo verificado para os preços regionais. Isso geral msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Seu cartão é elegível. Redirecionando para a página de pagamento." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Sua operadora informa que este número não está em serviço. Verifique-o e tente novamente, ou entre em contato com o suporte se estiver correto." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Suas alterações chegam a todas as comunidades que seguem este canal e podem levar um minuto. Cada mensagem publicada permite 3 edições rápidas, depois 1 a cada 20 minutos." @@ -40869,21 +40158,6 @@ msgstr "Seu dispositivo pedirá para salvar uma chave de acesso atualizada para msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Seu dispositivo pedirá para salvar uma chave de acesso atualizada para {name}. Use o mesmo telefone ou chave de segurança que você acabou de usar." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Seu e-mail foi atualizado." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Seu e-mail não pôde receber mensagens. Adicione um e-mail que funcione para que possamos entrar em contato com você." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Não foi possível receber mensagens no seu e-mail. Atualize-o para continuar usando o {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Seu e-mail foi verificado. Agora você pode entrar na sua conta." @@ -41000,21 +40274,11 @@ msgstr "Sua mensagem não foi atualizada" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Sua compra mais recente não está mais dentro do período de reembolso. Entre em contato com o suporte para problemas de cobrança." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "seu novo e-mail" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Seu novo apelido, ou deixe em branco para redefinir." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Seu número não está vinculado à sua conta. Mantemos apenas um marcador criptografado, sem ID de usuário, por tempo limitado." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Seu pagamento foi cancelado. Você já pode fechar esta aba e voltar para o aplicativo." @@ -41054,11 +40318,6 @@ msgstr "Seus presentes comprados" msgid "your region" msgstr "sua região" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Seu cadastro precisa de uma verificação antispam extra antes de você continuar." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/ro/messages.po b/fluxer_app/src/features/i18n/locales/ro/messages.po index 0d17c7f7e..9ef216f90 100644 --- a/fluxer_app/src/features/i18n/locales/ro/messages.po +++ b/fluxer_app/src/features/i18n/locales/ro/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reacție} few {# reacții} other {# de reacții}} msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# persoană} few {# persoane} other {# de persoane}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# secundă} few {# secunde} other {# de secunde}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} la {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Linkul tău de invitație expiră în # secundă.} few {Linkul tău de invitație expiră în # secunde.} other {Linkul tău de invitație expiră în # de secunde.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Selectate: {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 minut" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 ore" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 luni (1 an)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Backup 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Cerință 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 membri (scriu)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 luni" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 ore" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 luni" @@ -2575,11 +2575,6 @@ msgstr "un minut" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Este disponibilă o nouă versiune pentru desktop. Descarcă programul de instalare și rulează-l pentru a actualiza {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "A fost trimis un nou cod de verificare." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Date cont" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Contul există pentru spam, înșelătorii sau abuzuri pe platformă." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Cont limitat" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Stare cont" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Contul este prea nou" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Verificarea contului este necesară" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Adaugă un bot într-o comunitate cu permisiunile solicitate" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Adaugă un comentariu (opțional)" @@ -3054,8 +3052,10 @@ msgstr "Adaugă un subiect acestui canal" msgid "Add a word…" msgstr "Adaugă un cuvânt…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Adaugă o adresă de e-mail funcțională" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Adaugă un cont pentru a continua." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Adaugă mai întâi o adresă de e-mail și o parolă la contul tău." @@ -3424,11 +3424,6 @@ msgstr "Adăugat: {createdDate} • ultima utilizare: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Comentarii suplimentare (opțional)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Verificare suplimentară necesară" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Toate limbile" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Anulare deja programată" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Raportează acest mesaj și echipei de siguranță {productName}" @@ -4713,11 +4708,6 @@ msgstr "Solicită confirmare înainte de a iniția apeluri" msgid "Ask for a passkey after your password when you sign in" msgstr "Solicită o cheie de acces după parolă atunci când te conectezi" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Cere administratorilor acestei instanțe să-ți verifice contul. Această instanță este administrată independent și doar administratorii ei îți pot modifica contul." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Elimină automat parametrii de urmărire (precum utm_source, fbclid, gcl msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Elimină automat parametrii de urmărire din URL-urile mesajelor pe care le trimiți" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Filtrează automat mesajele cu conținut explicit în canalele care nu sunt marcate pentru conținut matur." @@ -5359,8 +5349,6 @@ msgstr "Plecat acum" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Înapoi" @@ -6506,11 +6494,6 @@ msgstr "Camerele și dispozitivele de captură virtuală sunt selectate aici în msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Camerele sunt dezactivate peste {voiceChannelCameraUserLimit} participanți" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Nu poți accesa acel e-mail?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Nu se pot încărca fișiere aici" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Nu se pot încărca fișiere aici" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Schimbă adresa de e-mail" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Schimbă emoji-ul" @@ -7201,7 +7184,7 @@ msgstr "A modificat limita de utilizatori de la {oldCount} la {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "A modificat URL-ul personalizat de la {oldCode} la {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "A modificat nivelul de verificare de la {oldLevel} la {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Canal sau categorie" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Suprascrieri permisiuni canal" @@ -7509,8 +7492,6 @@ msgstr "Verifică-ți conexiunea și încearcă din nou." msgid "Check your connection, then try again." msgstr "Verifică-ți conexiunea, apoi încearcă din nou." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Alege un ecran din selectorul sistemului tău" msgid "Choose a GIF" msgstr "Alege un GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Alege o metodă" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Alege o parolă nouă." @@ -7680,8 +7656,8 @@ msgstr "Alege o acțiune." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Alege un emoji" @@ -7749,11 +7725,6 @@ msgstr "Alege cum funcționează instanța ta" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Alege una dintre metodele de mai jos pentru a dovedi că deții domeniul. Trebuie să finalizezi doar una." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Alege o metodă de verificare. Oricare dintre ele poate șterge această verificare." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Alege ce poate face {clientLabel} în comunitatea ta. Debifează permisi msgid "Choose what friends see in their active now panel" msgstr "Alege ce văd prietenii în panoul lor „Activ acum”" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Alege ce trebuie să aibă membrii înainte de a putea posta sau de a trimite DM-uri membrilor comunității." @@ -8030,8 +8001,8 @@ msgstr "Curăță microfonul pentru o vorbire clară." msgid "Clear" msgstr "Șterge" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Șterge după" @@ -8053,7 +8024,7 @@ msgstr "Șterge toate simulările atașamentelor" msgid "Clear all token overrides" msgstr "Șterge toate suprascrierile de tokenuri" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Șterge simulările atașamentelor" @@ -8066,14 +8037,14 @@ msgstr "Șterge comanda" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Șterge starea personalizată" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Ștergi toate reacțiile de la acest mesaj?" @@ -8124,7 +8095,7 @@ msgstr "Șterge căutarea" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Temă cărbune" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Comenzi" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Comentariile sunt dezactivate deoarece unul sau mai multe canale selectate au modul lent activat. Comentariul ar fi blocat de modul lent imediat după redirecționare." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Comentariile sunt dezactivate deoarece modul lent este activat în {forwardChannelDisplayName}. Comentariul ar fi blocat de modul lent imediat după redirecționare." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Comentariile nu sunt disponibile când modul lent este activat." @@ -8670,11 +8639,11 @@ msgstr "Comunități" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Comunitățile și canalele unde nu poți gestiona webhook-uri sunt ascunse." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Comunitățile listate în Discovery trebuie să scaneze mesajele tuturor membrilor. Această setare nu poate fi modificată cât timp Discovery este activat." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Comunitățile listate în Discovery necesită cel puțin verificarea adresei de e-mail. Opțiunea „Niciunul” nu poate fi selectată cât timp Discovery este activat." @@ -8827,7 +8796,7 @@ msgstr "Numele comunității" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Pseudonim în comunitate" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Profilul comunității" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Profilul comunității a fost actualizat" @@ -8907,7 +8876,7 @@ msgstr "Nivelul insignelor de necitit pentru comunitate" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Comunitate actualizată" @@ -8952,11 +8921,6 @@ msgstr "Comparație" msgid "Complete mature content check" msgstr "Finalizează verificarea conținutului matur" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Finalizează una dintre căile de verificare de mai jos pentru a continua să utilizezi {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Finalizează plata" msgid "Complete the mature content check to unlock mature media." msgstr "Finalizează verificarea conținutului matur pentru a debloca conținutul matur." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Finalizează pașii necesari de verificare a adresei de e-mail și a numărului de telefon de mai jos pentru a continua să utilizezi {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Finalizează verificarea necesară pentru a continua să utilizezi {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Configurează-ți insigna de profil" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Conexiuni rearanjate" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Acord necesar" @@ -9349,16 +9304,6 @@ msgstr "Construiește un URL de autorizare cu domenii și permisiuni." msgid "Contact" msgstr "Contact" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Contactează asistența" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Contactează administratorii acestei instanțe pentru ajutor." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Creator de conținut" msgid "Content filter" msgstr "Filtru de conținut" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Filtrarea conținutului" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Tipul conținutului" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Filtre de siguranță pentru conținut" @@ -9416,12 +9361,10 @@ msgstr "Meniurile contextuale pot fi deschise cu clic stânga (pe butoane) sau c #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Controlează comportamentul indicatorului de mesaje necitite pentru cana msgid "Control which chat updates are announced by assistive technology." msgstr "Controlează ce actualizări de chat sunt anunțate de tehnologia de asistență." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Conversația nu a fost găsită" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Nu s-a putut adăuga eticheta" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Nu s-a putut adăuga acest prieten în grup. Te rugăm să încerci din nou." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Nu s-a putut adăuga în grup" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Nu s-a putut crea un link pentru temă" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Nu s-a putut crea linkul de invitație" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Nu s-a putut încheia perioada de grație" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Nu s-a putut genera un link de invitație. Te rugăm să încerci din nou." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Nu s-a putut procesa imaginea" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Nu am putut publica acest mesaj" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Nu s-a putut reintra în comunitatea Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Nu s-a putut elimina sunetul de intrare" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Nu am putut salva setările canalului" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Nu s-a putut salva sunetul de intrare" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Nu s-a putut retrage cererea" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Temporizator cu numărătoare inversă" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Țara" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Creează contul de administrator" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Creezi DM-ul de grup cu {addableCount, plural, one {# destinatar rămas} few {# destinatari rămași} other {# de destinatari rămași}} și îi omiți pe ceilalți?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Creează webhook" @@ -10948,7 +10884,7 @@ msgstr "Emoji personalizat {emojiName} dintr-o comunitate" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Sunetele de intrare personalizate nu sunt activate pe această instanță." @@ -11108,7 +11044,7 @@ msgstr "Procesare voce personalizată" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Text de avertizare personalizat" @@ -11530,11 +11466,6 @@ msgstr "Motor de căutare implicit" msgid "Default shortcuts" msgstr "Comenzi rapide implicite" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Filă implicită" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Șterge acest mesaj" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Ștergi acest mesaj? Acțiunea nu poate fi anulată." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Ștergi acest mesaj? Nu poate fi anulat. Acest mesaj va fi eliminat și din fiecare comunitate care urmărește acest canal." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Mod dezvoltator" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Opțiune pentru dezvoltatori" @@ -12299,7 +12230,7 @@ msgstr "Intrare directă" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Mod de afișare" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Nume afișat" @@ -12858,7 +12789,7 @@ msgstr "Dorești să te alături la {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doc, sunt din viitor. Am venit aici într-o mașină a timpului pe care ai inventat-o. Acum, am nevoie de ajutorul tău ca să mă întorc în anul 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Editează ora locală a profilului" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Editezi mesajul publicat?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Editează-ți mesajele de deasupra sau de dedesubt" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Editează-ți aspectul profilului și vezi o previzualizare live" @@ -13590,10 +13521,8 @@ msgstr "Eligibil pentru o rambursare până la {windowEndsOn}. Aceasta îți va msgid "Email" msgstr "E-mail" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Adresa de e-mail este obligatorie." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-mail modificat" @@ -13616,49 +13547,17 @@ msgstr "E-mail modificat" msgid "Email delivery" msgstr "Livrare e-mail" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-mail sau telefon" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Este necesară reverificarea adresei de e-mail sau a numărului de telefon" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Este necesară reverificarea adresei de e-mail" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-mail indisponibil" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Actualizarea e-mailului nu este disponibilă momentan. Încearcă din nou mai târziu sau contactează asistența." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Actualizare e-mail necesară" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Trimite-ne un e-mail și o persoană îți va verifica contul. Spune-ne că nu poți verifica prin SMS și ne vom ocupa noi de restul. Răspunsurile vin prin e-mail, deci nu este instant." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Bara de notificare pentru verificarea e-mailului" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Verificarea e-mailului este necesară" @@ -13675,6 +13574,10 @@ msgstr "Suprascriere e-mail verificat" msgid "Email verified successfully" msgstr "E-mail verificat cu succes" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Emailurile la adresa curentă nu sunt livrate. Introdu o adresă nouă și vom trimite acolo un cod." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Încorporări" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Încorporări suprimate" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Încorporări reafișate" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Activează redarea vocală /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Activează autentificarea în doi pași pentru a schimba această setare" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Introdu un URL sau un cod de șablon {theOtherPlatform} valid." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Introdu o adresă de e-mail validă." @@ -14298,33 +14199,11 @@ msgstr "Introdu o adresă de e-mail validă." msgid "Enter a valid message link." msgstr "Introdu un link de mesaj valid." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Introdu un număr de telefon mobil valid." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Introdu un număr de telefon valid" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Introdu un nume de utilizator valid ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Introdu o adresă de e-mail la care ai acces. Îți vom trimite un cod acolo." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Introdu codul" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Intră în ecran complet" msgid "Enter gift code…" msgstr "Introdu codul cadou…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Introdu o adresă de e-mail nouă" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Introdu unul dintre codurile tale de rezervă dacă nu poți folosi chei msgid "Enter one of your backup codes." msgstr "Introdu unul dintre codurile tale de rezervă." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Introdu numărul de telefon" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Introdu codul de {digitCount} cifre din aplicația de autentificare sau msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Introdu codul de {digitCount} cifre din aplicația de autentificare." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Introdu codul de {digitCount} cifre trimis la {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Introdu codul de {MFA_CODE_DIGIT_COUNT} cifre trimis la {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Introdu codul" @@ -14408,11 +14267,6 @@ msgstr "Introdu codul înainte de a continua." msgid "Enter the code from your authenticator app." msgstr "Introdu codul din aplicația de autentificare." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Introdu codul trimis la {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Introdu codul trimis pe adresa ta de e-mail actuală." @@ -14426,6 +14280,7 @@ msgstr "Introdu codul trimis pe adresa ta de e-mail." msgid "Enter the code shown in the app to continue." msgstr "Introdu codul afișat în aplicație pentru a continua." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Introdu codul pe care l-am trimis prin e-mail la noua ta adresă." @@ -14434,11 +14289,6 @@ msgstr "Introdu codul pe care l-am trimis prin e-mail la noua ta adresă." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Introdu codul pe care l-am trimis pe e-mail pentru a-l verifica. Parola ta va fi setată după confirmarea codului." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Introdu codul de e-mail" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Introdu linkul de invitație pentru a te alătura unei comunități." @@ -14452,11 +14302,6 @@ msgstr "Introdu noua adresă de e-mail pe care vrei să o folosești. Îți vom msgid "Enter the PIN for your security key to continue." msgstr "Introdu codul PIN al cheii tale de securitate pentru a continua." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Introdu codul SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Introdu acest cod în browser pentru a finaliza conectarea." @@ -14492,11 +14337,6 @@ msgstr "Introdu-ți numele" msgid "Enter your password." msgstr "Introdu parola." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Introdu numărul de telefon" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Sunet de intrare" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Fișierele cu sunete de intrare trebuie să aibă cel mult {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Biblioteca de sunete de intrare este plină" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Sunet de intrare eliminat" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Sunet de intrare salvat" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Sunete de intrare" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Sunete de intrare indisponibile" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Expiră:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Setarea filtrului de conținut explicit" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Copierea în clipboard nu a reușit" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Crearea webhook-ului a eșuat" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Nu s-a putut încărca URL-ul personalizat. Încearcă din nou." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Nu s-au putut încărca webhook-urile" @@ -15190,11 +15030,6 @@ msgstr "Nu s-a putut elimina adresa URL personalizată. Încearcă din nou." msgid "Failed to resend code. Try again." msgstr "Nu s-a putut retrimite codul. Încearcă din nou." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Nu s-a putut retrimite codul de verificare. Încearcă din nou mai târziu." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Nu s-a putut trimite mesajul. Ține apăsat pentru opțiuni." msgid "Failed to send report. Try again." msgstr "Trimiterea raportului a eșuat. Încearcă din nou." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Trimiterea e-mailului de verificare a eșuat. Încearcă din nou mai târziu." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Nu s-a putut porni" @@ -15551,15 +15381,15 @@ msgstr "Filtrează după utilizator" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtrează pe toată lumea" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtrează membrii fără roluri" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Urmărește acest canal" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Urmărește pentru a primi aceste anunțuri într-un canal la alegere." @@ -15773,7 +15603,7 @@ msgstr "Canal urmărit {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Canale urmărite" @@ -15857,11 +15687,6 @@ msgstr "Doar pentru ochii britanicilor..." msgid "For me" msgstr "Pentru mine" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Pentru această verificare, ne trimiți un mesaj text în loc să primești unul de la noi." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Pentru siguranța ta, te rugăm să confirmi că ești tu pentru a continua." @@ -15905,7 +15730,7 @@ msgstr "Forțează scheletul de încărcare" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Forțează conținut matur" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Forțează mutarea pe canalul AFK" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Forțează lipsa permisiunii {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Forțează afișarea avertismentului privind URL-ul personalizat" msgid "Force show voice connection" msgstr "Forțează afișarea conexiunii vocale" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Forțează modul lent activ" @@ -16020,7 +15845,7 @@ msgstr "Redirecționează media" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Redirecționează mesajul" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Suprapunere blocare geografică" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Restricționat geografic" @@ -16490,12 +16315,6 @@ msgstr "Obține un avatar și un banner animate, o insignă de abonat, eticheta msgid "Get monthly" msgstr "Obține lunar" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Cere cod nou" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Coduri cadou" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Durata cadoului" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Inventar de cadouri" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Flux inventar cadouri" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Cadoul nu a fost găsit" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Cadou valorificat" @@ -17030,7 +16849,7 @@ msgstr "Mesaj direct de grup" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Salut, {displayName}, revendică-ți contul pentru a nu pierde accesul." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Salut, {displayName}, te rugăm să-ți verifici adresa de e-mail." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Salut {displayName}, nu putem livra emailuri la adresa ta. Adaugă un email funcțional pentru a-ți verifica contul." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Ascunzi propria partajare a ecranului?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Ridicat" @@ -17755,11 +17579,6 @@ msgstr "Sunt un sfat de utilizare" msgid "I changed my mind" msgstr "M-am răzgândit" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Am nevoie de o altă metodă" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Dacă acest raport se referă la un anumit mesaj, raportează în schimb msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Dacă acest raport se referă la anumite mesaje, raportează în schimb cel mai relevant mesaj. Rapoartele de mesaje oferă echipei noastre de siguranță cel mai clar context, iar adăugarea detaliilor în comentarii ne poate ajuta să îl examinăm mai rapid. Continuă cu raportarea utilizatorului în ansamblu doar dacă raportarea unui mesaj nu ar surprinde problema mai amplă." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Dacă nu poți verifica prin SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Dacă nu poți folosi nicio metodă de verificare, contactează asistența pentru ajutor." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Dimensiune interfață" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Fișier audio nevalid" @@ -18674,8 +18483,10 @@ msgstr "JSON nevalid. Lipește răspunsul complet de la adresa URL de mai sus." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Alătură-te apelului vocal" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Alătură-te canalului vocal" @@ -19613,16 +19424,6 @@ msgstr "Află mai multe despre Visionary" msgid "Leave" msgstr "Părăsește" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Părăsești {count, plural, one {# comunitate} few {# comunități} other {# de comunități}} și lași deoparte această verificare?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Părăsește și pune deoparte" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Permite cititoarelor de ecran să anunțe mesajele noi pe măsură ce sosesc în canalul deschis. Sunetele de notificare nu sunt afectate." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Permite comunității să se automodereze" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Bibliotecă" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Biblioteca este plină (maximum {max} sunete). Șterge unul înainte de a adăuga altul." @@ -19812,7 +19613,7 @@ msgstr "Bibliotecă: {count} din {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Pe viață" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Se încarcă..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Se încarcă…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Scăzut" @@ -20416,7 +20217,7 @@ msgstr "Gestionează funcțiile comunității" msgid "Manage emoji & stickers" msgstr "Gestionează emoji și stickere" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Gestionează webhook-urile de intrare care pot posta mesaje în acest canal." @@ -20514,7 +20315,7 @@ msgstr "Marchează imediat toate canalele necitite din inbox ca fiind citite, f msgid "Mark as read" msgstr "Marchează ca citit" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Marchează ca valorificat" @@ -20676,14 +20477,14 @@ msgstr "Comunitate pentru adulți" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Conținut matur" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Conținut matur și avertismente de conținut" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Durată maximă de viață (zile)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Protecție maximă pentru spații potrivite familiilor" @@ -20924,7 +20725,7 @@ msgstr "Oprește redarea" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Interdicție anulată pentru membru" msgid "Member updated" msgstr "Membru actualizat" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Verificarea membrilor" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Nivel de verificare membru" @@ -21048,7 +20849,7 @@ msgstr "Membrii sunt eliminați când sunt offline, dacă nu li se atribuie un r msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Membrii cu „{pinMessagesPermissionLabel}” pot fixa mesaje pentru toată lumea." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Membrii cu roluri pot ocoli aceste verificări. Pentru spațiile publice, recomandăm activarea verificării." @@ -21153,7 +20954,7 @@ msgstr "Mențiunile despre tine apar aici timp de {retentionDays} zile." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Doar mențiuni" @@ -21292,7 +21093,7 @@ msgstr "Setările de afișare a mesajelor sunt disponibile doar pe desktop." msgid "Message editing" msgstr "Editare mesaj" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Mesaj redirecționat" @@ -21341,7 +21142,7 @@ msgstr "Butoane de introducere a mesajului" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Mesajul este prea lung" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Previzualizări ale mesajelor în lista de DM-uri" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Mesaj publicat" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Mesajele publicate în #{sourceName} vor apărea acum în #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Mesajele publicate în aceste canale de anunțuri sunt copiate aici." @@ -21504,7 +21305,7 @@ msgstr "Mesajele publicate în aceste canale de anunțuri sunt copiate în canal msgid "Messages you can bookmark" msgstr "Mesaje pe care le poți salva" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Mesageria este întreruptă temporar în această comunitate." @@ -21733,30 +21534,30 @@ msgstr "Simulează expirarea într-o zi" msgid "Mock expires in 7 days" msgstr "Simulează expirarea în 7 zile" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Simulează suprapunerea blocării geografice" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Simulează inventarul de cadouri" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simulează apelul primit" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Simulează motivul blocării canalului cu conținut matur" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Simulează motivul blocării media cu conținut matur" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Simulează locația din Marea Britanie" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Avatare de utilizator simulate, în diverse dimensiuni și cu toate permutările de stare." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Variantă de simulare" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Fluxuri de produs simulate" @@ -22698,14 +22494,16 @@ msgstr "Comunitate nouă pe silențios" msgid "New direct message" msgstr "Mesaj direct nou" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "E-mail nou" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formular e-mail nou" @@ -22816,9 +22614,7 @@ msgstr "Cele mai noi mai întâi" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Înainte" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Nu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Fără permisiunea {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Fără permisiunea {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Nicio modificare de salvat" msgid "No channels available" msgstr "Niciun canal disponibil" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Nu s-au găsit canale" @@ -23233,11 +23029,6 @@ msgstr "Nu s-au găsit permisiuni" msgid "No personal words yet." msgstr "Încă nu ai cuvinte personale." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Fără număr de telefon" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Niciun rezultat" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Nu s-au găsit rezultate" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Nu s-au găsit utilizatori" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Nu este necesară verificarea." @@ -23452,7 +23243,7 @@ msgstr "Nu este necesară verificarea." msgid "No verification methods available" msgstr "Nicio metodă de verificare disponibilă" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Niciun webhook" @@ -23504,7 +23295,7 @@ msgstr "Fără conversie" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Fără" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Niciunul (comportament normal)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norvegiană" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Nu ești membru de suficient timp" @@ -23798,9 +23589,9 @@ msgstr "Obiecte" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Dezactivat" @@ -23848,7 +23639,7 @@ msgstr "Cele mai vechi mai întâi" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Activat" @@ -23884,11 +23675,6 @@ msgstr "Unul sau mai multe fișiere atașate nu au putut fi citite sau încărca msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Unul sau mai multe fișiere pe care încerci să le încarci depășesc dimensiunea maximă de {maxSizeFormatted} per fișier." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "O scurtă verificare" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Doar difuzoare" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Doar proprietarul comunității poate schimba această setare" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Deschide emoji în browser" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Deschide selectorul de emoji" @@ -24382,12 +24168,8 @@ msgstr "Deschide meniul" msgid "Open message history threshold" msgstr "Deschide pragul istoricului mesajelor" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Deschide suprapunerea" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Deschide fereastra pop-up" @@ -24485,11 +24267,6 @@ msgstr "Deschide noua aplicație. Ești deja conectat." msgid "Open the shortcuts list for quick actions." msgstr "Deschide lista de comenzi rapide pentru acțiuni rapide." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Deschide e-mailul de verificare și folosește linkul din interior. Această fereastră se actualizează după deschiderea linkului." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Deschide setările de voce și video" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Deschide browserul, conectează-te, apoi introdu codul de mai jos pentru a-ți asocia contul." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Deschide mesajele" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Deschide vechea ta aplicație {PRODUCT_NAME} și alege „Asociază un dispozitiv nou”, apoi introdu codul de mai jos." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Deschide aplicația de mesagerie a telefonului și creează un mesaj text nou." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Deschide aplicația de mesagerie de pe telefon și începe un mesaj text nou." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Altă reacție…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Verificarea noastră a numerelor de telefon nu funcționează momentan. Problema este la noi, nu la numărul tău. Așteaptă câteva minute și încearcă din nou cu același număr." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Phishing, fraudă, linkuri rău intenționate sau afirmații false care pot provoca daune în lumea reală." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefon" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Număr de telefon" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Numărul de telefon este obligatoriu" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Număr de telefon verificat" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Este necesară reverificarea numărului de telefon" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Pasul telefonului" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Verificarea numărului de telefon nu este disponibilă pentru acest cont. Folosește o altă metodă sau contactează asistența." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Este necesară verificarea numărului de telefon" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Alege numărul de 4 cifre de după numele tău de utilizator" msgid "Pick the appearance this administrator account should start with." msgstr "Alege aspectul cu care ar trebui să înceapă acest cont de administrator." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Alege metoda pe care o poți finaliza acum." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Imagine în imagine" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Fixare" @@ -25471,7 +25176,7 @@ msgstr "Fixează DM-ul de grup" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Fixează sau desfixează orice mesaj." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Fixează acest mesaj pe canal pentru ca toată lumea să-l vadă." @@ -26227,18 +25932,18 @@ msgstr "Culoare profil" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Personalizare profil" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Personalizarea profilului pentru {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formular de personalizare a profilului" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Tip profil" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profil actualizat" @@ -26340,7 +26045,7 @@ msgstr "Afișează o alertă când se conectează un dispozitiv audio nou" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Coordonare raid" msgid "Rate" msgstr "Viteză" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Limită de rată atinsă" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "JSON brut pentru încorporare" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Elimini {userName} din lista ta de prieteni?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Elimină tot" @@ -27290,7 +26990,7 @@ msgstr "Elimini toate reacțiile {emojiNameWithColons} de pe acest mesaj?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Elimină toate reacțiile" @@ -27899,20 +27599,10 @@ msgstr "Tagul utilizatorului raportat (opțional)" msgid "Reposts: <0>{countLabel}" msgstr "Redistribuiri: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Solicită mai întâi un cod nou." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Solicită un link nou de resetare" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Solicită mai întâi un cod de verificare." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Solicitări" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Solicită 2FA pentru acțiunile de moderare" @@ -27958,7 +27648,7 @@ msgstr "Necesită acordarea codului OAuth2" msgid "Require passkey" msgstr "Necesită cheie de acces" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Solicită autentificarea în doi pași pentru moderatori înainte ca aceștia să poată bana, elimina, aplica timeout sau șterge mesaje." @@ -27972,46 +27662,6 @@ msgstr "Obligatoriu" msgid "Required 2FA for moderation actions" msgstr "A solicitat 2FA pentru acțiunile de moderare" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Acțiune necesară, filă implicită" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Flux de acțiuni necesare" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Pasul telefonic de acțiune necesară" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Se încarcă retransmiterea acțiunii necesare" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Rezultatul retrimiterii acțiunii necesare" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Text de reverificare a acțiunii necesare" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Variantă de acțiune necesară" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Suprapunere acțiuni necesare" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Necesită un URI de redirecționare și un cod de autorizare la invitarea acestui bot." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Necesită o adresă de e-mail verificată și un cont vechi de cel puțin 5 minute." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Necesită o adresă de e-mail verificată." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Necesită un număr de telefon verificat." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Necesită totul la nivel mediu, plus să fii membru al comunității de cel puțin 10 minute." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Retrimite ({resendSecondsRemaining}s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Retrimite ({secondsRemaining}s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Se încarcă butonul de retrimitere" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Retrimite codul" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Retrimite e-mailul" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Rezultatul retrimiterii" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Retrimis" @@ -28518,21 +28152,6 @@ msgstr "Arată" msgid "Reveal spoiler" msgstr "Dezvăluie spoilerul" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Reverifică-ți adresa de e-mail sau verifică-ți numărul de telefon pentru a continua să folosești {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Reverifică-ți adresa de e-mail pentru a continua să folosești {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Reverifică-ți numărul de telefon pentru a continua să folosești {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Saturație" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Previzualizare la glisare" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Caută canale" msgid "Search communities" msgstr "Caută comunități" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Caută țări..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Caută țări…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Selectează-ți țara de reședință." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Selectează…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Trimite" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Trimite ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Trimite un alt raport" msgid "Send button" msgstr "Buton de trimitere" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Trimite codul" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Trimite mesaje" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Trimiterea mesajelor dezactivată" @@ -30151,32 +29759,11 @@ msgstr "Trimite media salvată {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Trimite mesaje text-to-speech cu /tts. Membrii care au activat text-to-speech le aud citite cu voce tare." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Trimite codul <0>{0} la <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Trimite codul la numărul de telefon de mai jos." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Trimite acest cod" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Trimiți acest mesaj fixat înapoi în timp?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Trimite la" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Trimite mesaj vocal" msgid "Send:" msgstr "Trimitere:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Trimiterea unui SMS către acest număr de telefon este prea costisitoare pentru {PRODUCT_NAME}, așa că trebuie să ne trimiți tu un SMS. Știm că nu este ideal. Poți cere și administratorilor acestei instanțe să-ți elimine această cerință din cont." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Trimiterea unui SMS către acest număr de telefon este prea costisitoare pentru {PRODUCT_NAME}, așa că trebuie să ne trimiți tu un SMS. Știm că nu este ideal. Poți contacta și <0>{SUPPORT_EMAIL} pentru a-ți elimina această cerință din cont." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Trimitere serială" msgid "Serve the token file" msgstr "Publică fișierul token" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Eroare de serviciu" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Setează o comandă rapidă personalizată pentru „{label}”" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Setează o stare personalizată" @@ -30486,18 +30060,6 @@ msgstr "Regiunea vocală a fost setată la {region}" msgid "Set the voice region to automatic" msgstr "A setat regiunea vocală la automat" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Amână această verificare" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Amâni această verificare?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Setează-ți pronumele" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Setează-ți statusul" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Comenzile rapide sunt suspendate în timpul înregistrării." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Scurtează mesajul și încearcă din nou." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Afișează o pictogramă {productName} în bara de sistem sau în bara de meniu" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Afișează un avertisment de conținut" @@ -31672,7 +31234,7 @@ msgstr "Mod lent · așteaptă {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Modul lent activ" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Modul lent este setat la {durationLabel}. Așteaptă înainte de a trimite un alt mesaj." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Timp rămas din modul lent" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulare mod lent" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Timp rămas pentru modul lent" @@ -31807,11 +31369,6 @@ msgstr "Derulare lină" msgid "Smoother video" msgstr "Video mai fluid" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Verificarea prin SMS nu este disponibilă momentan. Încearcă din nou mai târziu sau contactează asistența." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "A apărut o eroare la pregătirea acestui sticker. Încearcă alt fișier sau încearcă din nou mai târziu." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "A apărut o eroare la publicare. Încearcă din nou peste o clipă." @@ -32009,11 +31566,9 @@ msgstr "Ceva nu a mers bine. Reîncarcă pagina sau conectează-te din nou." msgid "Something went wrong. Try again later." msgstr "Ceva nu a mers bine. Încearcă din nou mai târziu." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Ceva nu a mers bine. Încearcă din nou." @@ -32352,11 +31907,6 @@ msgstr "Autentificarea SSO a expirat. Încearcă din nou." msgid "Staff controls" msgstr "Controale pentru personal" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Se pot aplica tarife standard de mesagerie de la operatorul tău." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Animație stea" msgid "Starred channels" msgstr "Canale favorite" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Transport abonat:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Abonament" @@ -33051,14 +32599,12 @@ msgstr "Scenarii de abonament" msgid "Subtext" msgstr "Subtext" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Succes" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Sugerat pentru majoritatea comunităților" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Sistem și bun venit" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Anunțuri de sistem de la personalul {productName}. Nu poți răspunde aici." @@ -33765,11 +33311,6 @@ msgstr "Selecție text" msgid "Text size" msgstr "Dimensiune text" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Trimite-ne un mesaj de pe telefonul tău" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Thailandeză" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Îți mulțumim că ne ajuți să păstrăm {productName} în siguranță. Îți vom examina raportul cât mai curând posibil." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Codul nu a funcționat. Verifică-l și încearcă din nou." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Acest cod a expirat. Solicită un cod nou." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Nu s-a finalizat. Este posibil ca unele comunități să fi fost deja părăsite, iar contul tău este în continuare blocat. Apasă din nou pe „Amână această verificare” pentru a finaliza." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Nu a funcționat. Nu s-a schimbat nimic. Încearcă din nou." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Nu pare o culoare validă. Încearcă hex, rgb(), hsl() sau un nume de c msgid "That doesn't look like a valid URL." msgstr "Nu pare un URL valid." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Acest e-mail este deja utilizat." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Suprascrierea a refuzat {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Pagina pe care o cauți nu există sau a fost mutată." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Verificarea telefonică a fost amânată. A mai rămas un pas cu e-mailul." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Nu există canale disponibile pentru a crea o invitație." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Momentan nu există roluri de atribuit în această comunitate, dar poți crea un rol nou în <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Nu există webhook-uri configurate pentru acest canal. Creează un webhook pentru a permite aplicațiilor externe să posteze mesaje." @@ -34273,7 +33784,7 @@ msgstr "A apărut o eroare la încărcarea invitațiilor. Încearcă din nou." msgid "There was an error loading the stickers. Try again." msgstr "A apărut o eroare la încărcarea stickerelor. Încearcă din nou." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "A apărut o eroare la încărcarea webhook-urilor pentru acest canal. Încearcă din nou." @@ -34417,7 +33928,7 @@ msgstr "Acest canal poate publica 10 mesaje la rând, apoi încă unul la fiecar msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Acest canal poate publica 10 mesaje la rând, apoi încă unul la fiecare 6 minute. Încearcă din nou peste câteva minute." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Acest canal nu acceptă webhook-uri." @@ -34550,12 +34061,12 @@ msgstr "Această conexiune nu a fost verificată." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Acest conținut este sensibil." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Această conversație nu mai este disponibilă." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Acest grup are prea multe persoane" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Acest grup este plin. Elimină pe cineva înainte de a adăuga mai multe persoane." @@ -34715,11 +34226,6 @@ msgstr "Acesta este un sticker personalizat dintr-o comunitate." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Acesta este un canal cu restricție de vârstă. Actualizările pot merge doar către canale cu restricție de vârstă." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Aceasta este o verificare anti-spam. Numărul tău de telefon nu este conectat la contul tău." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Aceasta este dezactivată" msgid "This is how messages appear" msgstr "Așa apar mesajele" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Acest lucru nu este disponibil momentan pentru contul tău. Cere administratorilor acestei instanțe să verifice." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Acest lucru nu este disponibil momentan pentru contul tău. Trimite un e-mail la {supportEmail} și o persoană va analiza situația." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Acesta nu este canalul pe care îl cauți." @@ -34792,11 +34288,6 @@ msgstr "Aceasta este ultima ta cheie de acces, iar cheile de acces sunt al doile msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Aceasta este ultima ta cheie de acces. Odată ce o ștergi, nu vei mai putea folosi o cheie de acces ca al doilea factor." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Acesta nu este un număr de mobil, deci nu poate primi SMS-ul nostru. Încearcă un număr de mobil sau contactează suportul dacă crezi că este greșit." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Acest mesaj a fost deja șters." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Acest mesaj a fost deja publicat" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Acest mesaj nu mai există." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Acest pseudonim va fi vizibil doar în această comunitate" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Acest număr se verifică printr-un SMS trimis de tine. Revino și începe din nou verificarea telefonică pentru a obține codul și numărul la care să trimiți mesajul." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Acest număr necesită un SMS trimis de tine, nu unul primit de la noi." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Acest participant are sunetul dezactivat" msgid "This participant was deafened by moderators" msgstr "Acestui participant i-a fost dezactivat sunetul de moderatori" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Acest număr de telefon nu poate fi utilizat. Încearcă un alt număr de mobil sau contactează asistența." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Acest număr de telefon a fost deja utilizat. Încearcă un alt număr sau contactează asistența." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Acest utilizator nu are roluri în această comunitate." msgid "This user is already banned from the community." msgstr "Acest utilizator este deja banat din comunitate." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Acest utilizator nu mai este disponibil." @@ -35065,11 +34536,6 @@ msgstr "Acest utilizator a fost adăugat forțat în această comunitate de căt msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Sesiunea de verificare a expirat. Revino la {productName} și începe din nou procesul de plată." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Sesiunea de verificare a expirat. Începe din nou." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Aceasta te va deconecta, va șterge fișierele din cache și sesiunile s msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Aceasta va acorda încredere tuturor linkurilor externe și va omite avertismentul pentru fiecare domeniu. Domeniile tale de încredere existente vor fi înlocuite. Această opțiune este mai puțin sigură." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Această fereastră se actualizează automat după ce primim mesajul tău." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Bara de titlu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Platformă bară de titlu" @@ -35470,18 +34931,11 @@ msgstr "Ton" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Mapează imaginile HDR la un interval standard, reducând luminozitatea maximă." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Prea multe încercări. Așteaptă puțin, apoi încearcă din nou." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Prea multe comunități" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Prea multe solicitări. Încearcă din nou mai târziu." @@ -36151,8 +35605,10 @@ msgstr "Nu s-a putut pregăti niciun emoji pentru încărcare. Au apărut următ #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Indisponibil" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Necategorizat" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Cont nerevendicat" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Neordonată" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Anulează fixarea" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Anulează fixarea mesajului" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Anulezi fixarea acestui mesaj?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Modificări nesalvate" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Fișier audio neacceptat." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Până le reactivez eu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "E-mail neverificat" @@ -36958,12 +36414,7 @@ msgstr "Actualizează {productName} pentru a vedea acest mesaj." msgid "Update app" msgstr "Actualizează aplicația" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Actualizează adresa de e-mail" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Actualizează-mi starea" @@ -37306,18 +36757,13 @@ msgstr "Folosește {url} acolo unde ar trebui inserată adresa URL a imaginii." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Folosește o fereastră dedicată pentru a seta o dată limită a istoricului mesajelor pentru membrii care nu au permisiunea {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Folosește o altă adresă de e-mail și verific-o cu un cod." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Folosește valoarea reală" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Folosește tipul premium real" @@ -37335,16 +36781,6 @@ msgstr "Folosește o metodă alternativă" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Folosește o aplicație de autentificare pentru a genera coduri pentru autentificarea în doi pași" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Folosește o adresă de e-mail la care ai acces. Îți vom trimite un cod acolo." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Folosește o adresă de e-mail diferită de cea actuală." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Folosește tema întunecată în toată aplicația" msgid "Use default" msgstr "Folosește valoarea implicită" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Folosește alt e-mail" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Folosește e-mailul" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Folosești chei de acces pentru autentificarea în doi pași?" msgid "Use passkeys to sign in without a password" msgstr "Folosește chei de acces pentru a te conecta fără parolă" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Folosește telefonul" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Folosește textul de reverificare" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Utilizatorul este mutat între canale" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Utilizatorul nu a fost găsit" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Verificare" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Verificare și bariere de membru" @@ -37970,15 +37387,8 @@ msgstr "Cod de verificare" msgid "Verification code sent" msgstr "Codul de verificare a fost trimis" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Codul de verificare a fost trimis. Verifică căsuța noii adrese de e-mail." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "E-mailul de verificare a fost trimis. Verifică-ți căsuța de e-mail." @@ -38038,23 +37448,6 @@ msgstr "Formular de verificare a identității" msgid "Verify it's you" msgstr "Confirmă că ești tu" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Verifică numărul de telefon" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Verifică numărul de telefon" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formular de verificare a numărului de telefon" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Verifică-ți adresa de e-mail înainte de a adăuga o aplicație de autentificare." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Verifică-ți adresa de e-mail înainte de a-ți schimba pseudonimul din comunitate, avatarul, bannerul, biografia, pronumele sau culoarea de accent." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Verifică-ți adresa de e-mail înainte de a-ți schimba numele de utilizator, numele afișat, avatarul, bannerul, biografia, pronumele, fusul orar sau confidențialitatea insignei {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Verifică-ți adresa de e-mail înainte de a edita acest profil de comunitate. Îl poți previzualiza în continuare aici." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Verifică-ți adresa de e-mail înainte de a-ți edita profilul. Îl poți previzualiza în continuare aici." @@ -38113,11 +37506,6 @@ msgstr "Verifică-ți adresa de e-mail înainte de a trimite cereri de prietenie msgid "Verify your email first" msgstr "Verifică-ți mai întâi adresa de e-mail" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Verifică-ți adresa de e-mail sau numărul de telefon pentru a continua să folosești {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Verifică-ți emailul pentru a cumpăra cadouri." msgid "Verify your email to change your username" msgstr "Verifică-ți adresa de e-mail pentru a-ți schimba numele de utilizator" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Verifică-ți adresa de e-mail pentru a continua să folosești {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Verifică-ți adresa de e-mail pentru a edita acest profil de comunitate" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Verifică-ți adresa de e-mail pentru a-ți edita profilul" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Versiune" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Foarte ridicat" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Mărește volumul" msgid "Wait a moment before deleting more messages." msgstr "Așteaptă un moment înainte să ștergi mai multe mesaje." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Așteaptă un moment. Această fereastră se va închide automat după ce primim mesajul tău." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Așteaptă între mesaje. Membrii cu permisiunea „{bypassSlowmodePermissionLabel}” pot ocoli această limită." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Așteaptă aici" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Se așteaptă cheia de acces…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Se așteaptă expirarea modului lent în {forwardChannelDisplayName}." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Se așteaptă expirarea modului lent în unul sau mai multe canale selectate." @@ -39115,16 +38482,6 @@ msgstr "Nu am putut citi această temă. Poate fi coruptă sau nevalidă." msgid "We couldn't remove that account. Try again." msgstr "Nu am putut elimina acest cont. Încearcă din nou." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Nu am putut verifica automat acest număr. Contactează asistența și o persoană va analiza contul tău." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Nu trimitem mesaje de verificare în această țară. Încearcă un număr de mobil din altă țară sau contactează asistența." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Am găsit un abonament {premiumProductFullName} existent pentru acest co msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Am redus prețul pentru {premiumProductName} în Brazilia. Acum este {monthlyPrice} pe lună sau {yearlyPrice} pe an." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Mai este necesar un pas de verificare înainte de a continua. Acest lucru ajută la protejarea conturilor și la eliminarea spamului de pe {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Mai sunt necesari doi pași de verificare înainte de a continua. Îți vom arăta câte un pas pe rând." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Îți recomandăm să salvezi aceste coduri acum, ca să nu-ți pierzi accesul la cont." @@ -39167,11 +38514,6 @@ msgstr "Am trimis un cod la {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Vom precompleta {prefillEmail} odată ce se deschide autentificarea în browser." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Vom trimite un cod SMS când va fi disponibil." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Ne-ar plăcea să-ți oferim mai mult decât {PREMIUM_PRODUCT_NAME} pe viață, dar asta ar rupe continuumul spațiu-timp. Trimiți cadoul unui prieten în schimb?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Vom procesa asta cât mai curând posibil. Vei primi un e-mail când arhiva ta este gata." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Îți vom restabili adresa de e-mail anterioară, vom deconecta sesiunile vechi, vom elimina numerele de telefon, vom dezactiva MFA și îți vom securiza contul cu o parolă nouă." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Vom restaura adresa ta de email anterioară, vom deconecta sesiunile vechi, vom dezactiva MFA și îți vom securiza contul cu o parolă nouă." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Îți vom trimite un cod de verificare pe e-mail înainte să-ți poți msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Îți vom trimite un cod de verificare pe e-mail înainte să poți vedea codurile de rezervă." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Vom trimite un cod SMS când va fi disponibil. Numărul tău nu este legat de contul tău. Păstrăm doar un marcator criptat, fără ID de utilizator, pentru o perioadă limitată." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Îți vom verifica adresa de e-mail actuală, apoi pe cea nouă, cu coduri de unică folosință." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook creat" @@ -39331,7 +38669,7 @@ msgstr "Webhook actualizat" msgid "Webhook URL" msgstr "URL webhook" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhook-uri" @@ -39486,8 +38824,8 @@ msgstr "Ce partajezi nu se actualizează" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Ce se întâmplă?" @@ -39967,21 +39305,11 @@ msgstr "Poți elimina permisiunea <0>{readMessageHistoryPermissionLabel} din msgid "You can sign back in at any time." msgstr "Te poți conecta oricând din nou." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Poți oricând să le ceri administratorilor acestei instanțe o verificare făcută de un om." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Poți crea în continuare un cont sau te poți autentifica. Dacă invitațiile sunt reactivate mai târziu, poți folosi același link pentru a te alătura." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Poți oricând să ne trimiți un e-mail la {supportEmail} pentru o analiză umană." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Poți folosi linkuri, emoji și Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Nu poți adăuga expresii acolo" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Nu poți adăuga reacții noi cât timp ești în timeout." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Nu te poți adăuga pe tine ca prieten" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Nu-ți poți schimba pseudonimul aici" @@ -40094,7 +39422,7 @@ msgstr "Nu îți poți trimite o cerere de prietenie." msgid "You can't send messages in this channel." msgstr "Nu poți trimite mesaje pe acest canal." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Nu poți trimite mesaje în această comunitate." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Nu ai permisiunea să faci asta acestui membru." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Nu ai permisiunea de a te alătura acestui canal vocal" @@ -40243,7 +39571,7 @@ msgstr "Nu ai permisiunea de a redenumi acest emoji. Numele a revenit la cel ant msgid "You have been banned from this community." msgstr "Ai interdicție în această comunitate." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Ai blocat utilizatorul {username}. Deblochează-l ca să îi poți trimite mesaje." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Ai modificări nesalvate." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Ai modificări nesalvate. Salvează sau resetează înainte de a pleca." @@ -40270,7 +39598,7 @@ msgstr "Ai modificări nesalvate. Salvează sau resetează înainte de a pleca." msgid "You haven't authorized any applications to access your account." msgstr "Nu ai autorizat nicio aplicație să-ți acceseze contul." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Nu ești membru al acestei comunități de suficient timp pentru a trimite mesaje." @@ -40326,11 +39654,6 @@ msgstr "Trebuie să accepți termenii și condițiile pentru a crea un cont" msgid "You must verify your email before sending a report." msgstr "Trebuie să-ți verifici adresa de e-mail înainte de a trimite un raport." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Ai nevoie de acces la adresa de e-mail actuală pentru a o schimba de aici. Folosește verificarea prin telefon, dacă este disponibilă, sau contactează asistența." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Ai nevoie de permisiunea „{manageRolesPermissionLabel}” pentru a edi msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Ai nevoie de permisiunea „{manageRolesPermissionLabel}” pentru a edita aceste permisiuni." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Ai nevoie de permisiunea „{manageWebhooksPermissionLabel}” pentru a vizualiza și edita webhook-urile acestui canal." @@ -40384,18 +39707,14 @@ msgstr "Trebuie să-ți revendici contul înainte de a putea crea o comunitate." msgid "You need to claim your account before you can start a direct message." msgstr "Trebuie să-ți revendici contul înainte de a putea începe un mesaj direct." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Trebuie să-ți revendici contul pentru a trimite mesaje directe." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Trebuie să-ți revendici contul pentru a trimite mesaje în această comunitate." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Trebuie să-ți verifici numărul de telefon pentru a trimite mesaje în această comunitate." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Trebuie să-ți verifici adresa de e-mail înainte de a putea începe un msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Trebuie să-ți verifici adresa de e-mail înainte de a putea achiziționa {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Trebuie să-ți verifici adresa de e-mail pentru a trimite mesaje în această comunitate." @@ -40424,11 +39743,6 @@ msgstr "Trebuie să-ți verifici adresa de e-mail pentru a trimite mesaje în ac msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Tu sau cineva pe care îl adaugi a atins deja numărul maxim de DM-uri de grup deschise. Părăsește unul și încearcă din nou." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Rămâi în {ownedNames}. Proprietarii nu își pot părăsi propria comunitate." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Ți-a fost dezactivat sunetul de moderatori" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Vei fi redirecționat către {redirectHostname} după autorizare." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Vei părăsi {count, plural, one {# comunitate} few {# comunități} other {# de comunități}} la care se aplică această verificare, iar contul tău va funcționa din nou normal." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Vei părăsi {guildNames}. Nimic din ce ai postat nu este șters și te poți alătura din nou mai târziu." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Va trebui în continuare să finalizezi pasul cu e-mailul." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Mergi prea repede" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Mergi prea repede. Așteaptă un moment și încearcă din nou." @@ -40636,7 +39935,7 @@ msgstr "Trimiți mesaje prea repede" msgid "You're streaming!" msgstr "Transmiți live!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Ești în timeout. Mesajele, reacțiile și vocea sunt suspendate până la expirarea timeoutului." @@ -40764,25 +40063,25 @@ msgstr "Plata pentru reînnoire prin {storeName} a eșuat, dar <0/> rămân acti msgid "Your account" msgstr "Contul tău" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Contul tău revine imediat la normal și nu vei mai avea nevoie de un număr de telefon. Aceasta nu este o scutire permanentă și putem solicita această verificare din nou mai târziu." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Contul tău a fost conectat cu succes. Acum poți închide această filă și reveni la aplicație." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Contul tău a revenit la normal." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Contul tău este limitat" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Contul tău este limitat. Verifică-ți emailul pentru instrucțiuni despre cum să îl deblochezi." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Contul tău nu a fost revendicat încă. Fără o adresă de e-mail și o parolă, nu te vei putea conecta de pe alte dispozitive și ai putea pierde accesul la contul tău. Revendică-ți contul acum pentru a-l securiza." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Contul tău este prea nou pentru a trimite mesaje în această comunitate." @@ -40800,11 +40099,6 @@ msgstr "Contul tău necesită autentificare multi-factor, dar nu sunt configurat msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Contul tău nu va mai fi protejat de autentificarea în doi pași atunci când te conectezi cu parola. De asemenea, vei pierde permisiunile extinse în comunitățile care necesită autentificare în doi pași." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Contul tău funcționează din nou normal imediat și nimic nu este eliminat. Putem solicita această verificare mai târziu." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Se verifică eligibilitatea cardului tău pentru prețuri localizate. De msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Cardul tău este eligibil. Te redirecționăm acum către pagina de plată." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Operatorul tău spune că acest număr nu este activ. Verifică-l și încearcă din nou sau contactează asistența dacă este corect." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Modificările tale ajung în fiecare comunitate care urmărește acest canal și pot dura un minut. Fiecare mesaj publicat permite 3 editări rapide, apoi câte 1 la fiecare 20 de minute." @@ -40869,21 +40158,6 @@ msgstr "Dispozitivul tău îți va cere să salvezi o cheie de acces actualizat msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Dispozitivul tău îți va cere să salvezi o cheie de acces actualizată pentru {name}. Folosește același telefon sau aceeași cheie de securitate ca adineauri." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Adresa ta de e-mail a fost actualizată." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Adresa ta de e-mail nu a putut primi mesaje. Adaugă o adresă de e-mail funcțională pentru a-ți putea menține contul accesibil." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Adresa ta de e-mail nu a putut primi mesaje. Actualizeaz-o pentru a continua să folosești {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Adresa ta de e-mail a fost verificată. Acum te poți conecta la contul tău." @@ -41000,21 +40274,11 @@ msgstr "Mesajul tău nu a fost actualizat" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Cea mai recentă achiziție nu mai este în perioada de rambursare. Contactează asistența pentru probleme de facturare." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "noul tău e-mail" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Noul tău pseudonim sau lasă gol pentru a-l reseta." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Numărul tău nu este asociat cu contul tău. Păstrăm doar un identificator criptat, fără ID de utilizator, pentru o perioadă limitată." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Plata a fost anulată. Acum poți închide această filă și te poți întoarce la aplicație." @@ -41054,11 +40318,6 @@ msgstr "Cadourile tale cumpărate" msgid "your region" msgstr "regiunea ta" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Înregistrarea ta necesită o verificare anti-spam suplimentară înainte de a putea continua." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/ru/messages.po b/fluxer_app/src/features/i18n/locales/ru/messages.po index 65be45c70..19d1f1f4a 100644 --- a/fluxer_app/src/features/i18n/locales/ru/messages.po +++ b/fluxer_app/src/features/i18n/locales/ru/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# реакция} few {# реакции} many {# р msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# пользователь} few {# пользователя} many {# пользователей} other {# пользователя}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# секунда} few {# секунды} many {# секунд} other {# секунды}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} в {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Срок действия ссылки-приглашения истекает через # секунду.} few {Срок действия ссылки-приглашения истекает через # секунды.} many {Срок действия ссылки-приглашения истекает через # секунд.} other {Срок действия ссылки-приглашения истекает через # секунды.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Выбрано: {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 минута" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 часов" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 месяцев (1 год)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "резервные коды 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Требование 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 участника (печатают)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 месяца" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 часов" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 месяцев" @@ -2575,11 +2575,6 @@ msgstr "минуту" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Доступна новая версия для компьютера. Загрузите установщик и запустите его, чтобы обновить {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Новый код подтверждения отправлен." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Данные аккаунта" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Аккаунт создан для рассылки спама, мошенничества или нарушения правил платформы." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Аккаунт ограничен" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Состояние аккаунта" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Аккаунт слишком новый" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Требуется подтверждение аккаунта" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Добавить бота в сообщество с запрошенными разрешениями" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Добавить комментарий (необязательно)" @@ -3054,8 +3052,10 @@ msgstr "Добавьте тему для этого канала" msgid "Add a word…" msgstr "Добавить слово…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Добавьте действующий адрес эл. почты" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Чтобы продолжить, добавьте аккаунт." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Сначала добавьте адрес электронной почты и пароль к своему аккаунту." @@ -3424,11 +3424,6 @@ msgstr "Добавлено: {createdDate} • последнее использ msgid "Additional comments (optional)" msgstr "Дополнительные комментарии (необязательно)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Требуется дополнительная проверка" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Все языки" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Отмена уже запланирована" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Также пожаловаться на это сообщение команде безопасности {productName}" @@ -4713,11 +4708,6 @@ msgstr "Спрашивать перед началом звонков" msgid "Ask for a passkey after your password when you sign in" msgstr "Запрашивать ключ доступа после ввода пароля при входе" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Попросите администраторов этого экземпляра проверить ваш аккаунт. Этот экземпляр работает независимо, и изменить ваш аккаунт могут только его администраторы." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Автоматически удалять параметры отсле msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Автоматически удалять параметры отслеживания из URL в отправляемых сообщениях" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Автоматически проверять сообщения на наличие откровенного контента в каналах без отметки «контент для взрослых»." @@ -5359,8 +5349,6 @@ msgstr "Сейчас нет на месте" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Назад" @@ -6506,11 +6494,6 @@ msgstr "Камеры и виртуальные устройства захват msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Камеры отключены, если участников больше {voiceChannelCameraUserLimit}" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Нет доступа к этой почте?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Сюда нельзя загружать файлы" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Сюда нельзя загружать файлы" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Изменить почту" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Изменить эмодзи" @@ -7201,7 +7184,7 @@ msgstr "Изменён лимит пользователей с {oldCount} на msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Изменена короткая ссылка с {oldCode} на {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Изменен уровень проверки с {oldLevel} на {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Канал или категория" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Переопределения разрешений канала" @@ -7509,8 +7492,6 @@ msgstr "Проверьте подключение и повторите попы msgid "Check your connection, then try again." msgstr "Проверьте подключение и попробуйте снова." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Выберите экран в системном диалоге" msgid "Choose a GIF" msgstr "Выбрать GIF-изображение" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Выберите способ" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Придумайте новый пароль." @@ -7680,8 +7656,8 @@ msgstr "Выберите действие." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Выберите эмодзи" @@ -7749,11 +7725,6 @@ msgstr "Выберите, как будет работать ваш экземп msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Выберите один из способов ниже, чтобы подтвердить владение доменом. Вам нужно выполнить только один." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Выберите один способ подтверждения. Любой из них подойдёт." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Выберите, что {clientLabel} сможет делать в ва msgid "Choose what friends see in their active now panel" msgstr "Выберите, что друзья видят на панели «Сейчас онлайн»" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Выберите, что должны иметь участники, прежде чем они смогут публиковать сообщения или писать личные сообщения другим участникам сообщества." @@ -8030,8 +8001,8 @@ msgstr "Очищает звук микрофона для четкой речи. msgid "Clear" msgstr "Очистить" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Убрать через" @@ -8053,7 +8024,7 @@ msgstr "Удалить все моки вложений" msgid "Clear all token overrides" msgstr "Сбросить все переопределения токенов" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Очистить моки вложений" @@ -8066,14 +8037,14 @@ msgstr "Очистить команду" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Очистить статус" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Удалить все реакции с этого сообщения?" @@ -8124,7 +8095,7 @@ msgstr "Очистить поле поиска" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Тема «Уголь»" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Команды" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Комментарии отключены, так как в одном или нескольких выбранных каналах включен медленный режим. Комментарий будет заблокирован медленным режимом сразу после пересылки." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Комментарии отключены, так как в канале «{forwardChannelDisplayName}» включен медленный режим. Комментарий будет заблокирован медленным режимом сразу после пересылки." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Комментарии недоступны, пока включён медленный режим." @@ -8670,11 +8639,11 @@ msgstr "Сообщества" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Сообщества и каналы, где вы не можете управлять вебхуками, скрыты." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Сообщества в каталоге обязаны проверять сообщения всех участников. Пока сообщество размещено в каталоге, этот параметр изменить нельзя." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Сообщества в каталоге должны требовать как минимум подтвержденный адрес электронной почты. Пока сообщество размещено в каталоге, выбрать «Нет» нельзя." @@ -8827,7 +8796,7 @@ msgstr "Название сообщества" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Никнейм в сообществе" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Профиль сообщества" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Профиль сообщества обновлен" @@ -8907,7 +8876,7 @@ msgstr "Уровень значков непрочитанных в сообще #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Сообщество обновлено" @@ -8952,11 +8921,6 @@ msgstr "Сравнение" msgid "Complete mature content check" msgstr "Пройти проверку контента для взрослых" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Чтобы продолжить пользоваться {productName}, пройдите одну из проверок ниже." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Завершить оплату" msgid "Complete the mature content check to unlock mature media." msgstr "Пройдите проверку контента для взрослых, чтобы разблокировать медиафайлы для взрослых." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Чтобы продолжить пользоваться {productName}, выполните указанные ниже шаги по подтверждению электронной почты и номера телефона." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Пройдите необходимую проверку, чтобы продолжить пользоваться {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Настроить значок профиля" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Порядок подключений изменен" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Требуется согласие" @@ -9349,16 +9304,6 @@ msgstr "Создайте URL-адрес авторизации с областя msgid "Contact" msgstr "Контакты" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Обратиться в поддержку" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Свяжитесь с администраторами этого экземпляра для получения помощи." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Автор контента" msgid "Content filter" msgstr "Фильтр контента" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Фильтрация контента" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Тип содержимого для кодирования" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Проверка контента" @@ -9416,12 +9361,10 @@ msgstr "Контекстные меню открываются левым кли #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Настройте поведение индикатора непроч msgid "Control which chat updates are announced by assistive technology." msgstr "Настройте, какие обновления чата будут озвучиваться вспомогательными технологиями." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Чат не найден" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Не удалось добавить тег" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Не удалось добавить этого друга в группу. Повторите попытку." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Не удалось добавить в группу" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Не удалось создать ссылку на тему" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Не удалось создать ссылку-приглашение" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Не удалось завершить льготный период" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Не удалось создать ссылку-приглашение. Повторите попытку." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Не удалось обработать изображение" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Не удалось опубликовать это сообщение" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Не удалось повторно присоединиться к сообществу Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Не удалось удалить звук входа" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Не удалось сохранить настройки канала" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Не удалось сохранить звук входа" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Не удалось отозвать заявку" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Таймер обратного отсчёта" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Страна" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Создайте аккаунт администратора" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Создать групповой чат с {addableCount, plural, one {# оставшимся получателем} few {# оставшимися получателями} many {# оставшимися получателями} other {# оставшегося получателя}}, пропустив остальных?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Создать вебхук" @@ -10948,7 +10884,7 @@ msgstr "Пользовательский эмодзи {emojiName} из сооб #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Пользовательские звуки входа не включены в этом экземпляре." @@ -11108,7 +11044,7 @@ msgstr "Настраиваемая обработка звука" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Пользовательский текст предупреждения" @@ -11530,11 +11466,6 @@ msgstr "Поисковая система по умолчанию" msgid "Default shortcuts" msgstr "Быстрые клавиши по умолчанию" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Вкладка по умолчанию" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Делавэр" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Удалить это сообщение" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Удалить это сообщение? Это действие нельзя отменить." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Удалить это сообщение? Отменить нельзя. Сообщение также будет удалено из всех сообществ, которые следят за этим каналом." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Режим разработчика" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Опция для разработчиков" @@ -12299,7 +12230,7 @@ msgstr "Прямой ввод" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Режим отображения" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Отображаемое имя" @@ -12858,7 +12789,7 @@ msgstr "Вы хотите присоединиться к {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Док, я из будущего. Я прибыл сюда на машине времени, которую вы изобрели. Теперь мне нужна ваша помощь, чтобы вернуться в 1985 год." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Изменить местное время в профиле" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Изменить опубликованное сообщение?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Изменить свои сообщения выше или ниже" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Измените свой профиль и посмотрите, как он будет выглядеть" @@ -13590,10 +13521,8 @@ msgstr "Возврат средств возможен до {windowEndsOn}. Эт msgid "Email" msgstr "Эл. почта" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Требуется адрес электронной почты." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Эл. почта изменена" @@ -13616,49 +13547,17 @@ msgstr "Эл. почта изменена" msgid "Email delivery" msgstr "Доставка электронной почты" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Эл. почта или телефон" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Требуется повторное подтверждение почты или телефона" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Требуется повторное подтверждение почты" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Почта недоступна" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Обновление эл. почты сейчас недоступно. Повторите попытку позже или обратитесь в службу поддержки." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Требуется обновить почту" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Напишите нам по электронной почте, и ваш аккаунт проверит сотрудник. Сообщите, что вы не можете пройти проверку по SMS, и мы разберемся. Ответы приходят по электронной почте, поэтому мгновенного ответа не будет." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Панель уведомлений о подтверждении почты" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Требуется подтверждение почты" @@ -13675,6 +13574,10 @@ msgstr "Переопределение подтверждения почты" msgid "Email verified successfully" msgstr "Электронная почта подтверждена" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Письма на ваш текущий адрес не доставляются. Введите новый адрес электронной почты, и мы отправим туда код." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Встраиваемые элементы" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Встраиваемые элементы скрыты" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Встраиваемые элементы показаны" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Включить воспроизведение речи /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Включите двухфакторную аутентификацию, чтобы изменить эту настройку" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Введите допустимый URL-адрес или код шаблона {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Введите действительный адрес электронной почты." @@ -14298,33 +14199,11 @@ msgstr "Введите действительный адрес электрон msgid "Enter a valid message link." msgstr "Введите действительную ссылку на сообщение." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Введите действительный номер мобильного телефона." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Введите действительный номер телефона" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Введите действительное имя пользователя ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Введите адрес электронной почты, к которому у вас есть доступ. Мы отправим туда код." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Ввести код" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "На весь экран" msgid "Enter gift code…" msgstr "Введите подарочный код…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Введите новый адрес эл. почты" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Введите один из резервных кодов, если н msgid "Enter one of your backup codes." msgstr "Введите один из резервных кодов." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Введите номер телефона" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Введите {digitCount}-значный код из приложен msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Введите {digitCount}-значный код из приложения-аутентификатора." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Введите {digitCount}-значный код, отправленный на номер {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Введите {MFA_CODE_DIGIT_COUNT}-значный код, отправленный на номер {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Введите код" @@ -14408,11 +14267,6 @@ msgstr "Введите код, чтобы продолжить." msgid "Enter the code from your authenticator app." msgstr "Введите код из приложения-аутентификатора." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Введите код, отправленный на {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Введите код, отправленный на текущий адрес эл. почты." @@ -14426,6 +14280,7 @@ msgstr "Введите код, отправленный на вашу элект msgid "Enter the code shown in the app to continue." msgstr "Введите код, показанный в приложении, чтобы продолжить." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Введите код, который мы отправили на ваш новый адрес эл. почты." @@ -14434,11 +14289,6 @@ msgstr "Введите код, который мы отправили на ва msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Введите код, который мы отправили на вашу почту, чтобы подтвердить ее. Пароль будет установлен после подтверждения кода." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Введите код из письма" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Введите ссылку-приглашение, чтобы присоединиться к сообществу." @@ -14452,11 +14302,6 @@ msgstr "Введите новый адрес электронной почты. msgid "Enter the PIN for your security key to continue." msgstr "Введите PIN-код ключа безопасности, чтобы продолжить." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Введите код из SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Введите этот код в браузере, чтобы завершить вход." @@ -14492,11 +14337,6 @@ msgstr "Введите ваше имя" msgid "Enter your password." msgstr "Введите пароль." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Введите номер телефона" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Звук входа" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Размер файла звука входа должен быть не более {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Библиотека звуков входа заполнена" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Звук входа удален" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Звук входа сохранен" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Звуки входа" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Звуки входа недоступны" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Истекает:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Настройка фильтра откровенного контента" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Не удалось скопировать в буфер обмена" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Не удалось создать вебхук" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Не удалось загрузить пользовательский URL. Повторите попытку." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Не удалось загрузить вебхуки" @@ -15190,11 +15030,6 @@ msgstr "Не удалось удалить пользовательский URL. msgid "Failed to resend code. Try again." msgstr "Не удалось отправить код повторно. Повторите попытку." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Не удалось отправить код подтверждения повторно. Повторите попытку позже." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Не удалось отправить сообщение. Нажмит msgid "Failed to send report. Try again." msgstr "Не удалось отправить жалобу. Повторите попытку." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Не удалось отправить письмо для подтверждения. Повторите попытку позже." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Ошибка запуска" @@ -15551,15 +15381,15 @@ msgstr "Фильтр по пользователю" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Фильтровать всех" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Фильтровать участников без ролей" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Подписаться на этот канал" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Подпишитесь, чтобы получать эти объявления в выбранном вами канале." @@ -15773,7 +15603,7 @@ msgstr "Канал подписки {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Подписчики" @@ -15857,11 +15687,6 @@ msgstr "Только для британцев..." msgid "For me" msgstr "Для меня" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Для этой проверки СМС отправляете нам вы, а не мы вам." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Для вашей безопасности подтвердите, что это вы, чтобы продолжить." @@ -15905,7 +15730,7 @@ msgstr "Принудительно показывать скелет загру #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Принудительно показывать медиа для взрослых" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Принудительно переместить в AFK-канал" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Принудительно отключить разрешение «{permissionName}»" @@ -15948,7 +15773,7 @@ msgstr "Всегда показывать отказ от ответственн msgid "Force show voice connection" msgstr "Принудительно показывать голосовое подключение" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Принудительно включить медленный режим" @@ -16020,7 +15845,7 @@ msgstr "Переслать медиафайл" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Переслать сообщение" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Наложение геоблокировки" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Геоограничение" @@ -16490,12 +16315,6 @@ msgstr "Получите анимированный аватар и баннер msgid "Get monthly" msgstr "Получить ежемесячно" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Получить новый код" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Подарочные коды" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Длительность подарка" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Инвентарь подарков" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Сценарий инвентаря подарков" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Подарок не найден" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Подарок активирован" @@ -17030,7 +16849,7 @@ msgstr "Групповой чат" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Привет, {displayName}! Подтвердите аккаунт, чтобы не потерять к нему доступ." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Привет, {displayName}! Пожалуйста, подтвердите свой адрес электронной почты." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Привет, {displayName}! Мы не можем доставить письмо на ваш адрес. Добавьте рабочий адрес электронной почты для подтверждения аккаунта." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Скрыть демонстрацию своего экрана?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Высокий" @@ -17755,11 +17579,6 @@ msgstr "Я — подсказка" msgid "I changed my mind" msgstr "Я передумал(а)" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Мне нужен другой способ" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Если жалоба касается конкретного сообщ msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Если жалоба касается конкретных сообщений, пожалуйтесь на самое релевантное сообщение. Жалобы на сообщения дают нашей команде безопасности наиболее полную информацию, а добавление деталей в комментарии поможет нам рассмотреть ее быстрее. Продолжайте жаловаться на пользователя в целом, только если жалоба на сообщение не сможет охватить всю проблему." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Если вы не можете подтвердить по SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Если вы не можете использовать ни один из способов подтверждения, обратитесь в службу поддержки." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Размер интерфейса" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Недопустимый аудиофайл" @@ -18674,8 +18483,10 @@ msgstr "Неверный JSON. Вставьте полный ответ, пол #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Присоединиться к звонку" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Присоединиться к голосовому каналу" @@ -19613,16 +19424,6 @@ msgstr "Узнайте больше о Visionary" msgid "Leave" msgstr "Выйти" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Покинуть {count, plural, one {# сообщество} few {# сообщества} many {# сообществ} other {# сообществ}} и отложить эту проверку?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Покинуть и отложить" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Включите, чтобы программы чтения с экрана объявляли новые сообщения по мере их поступления в открытый канал. Звуки уведомлений останутся без изменений." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Сообщество модерирует себя само" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Библиотека" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Библиотека заполнена (макс. {max} звуков). Удалите один, прежде чем добавлять другой." @@ -19812,7 +19613,7 @@ msgstr "Библиотека: {count} из {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Навсегда" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Загрузка..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Загрузка…" @@ -20261,7 +20062,7 @@ msgstr "Луизиана" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Низкий" @@ -20416,7 +20217,7 @@ msgstr "Управление функциями сообщества" msgid "Manage emoji & stickers" msgstr "Управление эмодзи и стикерами" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Управляйте входящими вебхуками, которые могут публиковать сообщения в этот канал." @@ -20514,7 +20315,7 @@ msgstr "Сразу помечать все непрочитанные канал msgid "Mark as read" msgstr "Отметить как прочитанное" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Отметить как использованное" @@ -20676,14 +20477,14 @@ msgstr "Сообщество для взрослых" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Контент для взрослых" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Контент для взрослых и предупреждения о контенте" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Максимальный срок хранения (дней)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Максимальная защита для семейных чатов" @@ -20924,7 +20725,7 @@ msgstr "Остановить воспроизведение" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Участник разбанен" msgid "Member updated" msgstr "Участник изменен" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Верификация участников" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Уровень верификации участников" @@ -21048,7 +20849,7 @@ msgstr "Участники будут удалены, когда выйдут и msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Участники с разрешением «{pinMessagesPermissionLabel}» могут закреплять сообщения для всех." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Участники с ролями могут обходить эти проверки. Для открытых сообществ рекомендуем включить верификацию." @@ -21153,7 +20954,7 @@ msgstr "Упоминания о вас отображаются здесь в т #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Только упоминания" @@ -21292,7 +21093,7 @@ msgstr "Настройки отображения сообщений досту msgid "Message editing" msgstr "Редактирование сообщений" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Сообщение переслано" @@ -21341,7 +21142,7 @@ msgstr "Кнопки ввода сообщения" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Сообщение слишком длинное" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Предпросмотр сообщений в списке личных чатов" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Сообщение опубликовано" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Сообщения из канала #{sourceName} теперь будут появляться в #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Сообщения, опубликованные в этих каналах объявлений, копируются сюда." @@ -21504,7 +21305,7 @@ msgstr "Сообщения, опубликованные в этих канал msgid "Messages you can bookmark" msgstr "Сообщения, которые можно добавить в закладки" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Обмен сообщениями временно приостановлен в этом сообществе." @@ -21733,30 +21534,30 @@ msgstr "Истекает через 1 день (тест)" msgid "Mock expires in 7 days" msgstr "Истекает через 7 дней (тест)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Имитация блокировки по геопозиции" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Тестовый инвентарь подарков" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Имитировать входящий звонок" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Причина блокировки канала с контентом для взрослых (имитация)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Причина блокировки медиа с контентом для взрослых (имитация)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Имитировать геопозицию в Великобритании" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Тестовые аватары пользователей разных размеров и со всеми статусами." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Тестовый вариант" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Тестовые сценарии продукта" @@ -22698,14 +22494,16 @@ msgstr "Новое сообщество без уведомлений" msgid "New direct message" msgstr "Новое личное сообщение" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Новый адрес эл. почты" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Форма нового адреса эл. почты" @@ -22816,9 +22614,7 @@ msgstr "Сначала новые" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Далее" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Нет" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Нет разрешения {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Нет разрешения {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Нет изменений для сохранения" msgid "No channels available" msgstr "Нет доступных каналов" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Каналы не найдены" @@ -23233,11 +23029,6 @@ msgstr "Разрешения не найдены" msgid "No personal words yet." msgstr "Пока нет личных слов." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Нет номера телефона" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Нет результатов" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Ничего не найдено" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Пользователи не найдены" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Проверка не требуется." @@ -23452,7 +23243,7 @@ msgstr "Проверка не требуется." msgid "No verification methods available" msgstr "Нет доступных способов подтверждения" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Вебхуков нет" @@ -23504,7 +23295,7 @@ msgstr "Без преобразования" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Нет" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Нет (обычное поведение)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Норвежский" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Недостаточно долго в сообществе" @@ -23798,9 +23589,9 @@ msgstr "Объекты" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Выкл" @@ -23848,7 +23639,7 @@ msgstr "Сначала старые" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Вкл" @@ -23884,11 +23675,6 @@ msgstr "Не удалось прочитать или загрузить одн msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Один или несколько файлов, которые вы пытаетесь загрузить, превышают максимальный размер {maxSizeFormatted} на файл." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Быстрая проверка" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Только динамики" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Изменить эту настройку может только владелец сообщества" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Открыть эмодзи в браузере" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Открыть выбор эмодзи" @@ -24382,12 +24168,8 @@ msgstr "Открыть меню" msgid "Open message history threshold" msgstr "Настроить порог истории сообщений" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Открыть наложение" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Открыть всплывающее окно" @@ -24485,11 +24267,6 @@ msgstr "Откройте новое приложение. Вы уже вошли msgid "Open the shortcuts list for quick actions." msgstr "Откройте список сочетаний клавиш для быстрых действий." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Откройте письмо с подтверждением и перейдите по ссылке. Это окно обновится после открытия ссылки." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Открыть настройки аудио и видео" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Откройте браузер, войдите в аккаунт, затем введите код ниже, чтобы привязать свой аккаунт." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Откройте сообщения" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Откройте старое приложение {PRODUCT_NAME} и выберите «Привязать новое устройство», затем введите код ниже." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Откройте приложение для обмена сообщениями на телефоне и создайте новое текстовое сообщение." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Откройте приложение для обмена сообщениями на телефоне и начните новое текстовое сообщение." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Другая реакция…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Наша проверка номеров телефона сейчас не работает. Дело в нас, а не в вашем номере. Подождите несколько минут и попробуйте тот же номер снова." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Фишинг, мошенничество, вредоносные ссылки или ложные заявления, которые могут причинить реальный вред." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Телефон" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Номер телефона" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Требуется номер телефона" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Номер телефона подтвержден" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Требуется повторное подтверждение номера телефона" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Шаг телефона" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Подтверждение по телефону недоступно для этого аккаунта. Используйте другой способ или обратитесь в поддержку." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Требуется подтверждение номера телефона" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Выберите 4-значный номер после вашего и msgid "Pick the appearance this administrator account should start with." msgstr "Выберите начальный внешний вид для аккаунта администратора." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Выберите способ, который вы можете использовать сейчас." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Картинка в картинке" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Закрепить" @@ -25471,7 +25176,7 @@ msgstr "Закрепить групповой чат" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Закреплять или откреплять любые сообщения." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Закрепить это сообщение в канале, чтобы его видели все." @@ -26227,18 +25932,18 @@ msgstr "Цвет профиля" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Настройка профиля" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Настройка профиля для {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Форма настройки профиля" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Тип профиля" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Профиль обновлен" @@ -26340,7 +26045,7 @@ msgstr "Оповещать о новых аудиоустройствах" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Координация рейдов" msgid "Rate" msgstr "Скорость" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Превышен лимит запросов" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Исходный JSON встраиваемого элемента" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Удалить {userName} из друзей?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Удалить все" @@ -27290,7 +26990,7 @@ msgstr "Удалить все реакции {emojiNameWithColons} с этого #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Удалить все реакции" @@ -27899,20 +27599,10 @@ msgstr "Тег пользователя, на которого жалуетес msgid "Reposts: <0>{countLabel}" msgstr "Репосты: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Сначала запросите новый код." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Запросить новую ссылку для сброса пароля" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Сначала запросите код подтверждения." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Запросы" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Требовать 2FA для действий модерации" @@ -27958,7 +27648,7 @@ msgstr "Требовать код авторизации OAuth2" msgid "Require passkey" msgstr "Требовать ключ доступа" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Требовать двухфакторную аутентификацию для модераторов, прежде чем они смогут банить, исключать, отправлять в тайм-аут или удалять сообщения." @@ -27972,46 +27662,6 @@ msgstr "Обязательно" msgid "Required 2FA for moderation actions" msgstr "Включено требование двухфакторной аутентификации для действий модерации" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Вкладка по умолчанию для обязательного действия" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Сценарий обязательного действия" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Шаг с телефоном обязательного действия" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Загрузка повторной отправки обязательного действия" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Результат повторной отправки обязательного действия" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Текст повторной проверки обязательного действия" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Вариант обязательного действия" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Окно обязательных действий" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Требует URI перенаправления и код авторизации при приглашении этого бота." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Требуется подтвержденный адрес электронной почты и аккаунт, созданный не менее 5 минут назад." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Требуется подтвержденный адрес электронной почты." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Требуется подтвержденный номер телефона." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Всё то же, что и на среднем уровне, плюс членство в сообществе не менее 10 минут." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Отправить повторно ({resendSecondsRemaining} с)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Отправить повторно ({secondsRemaining} с)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Кнопка повторной отправки загружается" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Отправить код повторно" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Отправить письмо повторно" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Результат повторной отправки" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Отправлено повторно" @@ -28518,21 +28152,6 @@ msgstr "Показать" msgid "Reveal spoiler" msgstr "Показать скрытое" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Подтвердите адрес электронной почты или номер телефона, чтобы продолжить пользоваться {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Подтвердите адрес электронной почты, чтобы продолжить пользоваться {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Подтвердите свой номер телефона, чтобы продолжить пользоваться {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Насыщенность" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Предпросмотр при перемотке" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Поиск каналов" msgid "Search communities" msgstr "Поиск сообществ" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Поиск стран..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Поиск стран…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Выберите страну проживания." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Выбрать…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Отправить" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Отправить ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Отправить ещё одну жалобу" msgid "Send button" msgstr "Кнопка отправки" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Отправить код" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Отправлять сообщения" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Отправка сообщений отключена" @@ -30151,32 +29759,11 @@ msgstr "Отправить сохраненный медиафайл «{memeName msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Отправлять сообщения с преобразованием текста в речь через /tts. Участники, включившие эту функцию, услышат их вслух." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Отправить код <0>{0} на <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Отправьте код на указанный ниже номер телефона." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Отправьте этот код" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Отправить это закрепление в прошлое?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Отправить на" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Отправить голосовое сообщение" msgid "Send:" msgstr "Отправка:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Отправка SMS на этот номер слишком дорого обходится {PRODUCT_NAME}, поэтому нам нужно, чтобы вы отправили SMS нам. Мы знаем, что это не очень удобно. Вы также можете попросить администраторов этого экземпляра снять это требование с вашего аккаунта." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Отправка SMS на этот номер слишком дорого обходится {PRODUCT_NAME}, поэтому нам нужно, чтобы вы отправили SMS нам. Мы знаем, что это не очень удобно. Вы также можете написать на <0>{SUPPORT_EMAIL}, чтобы мы сняли это требование с вашего аккаунта." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Поочередная отправка" msgid "Serve the token file" msgstr "Разместите файл токена" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Ошибка сервиса" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Задать сочетание клавиш для «{label}»" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Установить статус" @@ -30486,18 +30060,6 @@ msgstr "Установлен голосовой регион: {region}" msgid "Set the voice region to automatic" msgstr "Установлен автоматический выбор голосового региона" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Отложить эту проверку" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Отложить эту проверку?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Указать местоимения" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Установить статус" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Во время записи сочетания клавиш не срабатывают." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Сократите сообщение и попробуйте снова." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Показывать значок {productName} в системном трее или строке меню" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Показывать предупреждение о контенте" @@ -31672,7 +31234,7 @@ msgstr "Медленный режим · ждать {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Медленный режим активен" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Медленный режим установлен на {durationLabel}. Подождите, прежде чем отправить следующее сообщение." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Медленный режим: осталось" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Имитация медленного режима" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Медленный режим: осталось времени" @@ -31807,11 +31369,6 @@ msgstr "Плавная прокрутка" msgid "Smoother video" msgstr "Более плавное видео" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Подтверждение по SMS сейчас недоступно. Повторите попытку позже или обратитесь в службу поддержки." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Что-то пошло не так при подготовке стикера. Попробуйте другой файл или повторите попытку через минуту." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Что-то пошло не так при публикации. Попробуйте еще раз через мгновение." @@ -32009,11 +31566,9 @@ msgstr "Что-то пошло не так. Перезагрузите стра msgid "Something went wrong. Try again later." msgstr "Что-то пошло не так. Повторите попытку позже." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Что-то пошло не так. Повторите попытку." @@ -32352,11 +31907,6 @@ msgstr "Время ожидания входа через SSO истекло. П msgid "Staff controls" msgstr "Инструменты сотрудников" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Может взиматься стандартная плата за сообщения согласно тарифу вашего оператора." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Добавить анимацию в избранное" msgid "Starred channels" msgstr "Каналы со звёздочкой" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Транспорт подписчика:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Подписка" @@ -33051,14 +32599,12 @@ msgstr "Сценарии подписки" msgid "Subtext" msgstr "Мелкий текст" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Готово" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Рекомендуется для большинства сообществ" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Система и приветствие" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Системные объявления от сотрудников {productName}. Здесь нельзя отвечать." @@ -33765,11 +33311,6 @@ msgstr "Выделение текста" msgid "Text size" msgstr "Размер текста" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Напишите нам со своего телефона" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Тайский" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Спасибо, что помогаете нам обеспечивать безопасность в {productName}. Мы рассмотрим вашу жалобу как можно скорее." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Этот код не подошёл. Проверьте его и попробуйте ещё раз." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Срок действия кода истёк. Запросите новый код." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Не удалось завершить. Возможно, вы уже покинули часть сообществ, а ваш аккаунт по-прежнему заблокирован. Нажмите «Отложить эту проверку» ещё раз, чтобы завершить." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Не удалось. Ничего не изменилось. Попробуйте снова." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Это не похоже на действительный цвет. П msgid "That doesn't look like a valid URL." msgstr "Похоже, это недействительная ссылка." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Этот адрес электронной почты уже используется." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Переопределение запрещало {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Страница, которую вы ищете, не существует или была перемещена." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Проверка телефона отложена. Остался один шаг: подтверждение почты." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Нет доступных каналов для создания при msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "В этом сообществе пока нет ролей для назначения, но вы можете создать новую роль в <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Для этого канала не настроены вебхуки. Создайте вебхук, чтобы внешние приложения могли публиковать сообщения." @@ -34273,7 +33784,7 @@ msgstr "Произошла ошибка при загрузке приглаше msgid "There was an error loading the stickers. Try again." msgstr "Произошла ошибка при загрузке стикеров. Попробуйте ещё раз." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Произошла ошибка при загрузке вебхуков для этого канала. Повторите попытку." @@ -34417,7 +33928,7 @@ msgstr "Этот канал может публиковать 10 сообщен msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Этот канал может публиковать 10 сообщений подряд, а затем по одному каждые 6 минут. Попробуйте снова через несколько минут." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Этот канал не поддерживает вебхуки." @@ -34550,12 +34061,12 @@ msgstr "Это подключение не подтверждено." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Содержит деликатный контент." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Эта переписка больше недоступна." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "В этой группе слишком много участников" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Эта группа заполнена. Удалите кого-нибудь, прежде чем добавлять новых участников." @@ -34715,11 +34226,6 @@ msgstr "Это пользовательская эмодзи из сообщес msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Это канал с возрастными ограничениями. Обновления могут отправляться только в каналы с возрастными ограничениями." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Это проверка на спам. Ваш номер телефона не привязан к аккаунту." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Отключено" msgid "This is how messages appear" msgstr "Так выглядят сообщения" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Сейчас это недоступно для вашего аккаунта. Попросите администраторов этого экземпляра рассмотреть это." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Сейчас это недоступно для вашего аккаунта. Напишите на {supportEmail}, и наш сотрудник рассмотрит ваш запрос." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Это не тот канал, который вы ищете." @@ -34792,11 +34288,6 @@ msgstr "Это ваш последний ключ доступа, а ключи msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Это ваш последний ключ доступа. После его удаления вы не сможете использовать ключ доступа в качестве второго фактора." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Это не мобильный номер, поэтому он не может получать наши SMS. Попробуйте мобильный номер или свяжитесь с поддержкой, если считаете, что это ошибка." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Это сообщение уже удалено." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Это сообщение уже было опубликовано" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Этого сообщения больше нет." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Этот никнейм будет виден только в этом сообществе" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Этот номер подтверждается отправкой сообщения нам. Вернитесь и начните проверку номера телефона заново, чтобы получить код и номер для отправки сообщения." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Этот номер нужно подтвердить сообщением от вас, а не SMS от нас." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "У этого участника отключён звук" msgid "This participant was deafened by moderators" msgstr "Модераторы отключили звук этому участнику" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Этот номер телефона нельзя использовать. Попробуйте другой номер или обратитесь в службу поддержки." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Этот номер телефона уже использовался. Попробуйте другой номер или обратитесь в службу поддержки." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "У этого пользователя нет ролей в этом с msgid "This user is already banned from the community." msgstr "Этот пользователь уже забанен в сообществе." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Этот пользователь больше недоступен." @@ -35065,11 +34536,6 @@ msgstr "Этот пользователь был принудительно до msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Срок действия сессии проверки истёк. Вернитесь в {productName} и начните оформление покупки заново." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Срок действия сессии проверки истёк. Начните заново." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Это приведет к выходу из аккаунта, очис msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Это позволит доверять всем внешним ссылкам и пропускать предупреждение для каждого домена. Ваши существующие доверенные домены будут заменены. Это менее безопасно." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Это окно обновится автоматически, как только мы получим ваше сообщение." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Строка заголовка" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Платформа строки заголовка" @@ -35470,18 +34931,11 @@ msgstr "Тональное отображение" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Тональная компрессия HDR-изображений до стандартного диапазона, уменьшающая пиковую яркость." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Слишком много попыток. Подождите немного и повторите попытку." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Слишком много сообществ" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Слишком много запросов. Повторите попытку позже." @@ -36151,8 +35605,10 @@ msgstr "Не удалось подготовить эмодзи для загр #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Недоступно" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Без категории" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Неподтвержденный аккаунт" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Маркированный" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Открепить" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Открепить сообщение" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Открепить это сообщение?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Несохраненные изменения" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Неподдерживаемый аудиофайл." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Пока не включу обратно" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Эл. почта не подтверждена" @@ -36958,12 +36414,7 @@ msgstr "Обновите {productName}, чтобы просмотреть это msgid "Update app" msgstr "Обновить приложение" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Обновить почту" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Обновить мой статус" @@ -37306,18 +36757,13 @@ msgstr "Используйте {url} там, где нужно подстави msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Используйте отдельное окно, чтобы задать дату ограничения истории сообщений для участников, у которых нет разрешения «{readMessageHistoryPermissionLabel}»." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Используйте другой адрес электронной почты и подтвердите его с помощью кода." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Использовать фактический" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Использовать фактический тип премиум-подписки" @@ -37335,16 +36781,6 @@ msgstr "Использовать другой способ" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Используйте приложение-аутентификатор для генерации кодов двухфакторной аутентификации" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Используйте электронную почту, к которой у вас есть доступ. Мы отправим туда код." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Используйте адрес электронной почты, отличный от текущего." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Использовать темную тему во всем прило msgid "Use default" msgstr "Использовать по умолчанию" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Использовать другой адрес эл. почты" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Использовать эл. почту" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Использовать ключи доступа для двухфак msgid "Use passkeys to sign in without a password" msgstr "Используйте ключи доступа для входа без пароля" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Использовать телефон" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Использовать текст для повторной верификации" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Пользователь переходит в другой канал" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Пользователь не найден" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Верификация" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Верификация и барьеры для вступления" @@ -37970,15 +37387,8 @@ msgstr "Код подтверждения" msgid "Verification code sent" msgstr "Код подтверждения отправлен" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Код подтверждения отправлен. Проверьте новую почту." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Письмо для подтверждения отправлено. Проверьте входящие." @@ -38038,23 +37448,6 @@ msgstr "Форма подтверждения личности" msgid "Verify it's you" msgstr "Подтвердите, что это вы" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Подтвердить телефон" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Подтвердить номер телефона" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Форма подтверждения номера телефона" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Подтвердите почту, прежде чем добавлять приложение-аутентификатор." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Подтвердите почту, прежде чем менять никнейм в сообществе, аватар, баннер, описание, местоимения или акцентный цвет." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Подтвердите почту, прежде чем менять имя пользователя, отображаемое имя, аватар, баннер, описание, местоимения, часовой пояс или настройки конфиденциальности значка {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Подтвердите почту, прежде чем редактировать профиль сообщества. Вы всё ещё можете посмотреть его здесь." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Подтвердите почту, прежде чем редактировать профиль. Вы всё ещё можете посмотреть его здесь." @@ -38113,11 +37506,6 @@ msgstr "Подтвердите почту, прежде чем отправля msgid "Verify your email first" msgstr "Сначала подтвердите почту" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Подтвердите почту или телефон, чтобы продолжить пользоваться {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Подтвердите свою почту, чтобы покупать msgid "Verify your email to change your username" msgstr "Подтвердите почту, чтобы изменить имя пользователя" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Подтвердите почту, чтобы продолжить пользоваться {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Подтвердите почту, чтобы изменить профиль сообщества" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Подтвердите почту, чтобы изменить профиль" @@ -38181,13 +37564,6 @@ msgstr "Вермонт" msgid "Version" msgstr "Версия" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Очень высокий" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Увеличить громкость" msgid "Wait a moment before deleting more messages." msgstr "Подождите немного, прежде чем удалять другие сообщения." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Подождите. Это окно закроется автоматически, как только мы получим ваше сообщение." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Интервал между сообщениями. Участники с разрешением «{bypassSlowmodePermissionLabel}» могут его обойти." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Подождите" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Ожидание ключа доступа…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Ожидание окончания медленного режима в канале «{forwardChannelDisplayName}»." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Ожидание окончания медленного режима в одном или нескольких выбранных каналах." @@ -39115,16 +38482,6 @@ msgstr "Не удалось прочитать эту тему. Возможно msgid "We couldn't remove that account. Try again." msgstr "Не удалось удалить аккаунт. Попробуйте ещё раз." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Не удалось автоматически подтвердить этот номер. Свяжитесь с поддержкой, и ваш аккаунт проверит сотрудник." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Мы не отправляем проверочные SMS в эту страну. Попробуйте использовать номер мобильного телефона из другой страны или обратитесь в службу поддержки." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Мы нашли активную подписку {premiumProductFullNam msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Мы снизили цену на {premiumProductName} в Бразилии. Теперь он стоит {monthlyPrice} в месяц или {yearlyPrice} в год." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Нам нужно выполнить один шаг проверки, прежде чем вы сможете продолжить. Это помогает защитить аккаунты и предотвратить спам в {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Прежде чем продолжить, необходимо выполнить два шага проверки. Мы покажем их по очереди." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Рекомендуем сохранить эти коды сейчас, чтобы не потерять доступ к аккаунту." @@ -39167,11 +38514,6 @@ msgstr "Мы отправили код на {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Мы автоматически заполним поле с адресом {prefillEmail}, как только откроется окно входа в браузере." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Мы отправим SMS-код, когда он будет доступен." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Мы бы с радостью подарили вам больше, чем пожизненную подписку {PREMIUM_PRODUCT_NAME}, но это нарушит пространственно-временной континуум. Может, отправите подарок другу?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Мы обработаем запрос как можно скорее. Вы получите электронное письмо, когда ваш архив будет готов." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Мы восстановим ваш предыдущий адрес электронной почты, завершим старые сессии, удалим номера телефонов, отключим многофакторную аутентификацию и защитим ваш аккаунт новым паролем." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Мы восстановим вашу предыдущую почту, выйдем из старых сеансов, отключим двухфакторную аутентификацию и защитим ваш аккаунт новым паролем." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Мы отправим код подтверждения на вашу п msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Мы отправим код подтверждения на вашу электронную почту, прежде чем вы сможете просмотреть резервные коды." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Мы отправим SMS-код, когда он будет доступен. Ваш номер не будет привязан к вашей учетной записи. Мы сохраним только зашифрованный маркер без идентификатора пользователя на ограниченное время." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Мы подтвердим ваш текущий адрес эл. почты, а затем новый — с помощью одноразовых кодов." @@ -39307,7 +38645,7 @@ msgstr "Вебхук {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Вебхук создан" @@ -39331,7 +38669,7 @@ msgstr "Вебхук обновлён" msgid "Webhook URL" msgstr "URL вебхука" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Вебхуки" @@ -39486,8 +38824,8 @@ msgstr "То, чем вы делитесь, не обновляется" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Что нового?" @@ -39967,21 +39305,11 @@ msgstr "Вы можете удалить разрешение <0>{readMessageHis msgid "You can sign back in at any time." msgstr "Вы сможете снова войти в аккаунт в любое время." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Вы в любой момент можете попросить администраторов этого экземпляра о проверке человеком." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Вы всё ещё можете создать аккаунт или войти. Если приглашения снова будут включены, вы сможете использовать эту же ссылку, чтобы присоединиться." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Вы по-прежнему можете в любое время написать нам на {supportEmail}, чтобы запрос рассмотрел человек." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Можно использовать ссылки, эмодзи и Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Сюда нельзя добавлять выражения" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Вы не можете добавлять новые реакции, пока у вас тайм-аут." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Нельзя добавить себя в друзья" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Здесь нельзя изменить ваш никнейм" @@ -40094,7 +39422,7 @@ msgstr "Вы не можете отправить себе запрос в др msgid "You can't send messages in this channel." msgstr "Вы не можете отправлять сообщения в этом канале." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Вы не можете отправлять сообщения в этом сообществе." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "У вас нет разрешения на это действие с этим участником." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "У вас нет разрешения присоединиться к этому голосовому каналу" @@ -40243,7 +39571,7 @@ msgstr "У вас нет разрешения на переименование msgid "You have been banned from this community." msgstr "Вы забанены в этом сообществе." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Вы заблокировали пользователя {username}. Разблокируйте его, чтобы отправлять сообщения." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "У вас есть несохраненные изменения." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "У вас есть несохраненные изменения. Сохраните или сбросьте их, прежде чем уйти." @@ -40270,7 +39598,7 @@ msgstr "У вас есть несохраненные изменения. Сох msgid "You haven't authorized any applications to access your account." msgstr "Вы пока не авторизовали ни одно приложение для доступа к вашему аккаунту." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Вы состоите в этом сообществе недостаточно долго, чтобы отправлять сообщения." @@ -40326,11 +39654,6 @@ msgstr "Чтобы создать аккаунт, вы должны соглас msgid "You must verify your email before sending a report." msgstr "Чтобы отправить жалобу, подтвердите адрес электронной почты." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Чтобы изменить почту, вам нужен доступ к текущему адресу. Используйте подтверждение по телефону, если доступно, или обратитесь в поддержку." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Вам нужно разрешение «{manageRolesPermissionLabel}», msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Вам нужно разрешение «{manageRolesPermissionLabel}», чтобы редактировать эти разрешения." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Чтобы просматривать и редактировать вебхуки в этом канале, вам нужно разрешение «{manageWebhooksPermissionLabel}»." @@ -40384,18 +39707,14 @@ msgstr "Чтобы создать сообщество, нужно сначал msgid "You need to claim your account before you can start a direct message." msgstr "Чтобы начать личный чат, нужно подтвердить аккаунт." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Чтобы отправлять личные сообщения, нужно подтвердить аккаунт." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Чтобы отправлять сообщения в этом сообществе, нужно подтвердить аккаунт." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Чтобы отправлять сообщения в этом сообществе, подтвердите номер телефона." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Чтобы начать личный чат, нужно подтверд msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Чтобы приобрести {premiumProductFullName}, вам нужно подтвердить адрес электронной почты." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Чтобы отправлять сообщения в этом сообществе, подтвердите свою почту." @@ -40424,11 +39743,6 @@ msgstr "Чтобы отправлять сообщения в этом сооб msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "У вас или у кого-то из добавляемых уже открыто максимальное количество групповых чатов. Закройте один и попробуйте снова." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Вы остаетесь в {ownedNames}. Владельцы не могут покинуть свое сообщество." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Модераторы отключили вам звук" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "После авторизации вы будете перенаправлены на {redirectHostname}." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Вы покинете {count, plural, one {# сообщество} few {# сообщества} many {# сообществ} other {# сообщества}}, где действует эта проверка, и ваш аккаунт снова будет работать нормально." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Вы покинете {guildNames}. Все ваши сообщения останутся, и вы сможете присоединиться снова позже." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Вам всё ещё нужно будет завершить шаг с электронной почтой." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Слишком быстро" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Вы слишком торопитесь. Подождите немного и попробуйте снова." @@ -40636,7 +39935,7 @@ msgstr "Вы отправляете сообщения слишком быстр msgid "You're streaming!" msgstr "Вы ведете трансляцию!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "У вас тайм-аут. Сообщения, реакции и голосовая связь приостановлены до истечения тайм-аута." @@ -40764,25 +40063,25 @@ msgstr "Платёж за продление через {storeName} не про msgid "Your account" msgstr "Ваш аккаунт" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Ваш аккаунт сразу вернется в обычный режим, и номер телефона вам больше не понадобится. Это не постоянное исключение, и мы можем запросить эту проверку позже." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Ваш аккаунт успешно привязан. Теперь вы можете закрыть эту вкладку и вернуться в приложение." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Ваш аккаунт снова в порядке." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Ваш аккаунт ограничен" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Ваша учетная запись ограничена. Проверьте почту, чтобы узнать, как снять ограничения." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Ваш аккаунт ещё не подтверждён. Без электронной почты и пароля вы не сможете войти с других устройств и можете потерять доступ к аккаунту. Подтвердите аккаунт сейчас, чтобы обезопасить его." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Ваш аккаунт слишком новый, чтобы отправлять сообщения в этом сообществе." @@ -40800,11 +40099,6 @@ msgstr "Для вашего аккаунта требуется многофак msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Ваш аккаунт больше не будет защищен двухфакторной аутентификацией при входе с помощью пароля. Вы также потеряете расширенные разрешения в сообществах, где требуется двухфакторная аутентификация." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Ваш аккаунт снова заработает сразу, и ничего не будет удалено. Мы можем запросить эту проверку позже." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Проверяем карту, чтобы подобрать цены д msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Ваша карта подходит. Перенаправляем вас на страницу оплаты." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Ваш оператор сообщил, что номер не обслуживается. Проверьте его и попробуйте снова или обратитесь в службу поддержки, если номер указан верно." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Ваши изменения увидят все сообщества, подписанные на этот канал. Это может занять минуту. Каждое опубликованное сообщение можно быстро отредактировать 3 раза, а затем по одному разу каждые 20 минут." @@ -40869,21 +40158,6 @@ msgstr "Ваше устройство предложит сохранить об msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Ваше устройство предложит сохранить обновлённый ключ доступа для {name}. Используйте тот же телефон или ключ безопасности, что и только что." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Ваш адрес электронной почты обновлен." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "На вашу почту не доходят письма. Добавьте действующий адрес, чтобы мы могли с вами связаться." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "На вашу почту не доходят письма. Обновите адрес, чтобы продолжить пользоваться {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Ваш адрес электронной почты подтверждён. Теперь вы можете войти в свой аккаунт." @@ -41000,21 +40274,11 @@ msgstr "Не удалось обновить сообщение" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "С момента вашей последней покупки прошло слишком много времени, чтобы оформить возврат. Обратитесь в службу поддержки по вопросам оплаты." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "ваш новый адрес эл. почты" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Новый никнейм. Оставьте поле пустым, чтобы сбросить его." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Ваш номер не привязан к аккаунту. Мы храним только зашифрованный маркер без идентификатора пользователя в течение ограниченного времени." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Ваш платеж отменен. Теперь вы можете закрыть эту вкладку и вернуться в приложение." @@ -41054,11 +40318,6 @@ msgstr "Ваши купленные подарки" msgid "your region" msgstr "ваш регион" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Чтобы продолжить, нужно пройти дополнительную антиспам-проверку." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/sv-SE/messages.po b/fluxer_app/src/features/i18n/locales/sv-SE/messages.po index 59a590505..3cda3494e 100644 --- a/fluxer_app/src/features/i18n/locales/sv-SE/messages.po +++ b/fluxer_app/src/features/i18n/locales/sv-SE/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# reaktion} other {# reaktioner}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# person som reagerat} other {# personer som reagerat}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# sekund} other {# sekunder}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber} av {totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} kl. {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Din inbjudningslänk upphör att gälla om # sekund.} other {Din inbjudningslänk upphör att gälla om # sekunder.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Valda: {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 minut" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 timmar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 månader (1 år)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Reservkoder för 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Krav på 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 medlemmar (skriver)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 månader" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 timmar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 månader" @@ -2575,11 +2575,6 @@ msgstr "en minut" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "En ny version av datorappen är tillgänglig. Ladda ner installationsprogrammet och kör det för att uppdatera {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "En ny verifieringskod har skickats." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Kontodata" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Kontot finns för att skräpposta, lura eller missbruka plattformen." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Konto begränsat" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Kontostatus" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Kontot är för nytt" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Kontoverifiering krävs" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Lägg till en bot i en community med begärda behörigheter" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Lägg till en kommentar (valfritt)" @@ -3054,8 +3052,10 @@ msgstr "Lägg till ett ämne i den här kanalen" msgid "Add a word…" msgstr "Lägg till ett ord…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Lägg till en fungerande e-postadress" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Lägg till ett konto för att fortsätta." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Lägg till en e-postadress och ett lösenord till ditt konto först." @@ -3424,11 +3424,6 @@ msgstr "Tillagd: {createdDate} • senast använd: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Ytterligare kommentarer (valfritt)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Ytterligare verifiering krävs" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Alla språk" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Redan inställd för uppsägning" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Anmäl även det här meddelandet till säkerhetsteamet på {productName}" @@ -4713,11 +4708,6 @@ msgstr "Fråga innan du startar samtal" msgid "Ask for a passkey after your password when you sign in" msgstr "Be om en lösennyckel efter ditt lösenord när du loggar in" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Be administratörerna för den här instansen att granska ditt konto. Instansen drivs fristående, och bara dess administratörer kan ändra ditt konto." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Tar automatiskt bort spårningsparametrar (som utm_source, fbclid, gclid msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Ta automatiskt bort spårningsparametrar från webbadresser i meddelanden du skickar" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Granska automatiskt meddelanden efter sexuellt explicit innehåll i kanaler som inte är markerade för vuxet innehåll." @@ -5359,8 +5349,6 @@ msgstr "Borta just nu" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Tillbaka" @@ -6506,11 +6494,6 @@ msgstr "Kameror och virtuella inspelningsenheter väljs här i {productName}, in msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Kameror är avstängda vid fler än {voiceChannelCameraUserLimit} deltagare" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Kommer du inte åt den e-postadressen?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Kan inte ladda upp filer här" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Kan inte ladda upp filer här" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Ändra e-postadress" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Ändra emoji" @@ -7201,7 +7184,7 @@ msgstr "Ändrade användargränsen från {oldCount} till {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Ändrade den anpassade URL:en från {oldCode} till {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Ändrade verifieringsnivån från {oldLevel} till {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kanal eller kategori" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Åsidosättningar av kanalbehörigheter" @@ -7509,8 +7492,6 @@ msgstr "Kontrollera din anslutning och försök igen." msgid "Check your connection, then try again." msgstr "Kontrollera din anslutning och försök igen." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Välj en skärm i systemväljaren" msgid "Choose a GIF" msgstr "Välj en GIF-bild" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Välj en metod" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Välj ett nytt lösenord." @@ -7680,8 +7656,8 @@ msgstr "Välj en åtgärd." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Välj en emoji" @@ -7749,11 +7725,6 @@ msgstr "Välj hur din instans fungerar" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Välj en av metoderna nedan för att bevisa domänägarskap. Du behöver bara slutföra en." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Välj en verifieringsmetod. Båda metoderna kan användas för att slutföra den här kontrollen." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Välj vad {clientLabel} får göra i din community. Avmarkera behörighe msgid "Choose what friends see in their active now panel" msgstr "Välj vad vänner ser i sin panel för aktiva nu" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Välj vad medlemmar måste ha innan de kan skriva inlägg eller skicka direktmeddelanden till communitymedlemmar." @@ -8030,8 +8001,8 @@ msgstr "Rensar mikrofonsignalen för tydligt tal." msgid "Clear" msgstr "Rensa" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Rensa efter" @@ -8053,7 +8024,7 @@ msgstr "Rensa alla simulerade bilagor" msgid "Clear all token overrides" msgstr "Rensa alla tokenåsidosättningar" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Rensa simulerade bilagor" @@ -8066,14 +8037,14 @@ msgstr "Rensa kommando" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Rensa anpassad status" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Rensa alla reaktioner från det här meddelandet?" @@ -8124,7 +8095,7 @@ msgstr "Rensa sökfält" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Koltema" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Kommandon" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Kommentarer är inaktiverade eftersom en eller flera valda kanaler har långsamt läge aktiverat. Kommentaren skulle blockeras av långsamt läge direkt efter vidarebefordran." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Kommentarer är inaktiverade eftersom långsamt läge är aktiverat i {forwardChannelDisplayName}. Kommentaren skulle blockeras av långsamt läge direkt efter vidarebefordran." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Kommentarer är inte tillgängliga när långsamt läge är aktiverat." @@ -8670,11 +8639,11 @@ msgstr "Communities" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Sammanslutningar och kanaler där du inte kan hantera webhooks är dolda." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Communities som listas i Upptäck måste granska meddelanden från alla medlemmar. Den här inställningen kan inte ändras medan Upptäck är aktiverat." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Communities som listas i Upptäck måste kräva minst e-postverifiering. ”Ingen” kan inte väljas medan Upptäck är aktiverat." @@ -8827,7 +8796,7 @@ msgstr "Namn på community" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Smeknamn i communityn" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Communityprofil" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Communityprofilen uppdaterad" @@ -8907,7 +8876,7 @@ msgstr "Inställning för märke för olästa meddelanden i communityn" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Communityn uppdaterad" @@ -8952,11 +8921,6 @@ msgstr "Jämförelse" msgid "Complete mature content check" msgstr "Slutför kontrollen för vuxet innehåll" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Slutför verifieringen med en av metoderna nedan för att fortsätta använda {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Slutför betalning" msgid "Complete the mature content check to unlock mature media." msgstr "Slutför kontrollen för vuxet innehåll för att låsa upp medier med vuxet innehåll." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Slutför de obligatoriska stegen för e-post- och telefonverifiering nedan för att fortsätta använda {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Slutför den obligatoriska verifieringen för att fortsätta använda {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Konfigurera ditt profilmärke" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Anslutningar omordnade" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Samtycke krävs" @@ -9349,16 +9304,6 @@ msgstr "Skapa en auktoriserings-URL med behörighetsomfång och behörigheter." msgid "Contact" msgstr "Kontakt" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Kontakta support" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Kontakta administratörerna för den här instansen för att få hjälp." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Innehållsskapare" msgid "Content filter" msgstr "Innehållsfilter" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Innehållsfiltrering" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Innehållstyp för kodning" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Säkerhetskontroller för innehåll" @@ -9416,12 +9361,10 @@ msgstr "Snabbmenyer kan öppnas med vänsterklick (på knappar) eller högerklic #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Styr hur indikatorn för olästa meddelanden fungerar för tystade kanal msgid "Control which chat updates are announced by assistive technology." msgstr "Styr vilka chattuppdateringar som läses upp av hjälpmedel." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Konversationen hittades inte" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Kunde inte lägga till tagg" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Kunde inte lägga till den här vännen i gruppen. Försök igen." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Kunde inte lägga till i grupp" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Kunde inte skapa en temalänk" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Kunde inte skapa inbjudningslänk" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Kunde inte avsluta din respitperiod" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Kunde inte skapa en inbjudningslänk. Försök igen." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Kunde inte bearbeta bilden" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Kunde inte publicera detta meddelande" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Kunde inte gå med i Visionary-communityn igen" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Kunde inte ta bort anslutningsljudet" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Kunde inte spara kanalinställningar" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Kunde inte spara anslutningsljudet" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Kunde inte dra tillbaka ansökan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Nedräkningstimer" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Land" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Skapa administratörskontot" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Skapa grupp-DM-konversationen med {addableCount, plural, one {# återstående mottagare} other {# återstående mottagare}} och hoppa över de andra?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Skapa webhook" @@ -10948,7 +10884,7 @@ msgstr "Anpassad emoji {emojiName} från en community" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Anpassade anslutningsljud är inte aktiverade på den här instansen." @@ -11108,7 +11044,7 @@ msgstr "Anpassad röstbehandling" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Anpassad varningstext" @@ -11530,11 +11466,6 @@ msgstr "Standardsökmotor" msgid "Default shortcuts" msgstr "Standardgenvägar" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Standardflik" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Ta bort det här meddelandet" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Ta bort det här meddelandet? Det går inte att ångra." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Ta bort det här meddelandet? Kan inte ångras. Meddelandet tas också bort från alla communities som följer den här kanalen." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Utvecklarläge" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Utvecklaralternativ" @@ -12299,7 +12230,7 @@ msgstr "Direktinmatning" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Visningsläge" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Visningsnamn" @@ -12858,7 +12789,7 @@ msgstr "Vill du gå med i {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doktor, jag är från framtiden. Jag kom hit i en tidsmaskin som du uppfann. Nu behöver jag din hjälp för att komma tillbaka till år 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Redigera lokal tid för profil" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Redigera publicerat meddelande?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Redigera dina meddelanden ovanför eller nedanför" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Redigera profilens utseende och se en förhandsvisning direkt" @@ -13590,10 +13521,8 @@ msgstr "Du kan få återbetalning fram till {windowEndsOn}. Då avslutas även d msgid "Email" msgstr "E-post" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "E-postadress krävs." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-postadress ändrad" @@ -13616,49 +13547,17 @@ msgstr "E-postadress ändrad" msgid "Email delivery" msgstr "E-postleverans" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-post eller telefon" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "E-post eller telefon måste verifieras igen" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "E-post måste verifieras igen" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-postadressen är inte tillgänglig" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Det går inte att uppdatera e-postadressen just nu. Försök igen senare eller kontakta supporten." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "E-postadressen måste uppdateras" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Skicka ett mejl till oss så granskar en person ditt konto. Berätta att du inte kan verifiera via SMS så tar vi hand om resten. Svaret kommer via e-post, så det kan ta en stund." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Meddelandefält för e-postverifiering" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "E-postverifiering krävs" @@ -13675,6 +13574,10 @@ msgstr "Åsidosätt verifieringsstatus för e-postadressen" msgid "Email verified successfully" msgstr "E-postadressen har verifierats" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "E-postmeddelanden till din nuvarande adress levereras inte. Ange en ny e-postadress så skickar vi en kod dit." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Inbäddningar" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Inbäddningar dolda" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Inbäddningar visas" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Aktivera uppspelning av /tts-tal" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Aktivera 2FA på ditt konto för att ändra den här inställningen" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Ange en giltig malladress eller kod för {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Ange en giltig e-postadress." @@ -14298,33 +14199,11 @@ msgstr "Ange en giltig e-postadress." msgid "Enter a valid message link." msgstr "Ange en giltig meddelandelänk." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Ange ett giltigt mobilnummer." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Ange ett giltigt telefonnummer" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Ange ett giltigt användarnamn ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Ange en e-postadress du har tillgång till. Vi skickar en kod dit." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Ange kod" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Gå till helskärmsläge" msgid "Enter gift code…" msgstr "Ange presentkod…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Ange ny e-postadress" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Ange en av dina reservkoder om du inte kan använda din lösennyckel." msgid "Enter one of your backup codes." msgstr "Ange en av dina reservkoder." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Ange telefonnummer" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Ange den {digitCount}-siffriga koden från din autentiseringsapp eller e msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Ange den {digitCount}-siffriga koden från din autentiseringsapp." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Ange den {digitCount}-siffriga koden som skickats till {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Ange den {MFA_CODE_DIGIT_COUNT}-siffriga koden som skickades till {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Ange koden" @@ -14408,11 +14267,6 @@ msgstr "Ange koden innan du fortsätter." msgid "Enter the code from your authenticator app." msgstr "Ange koden från din autentiseringsapp." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Ange koden som skickats till {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Ange koden som skickats till din nuvarande e-postadress." @@ -14426,6 +14280,7 @@ msgstr "Ange koden som skickats till din e-postadress." msgid "Enter the code shown in the app to continue." msgstr "Ange koden som visas i appen för att fortsätta." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Ange koden vi mejlade till din nya adress." @@ -14434,11 +14289,6 @@ msgstr "Ange koden vi mejlade till din nya adress." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Ange koden vi skickade till din e-post för att verifiera den. Ditt lösenord ställs in när koden har bekräftats." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Ange e-postkoden" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Ange inbjudningslänken för att gå med i en community." @@ -14452,11 +14302,6 @@ msgstr "Ange den nya e-postadress du vill använda. Vi skickar en kod dit sedan. msgid "Enter the PIN for your security key to continue." msgstr "Ange PIN-koden för din säkerhetsnyckel för att fortsätta." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Ange SMS-koden" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Ange den här koden i din webbläsare för att slutföra inloggningen." @@ -14492,11 +14337,6 @@ msgstr "Ange ditt namn" msgid "Enter your password." msgstr "Ange ditt lösenord." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Ange ditt telefonnummer" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Anslutningsljud" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Filer för anslutningsljud får vara högst {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Biblioteket för anslutningsljud är fullt" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Anslutningsljudet borttaget" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Anslutningsljudet sparat" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Anslutningsljud" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Anslutningsljud är inte tillgängliga" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Upphör:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Inställning för filter av sexuellt explicit innehåll" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Kunde inte kopiera till urklipp" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Kunde inte skapa webhook" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Det gick inte att läsa in anpassad URL. Försök igen." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Det gick inte att läsa in webhooks" @@ -15190,11 +15030,6 @@ msgstr "Kunde inte ta bort den anpassade URL:en. Försök igen." msgid "Failed to resend code. Try again." msgstr "Det gick inte att skicka koden igen. Försök igen." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Det gick inte att skicka verifieringskoden igen. Försök igen senare." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Kunde inte skicka meddelande. Håll ned för alternativ." msgid "Failed to send report. Try again." msgstr "Kunde inte skicka anmälan. Försök igen." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Det gick inte att skicka verifieringsmeddelandet. Försök igen senare." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Kunde inte starta" @@ -15551,15 +15381,15 @@ msgstr "Filtrera efter användare" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Filtrera alla" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Filtrera medlemmar utan roller" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Följ den här kanalen" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Följ för att få dessa meddelanden i en kanal du väljer." @@ -15773,7 +15603,7 @@ msgstr "Följt kanal {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Följda kanaler" @@ -15857,11 +15687,6 @@ msgstr "Bara för brittiska ögon..." msgid "For me" msgstr "För mig" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Vid den här kontrollen skickar du ett SMS till oss i stället för att ta emot ett från oss." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "För din säkerhet, bekräfta att det är du för att fortsätta." @@ -15905,7 +15730,7 @@ msgstr "Tvinga fram laddningsplatshållare" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Tvinga fram medier med vuxet innehåll" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Tvinga flytt till AFK-kanal" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Tvinga bort behörigheten {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Tvinga fram visning av friskrivning för anpassad URL" msgid "Force show voice connection" msgstr "Visa röstanslutning alltid" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Tvinga fram aktivt långsamt läge" @@ -16020,7 +15845,7 @@ msgstr "Vidarebefordra medieobjekt" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Vidarebefordra meddelande" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Överlägg för geografisk blockering" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Geobegränsad" @@ -16490,12 +16315,6 @@ msgstr "Få en animerad avatar och banner, en prenumerantbricka, den fyrsiffriga msgid "Get monthly" msgstr "Skaffa månadsvis" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Hämta ny kod" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Presentkoder" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Presentens varaktighet" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Presentlager" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Flöde för presentlagret" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Presenten hittades inte" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Presenten är inlöst" @@ -17030,7 +16849,7 @@ msgstr "Grupp-DM-konversation" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Hej {displayName}, säkra ditt konto så att du inte förlorar åtkomsten." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Hej {displayName}, verifiera din e-postadress." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Hej {displayName}, vi kan inte leverera e-post till din adress. Lägg till en fungerande e-postadress för att verifiera ditt konto." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Dölja din egen skärmdelning?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Hög" @@ -17755,11 +17579,6 @@ msgstr "Jag är ett verktygstips" msgid "I changed my mind" msgstr "Jag ångrade mig" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Jag behöver ett annat sätt" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Om anmälan gäller ett specifikt meddelande, anmäl det meddelandet i s msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Om anmälan gäller specifika meddelanden, anmäl det mest relevanta meddelandet i stället. Meddelandeanmälningar ger vårt säkerhetsteam tydligast sammanhang. Detaljer i kommentarerna kan hjälpa oss att granska anmälan snabbare. Fortsätt bara med att anmäla användaren som helhet om en meddelandeanmälan inte skulle täcka det större problemet." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Om du inte kan verifiera via SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Om du inte kan använda någon verifieringsmetod, kontakta supporten för hjälp." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Gränssnittsstorlek" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Ogiltig ljudfil" @@ -18674,8 +18483,10 @@ msgstr "Ogiltig JSON. Klistra in hela svaret från URL:en ovan." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Gå med i röstsamtal" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Gå med i röstkanalen" @@ -19613,16 +19424,6 @@ msgstr "Läs mer om Visionary" msgid "Leave" msgstr "Lämna" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Lämna {count, plural, one {# community} other {# communities}} och skjuta upp den här kontrollen?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Lämna och skjut upp kontrollen" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Låt skärmläsare läsa upp nya meddelanden när de kommer in i den öppna kanalen. Aviseringsljud påverkas inte." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Låt communityn självmoderera" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Bibliotek" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Biblioteket är fullt (max {max} ljud). Ta bort ett innan du lägger till ett nytt." @@ -19812,7 +19613,7 @@ msgstr "Bibliotek: {count} av {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Livstid" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Läser in..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Laddar…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Låg" @@ -20416,7 +20217,7 @@ msgstr "Hantera communityfunktioner" msgid "Manage emoji & stickers" msgstr "Hantera emojier och klistermärken" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Hantera inkommande webhooks som kan publicera meddelanden i den här kanalen." @@ -20514,7 +20315,7 @@ msgstr "Markera alla olästa inkorgskanaler som lästa direkt, utan att fråga o msgid "Mark as read" msgstr "Markera som läst" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Markera som inlöst" @@ -20676,14 +20477,14 @@ msgstr "Community med vuxet innehåll" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Vuxet innehåll" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Vuxet innehåll och innehållsvarningar" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maximal livslängd (dagar)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Maximalt skydd för familjevänliga utrymmen" @@ -20924,7 +20725,7 @@ msgstr "Stoppa uppspelning" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Medlemmens bannlysning hävd" msgid "Member updated" msgstr "Medlem uppdaterad" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Medlemsverifiering" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Verifieringsnivå för medlemmar" @@ -21048,7 +20849,7 @@ msgstr "Medlemmar tas bort när de är offline om de inte har tilldelats en roll msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Medlemmar med behörigheten \"{pinMessagesPermissionLabel}\" kan fästa meddelanden åt alla." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Medlemmar med roller kan kringgå dessa kontroller. För offentliga utrymmen rekommenderar vi att du aktiverar verifiering." @@ -21153,7 +20954,7 @@ msgstr "Omnämnanden av dig visas här i {retentionDays} dagar." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Endast omnämnanden" @@ -21292,7 +21093,7 @@ msgstr "Inställningar för meddelandevisning är bara tillgängliga på datorn. msgid "Message editing" msgstr "Redigera meddelande" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Meddelande vidarebefordrat" @@ -21341,7 +21142,7 @@ msgstr "Knappar för meddelandeinmatning" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Meddelandet är för långt" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Meddelandeförhandsvisningar i DM-listan" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Meddelande publicerat" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Meddelanden som publiceras i #{sourceName} kommer nu att visas i #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Meddelanden som publiceras i dessa meddelandekanaler kopieras hit." @@ -21504,7 +21305,7 @@ msgstr "Meddelanden som publiceras i dessa meddelandekanaler kopieras till dina msgid "Messages you can bookmark" msgstr "Meddelanden du kan bokmärka" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Det är tillfälligt pausat att skicka meddelanden i den här communityn." @@ -21733,30 +21534,30 @@ msgstr "Simulera att det går ut om 1 dag" msgid "Mock expires in 7 days" msgstr "Simulera att det går ut om 7 dagar" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Simulera överlägg för geografisk blockering" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Simulera presentlager" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Simulera inkommande samtal" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Simulera orsak till åtkomstkontroll för kanaler med vuxet innehåll" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Simulera orsak till åtkomstkontroll för medier med vuxet innehåll" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Simulera plats i Storbritannien" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Fiktiva användarprofilbilder i olika storlekar och alla statuskombinationer." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Simulerad variant" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Simulerade produktflöden" @@ -22698,14 +22494,16 @@ msgstr "Ny community tystad" msgid "New direct message" msgstr "Nytt direktmeddelande" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Ny e-postadress" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Formulär för ny e-postadress" @@ -22816,9 +22614,7 @@ msgstr "Nyast först" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Nästa" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Nej" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Ingen behörighet för {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Ingen behörighet för {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Inga ändringar att spara" msgid "No channels available" msgstr "Inga kanaler tillgängliga" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Inga kanaler hittades" @@ -23233,11 +23029,6 @@ msgstr "Inga behörigheter hittades" msgid "No personal words yet." msgstr "Inga personliga ord än." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Inget telefonnummer" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Inga resultat" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Inga resultat hittades" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Inga användare hittades" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Ingen verifiering krävs." @@ -23452,7 +23243,7 @@ msgstr "Ingen verifiering krävs." msgid "No verification methods available" msgstr "Inga verifieringsmetoder tillgängliga" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Inga webhooks" @@ -23504,7 +23295,7 @@ msgstr "Ingen konvertering" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Ingen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Ingen (normalt beteende)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norska" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Inte medlem tillräckligt länge" @@ -23798,9 +23589,9 @@ msgstr "Föremål" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Av" @@ -23848,7 +23639,7 @@ msgstr "Äldst först" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "På" @@ -23884,11 +23675,6 @@ msgstr "En eller flera bilagor kunde inte läsas eller laddas upp. Filen kan ha msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "En eller flera filer du försöker ladda upp överskrider den maximala storleksgränsen på {maxSizeFormatted} per fil." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "En snabb kontroll" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Endast högtalare" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Bara communityägaren kan ändra den här inställningen" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Öppna emoji i webbläsaren" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Öppna emojiväljaren" @@ -24382,12 +24168,8 @@ msgstr "Öppna menyikon" msgid "Open message history threshold" msgstr "Öppna inställningen för meddelandehistorikens gränsdatum" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Öppna överlägg" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Öppna popup-fönster" @@ -24485,11 +24267,6 @@ msgstr "Öppna den nya appen. Du är redan inloggad." msgid "Open the shortcuts list for quick actions." msgstr "Öppna genvägslistan för snabba åtgärder." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Öppna verifieringsmeddelandet och använd länken inuti. Det här fönstret uppdateras när länken har öppnats." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Öppna inställningar för ljud och video" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Öppna din webbläsare, logga in och ange sedan koden nedan för att länka ditt konto." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Öppna dina meddelanden" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Öppna din gamla {PRODUCT_NAME}-app, välj Länka en ny enhet och ange sedan koden nedan." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Öppna telefonens meddelandeapp och skapa ett nytt SMS." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Öppna telefonens meddelandeapp och påbörja ett nytt SMS." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Annan reaktion…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Vår kontroll av telefonnummer är nere just nu. Det är vårt fel, inte ditt nummer. Vänta några minuter och försök med samma nummer igen." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Nätfiske, bedrägeri, skadliga länkar eller falska påståenden som sannolikt orsakar verklig skada." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefon" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Telefonnummer" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Telefonnummer krävs" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Telefonnummer verifierat" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Telefonverifiering krävs igen" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Telefonsteg" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Telefonverifiering är inte tillgänglig för det här kontot. Använd en annan metod eller kontakta support." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Telefonverifiering krävs" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Välj fyrsiffriga numret efter ditt användarnamn" msgid "Pick the appearance this administrator account should start with." msgstr "Välj utseendet som detta administratörskonto ska börja med." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Välj den metod du kan slutföra nu." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Bild i bild" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Fäst" @@ -25471,7 +25176,7 @@ msgstr "Fäst grupp-DM" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Fäst eller lossa valfritt meddelande." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Fäst det här meddelandet i kanalen så att alla kan se det." @@ -26227,18 +25932,18 @@ msgstr "Profilfärg" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Anpassa profil" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Profilanpassning för {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Formulär för profilanpassning" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Profiltyp" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profilen uppdaterad" @@ -26340,7 +26045,7 @@ msgstr "Fråga när nya ljudenheter upptäcks" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Samordning av räder" msgid "Rate" msgstr "Hastighet" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Hastighetsbegränsad" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Rå JSON för inbäddning" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Ta bort {userName} från dina vänner?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Ta bort alla" @@ -27290,7 +26990,7 @@ msgstr "Ta bort alla {emojiNameWithColons}-reaktioner från det här meddelandet #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Ta bort alla reaktioner" @@ -27899,20 +27599,10 @@ msgstr "Användartagg för anmäld person (valfritt)" msgid "Reposts: <0>{countLabel}" msgstr "Återpubliceringar: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Begär en ny kod först." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Begär en ny återställningslänk" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Begär en verifieringskod först." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Förfrågningar" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Kräv 2FA för moderatoråtgärder" @@ -27958,7 +27648,7 @@ msgstr "Kräv auktoriseringskodflödet i OAuth2" msgid "Require passkey" msgstr "Kräv lösennyckel" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Kräv tvåfaktorsautentisering för moderatorer innan de kan bannlysa eller sparka ut medlemmar, ge dem timeout eller radera meddelanden." @@ -27972,46 +27662,6 @@ msgstr "Obligatoriskt" msgid "Required 2FA for moderation actions" msgstr "Krävde 2FA för modereringsåtgärder" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Standardflik för obligatorisk åtgärd" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Obligatoriskt åtgärdsflöde" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Obligatoriskt telefonsteg" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Laddningsläge vid omskick för obligatorisk åtgärd" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Resultat av omskick av obligatorisk åtgärd" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Text för omverifiering av obligatorisk åtgärd" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Obligatorisk åtgärdsvariant" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Överlägg för obligatoriska åtgärder" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Kräver en omdirigerings-URI och en auktoriseringskod när denna bot bjuds in." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Kräver en verifierad e-postadress och ett konto som är minst 5 minuter gammalt." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Kräver en verifierad e-postadress." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Kräver ett verifierat telefonnummer." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Kräver allt på nivån ”Medel” samt att du har varit medlem i communityn i minst 10 minuter." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Skicka igen ({resendSecondsRemaining} s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Skicka igen ({secondsRemaining} s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Laddningsläge för knappen Skicka igen" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Skicka kod igen" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Skicka e-post igen" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Resultat av omskick" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Skickat igen" @@ -28518,21 +28152,6 @@ msgstr "Visa" msgid "Reveal spoiler" msgstr "Visa spoiler" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Verifiera din e-postadress igen eller verifiera ditt telefonnummer för att fortsätta använda {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Verifiera din e-postadress igen för att fortsätta använda {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Verifiera ditt telefonnummer igen för att fortsätta använda {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Mättnad" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Förhandsvisning vid spolning" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Sök kanaler" msgid "Search communities" msgstr "Sök communities" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Sök länder..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Sök länder…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Välj ditt bosättningsland." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Välj…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Skicka" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Skicka ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Skicka en till anmälan" msgid "Send button" msgstr "Skicka-knapp" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Skicka kod" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Skicka meddelanden" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Det är inaktiverat att skicka meddelanden" @@ -30151,32 +29759,11 @@ msgstr "Skicka sparat medieobjekt {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Skicka text-till-tal-meddelanden med /tts. Medlemmar som har aktiverat text-till-tal hör dem upplästa." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Skicka koden <0>{0} till <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Skicka koden till telefonnumret nedan." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Skicka den här koden" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Ska den här fästade posten skickas tillbaka i tiden?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Skicka till" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Skicka röstmeddelande" msgid "Send:" msgstr "Skicka:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Att skicka ett SMS till det här telefonnumret är för dyrt för {PRODUCT_NAME}, så vi behöver att du skickar ett SMS till oss istället. Vi vet att det här inte är optimalt. Du kan också be administratörerna för den här instansen att ta bort det här kravet från ditt konto." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Att skicka ett SMS till det här telefonnumret är för dyrt för {PRODUCT_NAME}, så vi behöver att du skickar ett SMS till oss istället. Vi vet att det här inte är optimalt. Du kan också kontakta <0>{SUPPORT_EMAIL} för att få oss att ta bort det här kravet från ditt konto." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Skicka seriellt" msgid "Serve the token file" msgstr "Tillhandahåll tokenfilen" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Tjänstefel" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Ange anpassad genväg för \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Ange anpassad status" @@ -30486,18 +30060,6 @@ msgstr "Ställde in röstregionen till {region}" msgid "Set the voice region to automatic" msgstr "Ställde in röstregionen till automatisk" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Skjut upp den här kontrollen" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Skjuta upp den här kontrollen?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Ange dina pronomen" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Ange din status" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Kortkommandon pausas under inspelningen." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Korta ner meddelandet och försök igen." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Visa en {productName}-ikon i meddelandefältet eller menyraden" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Visa en innehållsvarning" @@ -31672,7 +31234,7 @@ msgstr "Långsamt läge · vänta {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Långsamt läge aktivt" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Långsamt läge är inställt på {durationLabel}. Vänta innan du skickar ett nytt meddelande." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Återstående väntetid i långsamt läge" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Simulering av långsamt läge" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Återstående tid för långsamt läge" @@ -31807,11 +31369,6 @@ msgstr "Mjuk rullning" msgid "Smoother video" msgstr "Mjukare video" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Sms-verifiering är inte tillgänglig just nu. Försök igen senare eller kontakta supporten." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Något gick fel när klistermärket skulle förberedas. Prova en annan fil eller försök igen om en stund." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Något gick fel när meddelandet publicerades. Försök igen om en stund." @@ -32009,11 +31566,9 @@ msgstr "Något gick fel. Ladda om sidan eller logga in igen." msgid "Something went wrong. Try again later." msgstr "Något gick fel. Försök igen senare." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Något gick fel. Försök igen." @@ -32352,11 +31907,6 @@ msgstr "SSO-inloggningen tog för lång tid. Försök igen." msgid "Staff controls" msgstr "Personalinställningar" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Standardtaxor för meddelanden från din operatör kan tillkomma." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Stjärnanimation" msgid "Starred channels" msgstr "Stjärnmärkta kanaler" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Prenumeranttransport:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Abonnemang" @@ -33051,14 +32599,12 @@ msgstr "Abonnemangsscenarier" msgid "Subtext" msgstr "Undertext" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Lyckades" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Föreslås för de flesta communities" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "System och välkomstmeddelande" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Systemmeddelanden från {productName}-personal. Du kan inte svara här." @@ -33765,11 +33311,6 @@ msgstr "Textmarkering" msgid "Text size" msgstr "Textstorlek" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Sms:a oss från din telefon" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Thailändska" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Tack för att du hjälper till att hålla {productName} säkert. Vi granskar din anmälan så snart som möjligt." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Koden fungerade inte. Kontrollera den och försök igen." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Koden har gått ut. Begär en ny kod." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Åtgärden slutfördes inte. Du kan redan ha lämnat vissa communities och ditt konto är fortfarande låst. Tryck på ”Skjut upp den här kontrollen” igen för att slutföra." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Det gick inte igenom. Ingenting har ändrats. Försök igen." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Det där ser inte ut som en giltig färg. Prova hex, rgb(), hsl() eller msgid "That doesn't look like a valid URL." msgstr "Det där ser inte ut som en giltig URL." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "E-postadressen används redan." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Åsidosättningen nekade {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Sidan du letar efter finns inte eller har flyttats." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Telefonkontrollen har skjutits upp. Ett e-poststeg återstår." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Det finns inga kanaler tillgängliga att skapa en inbjudan för." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Det finns inga roller att tilldela i den här communityn just nu, men du kan skapa en ny roll i <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Det finns inga webhooks konfigurerade för den här kanalen. Skapa en webhook för att tillåta externa appar att skicka meddelanden." @@ -34273,7 +33784,7 @@ msgstr "Det gick inte att läsa in inbjudningarna. Försök igen." msgid "There was an error loading the stickers. Try again." msgstr "Ett fel uppstod vid inläsning av klistermärkena. Försök igen." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Det gick inte att läsa in webhooks för den här kanalen. Försök igen." @@ -34417,7 +33928,7 @@ msgstr "Den här kanalen kan publicera 10 meddelanden i rad, sedan ett till var msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Den här kanalen kan publicera 10 meddelanden i rad, sedan ett till var sjätte minut. Försök igen om några minuter." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Den här kanalen har inte stöd för webhooks." @@ -34550,12 +34061,12 @@ msgstr "Den här anslutningen har inte verifierats." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Detta innehåller känsligt innehåll." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Den här konversationen är inte längre tillgänglig." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Den här gruppen har för många medlemmar" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Den här gruppen är full. Ta bort någon innan du lägger till fler personer." @@ -34715,11 +34226,6 @@ msgstr "Det här är en anpassad klistermärke från en community." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Det här är en åldersbegränsad kanal. Uppdateringar kan bara skickas till åldersbegränsade kanaler." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Detta är en antispamkontroll. Ditt telefonnummer är inte kopplat till ditt konto." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Det här är inaktiverat" msgid "This is how messages appear" msgstr "Så här visas meddelanden" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Det här är inte tillgängligt för ditt konto just nu. Be administratörerna för den här instansen att granska det." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Det här är inte tillgängligt för ditt konto just nu. Mejla {supportEmail} så granskar en person det." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Det här är inte kanalen du letar efter." @@ -34792,11 +34288,6 @@ msgstr "Det här är din sista lösennyckel, och lösennycklar är din andra fak msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Det här är din sista lösennyckel. När den är borta kan du inte längre använda en lösennyckel som din andra faktor." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Det här är inte ett mobilnummer, så det kan inte ta emot våra SMS. Prova ett mobilnummer, eller kontakta support om du tror att det är fel." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Det här meddelandet har redan raderats." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Det här meddelandet har redan publicerats" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Det här meddelandet finns inte längre." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Det här smeknamnet syns bara i den här communityn" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Det här numret verifieras genom att skicka ett SMS till oss istället. Gå tillbaka och starta telefonverifieringen igen för att få koden och numret att skicka till." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Det här numret måste verifieras genom att du skickar ett SMS till oss i stället för att ta emot ett från oss." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Den här deltagarens ljud är avstängt" msgid "This participant was deafened by moderators" msgstr "Moderatorerna stängde av den här deltagarens ljud" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Det här telefonnumret kan inte användas. Prova ett annat mobilnummer eller kontakta supporten." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Det här telefonnumret har redan använts. Prova ett annat nummer eller kontakta supporten." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Den här användaren har inga roller i den här communityn." msgid "This user is already banned from the community." msgstr "Användaren är redan bannlyst från communityn." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Den här användaren är inte längre tillgänglig." @@ -35065,11 +34536,6 @@ msgstr "En plattformsadministratör lade till den här användaren i communityn msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Verifieringssessionen har löpt ut. Gå tillbaka till {productName} och starta kassan igen." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Verifieringssessionen har löpt ut. Börja om." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Detta loggar ut dig, rensar cachelagrade filer och sparade sessioner och msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Detta kommer att lita på alla externa länkar och hoppa över varningen för varje domän. Dina befintliga betrodda domäner kommer att ersättas. Detta är mindre säkert." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Det här fönstret uppdateras automatiskt när vi har tagit emot ditt meddelande." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Namnlist" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Plattform för namnlist" @@ -35470,18 +34931,11 @@ msgstr "Ton" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Tonmappa HDR-bilder till standardomfång, vilket minskar den högsta ljusstyrkan." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "För många försök. Vänta en stund och försök igen." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "För många communities" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "För många förfrågningar. Försök igen senare." @@ -36151,8 +35605,10 @@ msgstr "Det gick inte att förbereda några emojier för uppladdning. Följande #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Ej tillgänglig" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Okategoriserade" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Osäkrat konto" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Oordnad" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Lossa" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Lossa meddelande" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Vill du ta bort fästningen för det här meddelandet?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Osparade ändringar" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Ljudfilen har ett format som inte stöds." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Tills jag slår på det igen" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Overifierad e-post" @@ -36958,12 +36414,7 @@ msgstr "Uppdatera {productName} för att se det här meddelandet." msgid "Update app" msgstr "Uppdatera appen" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Uppdatera e-postadress" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Uppdatera min status" @@ -37306,18 +36757,13 @@ msgstr "Använd {url} där bildens URL ska infogas." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Använd en särskild dialog för att ange ett gränsdatum för meddelandehistorik för medlemmar utan behörigheten {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Använd en annan e-postadress och verifiera den med en kod." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Använd faktiskt värde" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Använd faktisk premiumtyp" @@ -37335,16 +36781,6 @@ msgstr "Använd en annan metod" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Använd en autentiseringsapp för att generera koder för tvåfaktorsautentisering" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Använd en e-postadress du har tillgång till. Vi skickar en kod dit." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Använd en annan e-postadress än din nuvarande." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Använd mörkt tema i hela appen" msgid "Use default" msgstr "Använd standard" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Använd annan e-postadress" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Använd e-post" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Använd lösennycklar för tvåfaktorsautentisering?" msgid "Use passkeys to sign in without a password" msgstr "Använd lösennycklar för att logga in utan lösenord" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Använd telefon" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Använd text för omverifiering" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Användaren byter kanal" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Användaren hittades inte" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Verifiering" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Verifiering och medlemskapsbarriärer" @@ -37970,15 +37387,8 @@ msgstr "Verifieringskod" msgid "Verification code sent" msgstr "Verifieringskod skickad" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Verifieringskod skickad. Kolla din nya e-postinkorg." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Verifieringsmejl skickat. Kolla din inkorg." @@ -38038,23 +37448,6 @@ msgstr "Formulär för identitetsverifiering" msgid "Verify it's you" msgstr "Verifiera att det är du" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Verifiera telefonnummer" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Verifiera telefonnummer" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Formulär för att verifiera telefonnummer" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Verifiera din e-postadress innan du lägger till en autentiseringsapp." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Verifiera din e-postadress innan du ändrar ditt smeknamn, din avatar, banner, presentation, dina pronomen eller din accentfärg i communityn." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Verifiera din e-postadress innan du ändrar ditt användarnamn, visningsnamn, din avatar, banner, presentation, dina pronomen, din tidszon eller sekretessen för ditt {premiumProductName}-märke." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Verifiera din e-postadress innan du redigerar den här communityprofilen. Du kan fortfarande förhandsgranska den här." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Verifiera din e-postadress innan du redigerar din profil. Du kan fortfarande förhandsgranska den här." @@ -38113,11 +37506,6 @@ msgstr "Verifiera din e-postadress innan du skickar vänförfrågningar." msgid "Verify your email first" msgstr "Verifiera din e-postadress först" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Verifiera din e-postadress eller ditt telefonnummer för att fortsätta använda {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Verifiera din e-postadress för att köpa presenter." msgid "Verify your email to change your username" msgstr "Verifiera din e-postadress för att ändra ditt användarnamn" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Verifiera din e-postadress för att fortsätta använda {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Verifiera din e-postadress för att redigera den här communityprofilen" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Verifiera din e-postadress för att redigera din profil" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Version" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Mycket hög" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Höj volymen" msgid "Wait a moment before deleting more messages." msgstr "Vänta en stund innan du tar bort fler meddelanden." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Vänta ett ögonblick. Det här fönstret stängs automatiskt när vi har tagit emot ditt meddelande." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Vänta mellan meddelanden. Medlemmar med behörigheten ”{bypassSlowmodePermissionLabel}” kan kringgå detta." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Vänta här" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Väntar på lösennyckel…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Väntar på att långsamt läge i {forwardChannelDisplayName} ska upphöra." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Väntar på att väntetiden för långsamt läge ska löpa ut i en eller flera valda kanaler." @@ -39115,16 +38482,6 @@ msgstr "Vi kunde inte läsa det här temat. Det kan vara skadat eller ogiltigt." msgid "We couldn't remove that account. Try again." msgstr "Vi kunde inte ta bort kontot. Försök igen." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Vi kunde inte verifiera numret automatiskt. Kontakta supporten så granskar en person ditt konto." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Vi skickar inte verifierings-SMS till det här landet. Prova ett mobilnummer från ett annat land eller kontakta supporten." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Vi hittade ett befintligt {premiumProductFullName}-abonnemang för det h msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Vi har sänkt priset på {premiumProductName} i Brasilien. Det kostar nu {monthlyPrice} i månaden eller {yearlyPrice} om året." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Vi behöver ett verifieringssteg innan du kan fortsätta. Detta hjälper till att skydda konton och hålla spam borta från {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Vi behöver två verifieringssteg innan du kan fortsätta. Vi visar ett steg i taget." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Vi rekommenderar att du sparar de här koderna nu så att du inte blir utelåst från ditt konto." @@ -39167,11 +38514,6 @@ msgstr "Vi skickade en kod till {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Vi fyller i {prefillEmail} automatiskt när inloggningen öppnas i webbläsaren." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Vi skickar en SMS-kod när det är möjligt." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Vi skulle gärna ge dig mer än en livstid med {PREMIUM_PRODUCT_NAME}, men det skulle bryta mot rumtidskontinuumet. Skicka presenten till en vän i stället?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Vi behandlar detta så snart som möjligt. Du får ett mejl när ditt arkiv är klart." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Vi återställer din tidigare e-postadress, loggar ut gamla sessioner, tar bort telefonnummer, inaktiverar MFA och säkrar ditt konto med ett nytt lösenord." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Vi återställer din tidigare e-postadress, loggar ut gamla sessioner, inaktiverar MFA och säkrar ditt konto med ett nytt lösenord." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Vi skickar en verifieringskod till din e-post innan du kan ändra ditt l msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Vi skickar en verifieringskod till din e-postadress innan du kan se dina reservkoder." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Vi skickar en SMS-kod när den är tillgänglig. Ditt nummer är inte kopplat till ditt konto. Vi behåller endast en krypterad markör, utan användar-ID, under en begränsad tid." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Vi verifierar din nuvarande e-postadress och sedan din nya e-postadress med engångskoder." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook skapad" @@ -39331,7 +38669,7 @@ msgstr "Webhook uppdaterad" msgid "Webhook URL" msgstr "Webhook-URL" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhooks" @@ -39486,8 +38824,8 @@ msgstr "Det du delar uppdateras inte" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Vad händer?" @@ -39967,21 +39305,11 @@ msgstr "Du kan ta bort behörigheten <0>{readMessageHistoryPermissionLabel} msgid "You can sign back in at any time." msgstr "Du kan logga in igen när som helst." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Du kan när som helst be administratörerna för den här instansen om en manuell granskning." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Du kan fortfarande skapa ett konto eller logga in. Om inbjudningar aktiveras igen senare kan du använda samma länk för att gå med." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Du kan fortfarande mejla {supportEmail} för en manuell granskning när som helst." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Du kan använda länkar, emojier och Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Du kan inte lägga till uttryck där" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Du kan inte lägga till nya reaktioner när du har timeout." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Du kan inte bli vän med dig själv" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Du kan inte ändra ditt smeknamn här" @@ -40094,7 +39422,7 @@ msgstr "Du kan inte skicka en vänförfrågan till dig själv." msgid "You can't send messages in this channel." msgstr "Du kan inte skicka meddelanden i den här kanalen." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Du kan inte skicka meddelanden i den här communityn." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Du har inte behörighet att göra detta med den här medlemmen." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Du har inte behörighet att gå med i den här röstkanalen" @@ -40243,7 +39571,7 @@ msgstr "Du har inte behörighet att byta namn på den här emojin. Namnet åters msgid "You have been banned from this community." msgstr "Du har blivit bannlyst från den här communityn." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Du har blockerat {username}. Avblockera för att skicka meddelanden." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Du har osparade ändringar." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Du har osparade ändringar. Spara eller återställ innan du lämnar." @@ -40270,7 +39598,7 @@ msgstr "Du har osparade ändringar. Spara eller återställ innan du lämnar." msgid "You haven't authorized any applications to access your account." msgstr "Du har inte auktoriserat några appar att komma åt ditt konto." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Du har inte varit medlem i den här communityn tillräckligt länge för att skicka meddelanden." @@ -40326,11 +39654,6 @@ msgstr "Du måste godkänna användarvillkoren för att skapa ett konto" msgid "You must verify your email before sending a report." msgstr "Du måste verifiera din e-postadress innan du kan skicka en anmälan." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Du behöver åtkomst till din nuvarande e-postadress för att ändra den härifrån. Använd telefonverifiering om det finns tillgängligt eller kontakta supporten." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Du behöver behörigheten \"{manageRolesPermissionLabel}\" för att redi msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Du behöver behörigheten \"{manageRolesPermissionLabel}\" för att redigera dessa behörigheter." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Du behöver behörigheten \"{manageWebhooksPermissionLabel}\" för att visa och redigera webhooks för den här kanalen." @@ -40384,18 +39707,14 @@ msgstr "Du måste säkra ditt konto innan du kan skapa en community." msgid "You need to claim your account before you can start a direct message." msgstr "Du måste säkra ditt konto innan du kan starta en DM-konversation." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Du måste säkra ditt konto för att skicka direktmeddelanden." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Du måste säkra ditt konto för att skicka meddelanden i den här communityn." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Du måste verifiera ett telefonnummer för att skicka meddelanden i den här communityn." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Du måste verifiera din e-postadress innan du kan starta en DM-konversat msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Du måste verifiera din e-postadress innan du kan köpa {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Du måste verifiera din e-postadress för att skicka meddelanden i den här communityn." @@ -40424,11 +39743,6 @@ msgstr "Du måste verifiera din e-postadress för att skicka meddelanden i den h msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Du eller någon du lägger till har redan det maximala antalet grupp-DM öppna. Lämna en och försök igen." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Du stannar i {ownedNames}. Ägare kan inte lämna sin egen community." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Moderatorerna stängde av ditt ljud" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Du kommer att skickas till {redirectHostname} efter auktoriseringen." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Du kommer att lämna {count, plural, one {# community} other {# communities}} som denna kontroll gäller för, och ditt konto fungerar som vanligt igen." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Du kommer att lämna {guildNames}. Inget du har skrivit raderas, och du kan gå med igen senare." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Du behöver fortfarande slutföra e-poststeget." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Du går för snabbt" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Du går för snabbt. Vänta ett ögonblick och försök igen." @@ -40636,7 +39935,7 @@ msgstr "Du skickar meddelanden för snabbt" msgid "You're streaming!" msgstr "Du sänder!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Du har timeout. Du kan inte skicka meddelanden, reagera eller delta i röstchatt förrän timeouten löper ut." @@ -40764,25 +40063,25 @@ msgstr "Din förnyelsebetalning via {storeName} misslyckades, men <0/> är aktiv msgid "Your account" msgstr "Ditt konto" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Ditt konto återgår till det normala direkt och du behöver ingen telefonnummer nu. Detta är inte ett permanent undantag, och vi kan komma att begära denna kontroll igen senare." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Ditt konto har länkats. Du kan nu stänga den här fliken och återgå till appen." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Ditt konto är tillbaka som vanligt." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Ditt konto är begränsat" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Ditt konto är begränsat. Kontrollera din e-post för instruktioner om hur du tar bort begränsningen." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Ditt konto är ännu inte säkrat. Utan e-postadress och lösenord kan du inte logga in från andra enheter och riskerar att förlora åtkomsten till kontot. Säkra ditt konto nu." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Ditt konto är för nytt för att skicka meddelanden i den här communityn." @@ -40800,11 +40099,6 @@ msgstr "Ditt konto kräver multifaktorautentisering, men ingen metod som stöds msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Ditt konto skyddas inte längre av tvåfaktorsautentisering när du loggar in med ditt lösenord. Du kommer också att förlora förhöjda behörigheter i communities som kräver tvåfaktorsautentisering." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Ditt konto fungerar som vanligt igen direkt och inget tas bort. Vi kan be om den här kontrollen igen senare." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Ditt kort kontrolleras för regional prissättning. Det brukar ta en stu msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Ditt kort är godkänt. Du omdirigeras nu till betalningssidan." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Din mobiloperatör säger att numret inte är i bruk. Kontrollera det och försök igen, eller kontakta support om det stämmer." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Dina ändringar når alla communities som följer den här kanalen, vilket kan ta en minut. Varje publicerat meddelande tillåter 3 snabba redigeringar, sedan 1 var 20:e minut." @@ -40869,21 +40158,6 @@ msgstr "Din enhet kommer att be dig spara en uppdaterad lösennyckel för {name} msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Din enhet kommer att be dig spara en uppdaterad lösennyckel för {name}. Använd samma telefon eller säkerhetsnyckel som du precis använde." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Din e-postadress har uppdaterats." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Din e-postadress kunde inte ta emot meddelanden. Lägg till en fungerande e-postadress så att vi kan hålla ditt konto nåbart." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Din e-postadress kunde inte ta emot meddelanden. Uppdatera den för att fortsätta använda {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Din e-postadress har verifierats. Du kan nu logga in på ditt konto." @@ -41000,21 +40274,11 @@ msgstr "Ditt meddelande uppdaterades inte" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Ditt senaste köp ligger inte längre inom återbetalningsperioden. Kontakta supporten om du har problem med faktureringen." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "din nya e-postadress" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Ditt nya smeknamn, eller lämna tomt för att återställa det." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Ditt nummer är inte kopplat till ditt konto. Vi sparar bara en krypterad markör, utan användar-ID, under en begränsad tid." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Din betalning avbröts. Du kan nu stänga den här fliken och återgå till appen." @@ -41054,11 +40318,6 @@ msgstr "Dina köpta presenter" msgid "your region" msgstr "din region" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Din registrering behöver en extra antispamkontroll innan du kan fortsätta." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/th/messages.po b/fluxer_app/src/features/i18n/locales/th/messages.po index b96140b7d..5d44aeab0 100644 --- a/fluxer_app/src/features/i18n/locales/th/messages.po +++ b/fluxer_app/src/features/i18n/locales/th/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# รีแอ็กชัน} other {# รีแ msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {ผู้กดรีแอ็กชัน # คน} other {ผู้กดรีแอ็กชัน # คน}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# วินาที} other {# วินาที}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} เวลา {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {ลิงก์เชิญของคุณจะหมดอายุในอีก # วินาที} other {ลิงก์เชิญของคุณจะหมดอายุในอีก # วินาที}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "เลือกแล้ว {selectedCount} รายการ" @@ -2252,7 +2252,7 @@ msgstr "1 นาที" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 ชั่วโมง" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 เดือน (1 ปี)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "สำรองข้อมูล 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "ข้อกำหนด 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "สมาชิก 3 คน (กำลังพิมพ์)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 เดือน" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 ชั่วโมง" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 เดือน" @@ -2575,11 +2575,6 @@ msgstr "1 นาที" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "มีเวอร์ชันเดสก์ท็อปใหม่พร้อมให้ดาวน์โหลดแล้ว โปรดดาวน์โหลดไฟล์ติดตั้งและเรียกใช้เพื่ออัปเดต {productName}" -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "ส่งรหัสยืนยันใหม่แล้ว" - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "ข้อมูลบัญชี" msgid "Account exists to spam, scam, or abuse the platform." msgstr "บัญชีนี้ถูกสร้างขึ้นเพื่อสแปม หลอกลวง หรือใช้แพลตฟอร์มในทางที่ผิด" +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "บัญชีถูกจำกัด" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "สถานะบัญชี" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "บัญชีใหม่เกินไป" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "ต้องยืนยันบัญชี" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "เพิ่มบอทเข้าสู่คอมมูนิตี้พร้อมสิทธิ์ที่ร้องขอ" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "เพิ่มความคิดเห็น (ไม่บังคับ)" @@ -3054,8 +3052,10 @@ msgstr "เพิ่มหัวข้อในช่องนี้" msgid "Add a word…" msgstr "เพิ่มคำ…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "เพิ่มอีเมลที่ใช้งานได้" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "เพิ่มบัญชีเพื่อดำเนินการต่อ" #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "เพิ่มอีเมลและรหัสผ่านลงในบัญชีของคุณก่อน" @@ -3424,11 +3424,6 @@ msgstr "เพิ่มเมื่อ: {createdDate} • ใช้งานล msgid "Additional comments (optional)" msgstr "ความคิดเห็นเพิ่มเติม (ไม่บังคับ)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "ต้องยืนยันตัวตนเพิ่มเติม" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "ทุกภาษา" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "ตั้งค่าให้ยกเลิกไว้แล้ว" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "รายงานข้อความนี้ไปยังทีมความปลอดภัยของ {productName} ด้วย" @@ -4713,11 +4708,6 @@ msgstr "ถามก่อนเริ่มโทร" msgid "Ask for a passkey after your password when you sign in" msgstr "ขอพาสคีย์ต่อจากรหัสผ่านของคุณเมื่อคุณลงชื่อเข้าใช้" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "ขอให้ผู้ดูแลระบบของอินสแตนซ์นี้ตรวจสอบบัญชีของคุณ อินสแตนซ์นี้ดำเนินการอย่างอิสระ และมีเพียงผู้ดูแลระบบของอินสแตนซ์นี้เท่านั้นที่เปลี่ยนแปลงบัญชีของคุณได้" - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "ลบพารามิเตอร์ติดตาม (เช่น msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "ลบพารามิเตอร์ติดตามออกจาก URL ในข้อความที่คุณส่งโดยอัตโนมัติ" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "คัดกรองข้อความที่มีเนื้อหาโจ่งแจ้งโดยอัตโนมัติในช่องที่ไม่ได้ระบุว่าเป็นเนื้อหาสำหรับผู้ใหญ่" @@ -5359,8 +5349,6 @@ msgstr "ไม่อยู่ตอนนี้" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "ย้อนกลับ" @@ -6506,11 +6494,6 @@ msgstr "กล้องและอุปกรณ์จับภาพเสม msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "ปิดกล้องเมื่อมีผู้เข้าร่วมเกิน {voiceChannelCameraUserLimit} คน" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "เข้าถึงอีเมลนั้นไม่ได้ใช่ไหม" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "อัปโหลดไฟล์ที่นี่ไม่ได้" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "อัปโหลดไฟล์ที่นี่ไม่ได้" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "เปลี่ยนอีเมล" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "เปลี่ยนอิโมจิ" @@ -7201,7 +7184,7 @@ msgstr "เปลี่ยนขีดจำกัดผู้ใช้จาก msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "เปลี่ยน URL ที่กำหนดเองจาก {oldCode} เป็น {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "เปลี่ยนระดับการยืนยันจาก {oldLevel} เป็น {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "ช่องหรือหมวดหมู่" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "การแทนที่สิทธิ์ช่อง" @@ -7509,8 +7492,6 @@ msgstr "ตรวจสอบการเชื่อมต่อของคุ msgid "Check your connection, then try again." msgstr "ตรวจสอบการเชื่อมต่อของคุณ แล้วลองใหม่อีกครั้ง" -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "เลือกหน้าจอในตัวเลือกของ msgid "Choose a GIF" msgstr "เลือก GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "เลือกวิธีการยืนยัน" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "ตั้งรหัสผ่านใหม่" @@ -7680,8 +7656,8 @@ msgstr "เลือกการดำเนินการ" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "เลือกอิโมจิ" @@ -7749,11 +7725,6 @@ msgstr "เลือกวิธีการทำงานของอินส msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "เลือกวิธีใดวิธีหนึ่งด้านล่างเพื่อยืนยันความเป็นเจ้าของโดเมน คุณต้องทำเพียงวิธีเดียวเท่านั้น" -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "เลือกวิธียืนยันตัวตนหนึ่งวิธี ใช้วิธีใดก็ผ่านการตรวจสอบนี้ได้" - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "เลือกสิ่งที่ {clientLabel} ทำได้ใน msgid "Choose what friends see in their active now panel" msgstr "เลือกสิ่งที่เพื่อนเห็นในแผงกำลังใช้งานอยู่ตอนนี้" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "เลือกสิ่งที่สมาชิกต้องมีก่อนที่จะโพสต์หรือส่งข้อความส่วนตัวถึงสมาชิกในคอมมูนิตี้ได้" @@ -8030,8 +8001,8 @@ msgstr "ปรับปรุงไมโครโฟนของคุณเพ msgid "Clear" msgstr "ล้าง" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "ล้างสถานะหลังจาก" @@ -8053,7 +8024,7 @@ msgstr "ล้างไฟล์แนบจำลองทั้งหมด" msgid "Clear all token overrides" msgstr "ล้างการแทนที่โทเค็นทั้งหมด" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "ล้างข้อมูลจำลองไฟล์แนบ" @@ -8066,14 +8037,14 @@ msgstr "ล้างคำสั่ง" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "ล้างสถานะที่กำหนดเอง" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "ลบทุกรีแอ็กชันออกจากข้อความนี้ใช่ไหม" @@ -8124,7 +8095,7 @@ msgstr "ล้างช่องค้นหา" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "ธีมถ่านหิน" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "คำสั่ง" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "ปิดใช้งานความคิดเห็นเนื่องจากมีช่องที่เลือกไว้อย่างน้อยหนึ่งช่องเปิดโหมดจำกัดเวลาอยู่ ความคิดเห็นจะถูกบล็อกด้วยโหมดจำกัดเวลาทันทีหลังส่งต่อ" #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "ปิดใช้งานความคิดเห็นเนื่องจาก {forwardChannelDisplayName} เปิดโหมดจำกัดเวลาอยู่ ความคิดเห็นจะถูกบล็อกด้วยโหมดจำกัดเวลาทันทีหลังส่งต่อ" #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "ไม่สามารถแสดงความคิดเห็นได้เมื่อเปิดโหมดจำกัดเวลา" @@ -8670,11 +8639,11 @@ msgstr "คอมมูนิตี้" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "ชุมชนและช่องทางที่คุณไม่สามารถจัดการเว็บฮุกได้จะถูกซ่อนไว้" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "คอมมูนิตี้ที่อยู่ใน Discovery ต้องสแกนข้อความจากสมาชิกทุกคน การตั้งค่านี้เปลี่ยนแปลงไม่ได้ขณะที่เปิดใช้งาน Discovery" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "คอมมูนิตี้ที่อยู่ใน Discovery ต้องมีการยืนยันอีเมลเป็นอย่างน้อย จะเลือก \"ไม่มี\" ไม่ได้ขณะที่เปิดใช้งาน Discovery" @@ -8827,7 +8796,7 @@ msgstr "ชื่อคอมมูนิตี้" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "ชื่อเล่นในคอมมูนิตี้" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "โปรไฟล์คอมมูนิตี้" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "อัปเดตโปรไฟล์คอมมูนิตี้แล้ว" @@ -8907,7 +8876,7 @@ msgstr "ระดับป้ายแจ้งเตือนที่ยัง #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "อัปเดตคอมมูนิตี้แล้ว" @@ -8952,11 +8921,6 @@ msgstr "เปรียบเทียบ" msgid "Complete mature content check" msgstr "ดำเนินการตรวจสอบเนื้อหาสำหรับผู้ใหญ่ให้เสร็จสิ้น" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "ดำเนินการยืนยันตัวตนวิธีใดวิธีหนึ่งด้านล่างเพื่อใช้งาน {productName} ต่อไป" - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "ชำระเงินให้เสร็จสมบูรณ์" msgid "Complete the mature content check to unlock mature media." msgstr "ทำการตรวจสอบเนื้อหาสำหรับผู้ใหญ่ให้เสร็จสิ้นเพื่อปลดล็อกสื่อสำหรับผู้ใหญ่" -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "ทำตามขั้นตอนการยืนยันอีเมลและเบอร์โทรศัพท์ที่จำเป็นด้านล่างเพื่อใช้งาน {productName} ต่อไป" - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "ดำเนินการยืนยันที่จำเป็นเพื่อใช้งาน {productName} ต่อไป" - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "ตั้งค่าป้ายโปรไฟล์" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "จัดเรียงการเชื่อมต่อใหม่แล้ว" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "ต้องให้ความยินยอม" @@ -9349,16 +9304,6 @@ msgstr "สร้าง URL การอนุญาตพร้อมขอบ msgid "Contact" msgstr "ติดต่อ" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "ติดต่อฝ่ายสนับสนุน" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "ติดต่อผู้ดูแลระบบของอินสแตนซ์นี้เพื่อขอความช่วยเหลือ" - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "ผู้สร้างเนื้อหา" msgid "Content filter" msgstr "ตัวกรองเนื้อหา" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "การกรองเนื้อหา" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "ประเภทเนื้อหา" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "ด่านความปลอดภัยของเนื้อหา" @@ -9416,12 +9361,10 @@ msgstr "เมนูบริบทสามารถเปิดได้ด้ #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "ควบคุมการแสดงตัวบ่งชี้ข้ msgid "Control which chat updates are announced by assistive technology." msgstr "ควบคุมว่าเทคโนโลยีสิ่งอำนวยความสะดวกจะประกาศอัปเดตแชทใดบ้าง" -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "ไม่พบการสนทนา" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "เพิ่มแท็กไม่ได้" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "เพิ่มเพื่อนคนนี้เข้ากลุ่มไม่ได้ โปรดลองอีกครั้ง" #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "เพิ่มเข้ากลุ่มไม่ได้" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "สร้างลิงก์ธีมไม่ได้" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "สร้างลิงก์เชิญไม่ได้" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "สิ้นสุดช่วงผ่อนผันไม่ได้" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "สร้างลิงก์เชิญไม่ได้ โปรดลองอีกครั้ง" @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "ประมวลผลรูปภาพไม่ได้" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "ไม่สามารถเผยแพร่ข้อความนี้ได้" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "ไม่สามารถเข้าร่วมคอมมูนิตี้ Visionary อีกครั้งได้" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "นำเสียงเข้าออกไม่ได้" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "ไม่สามารถบันทึกการตั้งค่าช่องได้" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "บันทึกเสียงเข้าไม่ได้" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "ถอนใบสมัครไม่ได้" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "ตัวจับเวลาถอยหลัง" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "ประเทศ" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "สร้างบัญชีผู้ดูแลระบบ" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "สร้างแชทกลุ่มกับ{addableCount, plural, other {ผู้รับที่เหลืออีก # คน}}และข้ามคนอื่นใช่หรือไม่" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "สร้าง webhook" @@ -10948,7 +10884,7 @@ msgstr "อิโมจิแบบกำหนดเอง {emojiName} จา #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "ไม่ได้เปิดใช้เสียงเข้าห้องแชทแบบกำหนดเองในอินสแตนซ์นี้" @@ -11108,7 +11044,7 @@ msgstr "การประมวลผลเสียงแบบกำหนด #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "ข้อความเตือนที่กำหนดเอง" @@ -11530,11 +11466,6 @@ msgstr "เครื่องมือค้นหาเริ่มต้น" msgid "Default shortcuts" msgstr "ปุ่มลัดเริ่มต้น" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "แท็บเริ่มต้น" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "เดลาแวร์" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "ลบข้อความนี้" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "ลบข้อความนี้ใช่หรือไม่ การดำเนินการนี้จะยกเลิกไม่ได้" #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "ลบข้อความนี้หรือไม่? ไม่สามารถยกเลิกได้ ข้อความนี้จะถูกลบออกจากทุกคอมมูนิตี้ที่ติดตามแชทนี้ด้วย" @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "โหมดนักพัฒนา" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "ตัวเลือกสำหรับนักพัฒนา" @@ -12299,7 +12230,7 @@ msgstr "อินพุตโดยตรง" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "โหมดการแสดงผล" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "ชื่อที่แสดง" @@ -12858,7 +12789,7 @@ msgstr "คุณต้องการเข้าร่วม {communityName} #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "ด็อก ผมมาจากอนาคต ผมมาที่นี่ด้วยไทม์แมชชีนที่คุณเป็นคนประดิษฐ์ขึ้นมา ตอนนี้ผมต้องการความช่วยเหลือจากคุณเพื่อกลับไปยังปี 1985" @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "แก้ไขเวลาท้องถิ่นในโปรไฟล์" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "แก้ไขข้อความที่เผยแพร่แล้วหรือไม่?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "แก้ไขข้อความของคุณด้านบนหรือด้านล่าง" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "แก้ไขรูปลักษณ์โปรไฟล์ของคุณและดูตัวอย่างแบบเรียลไทม์" @@ -13590,10 +13521,8 @@ msgstr "มีสิทธิ์ได้รับเงินคืนจนถ msgid "Email" msgstr "อีเมล" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "ต้องระบุที่อยู่อีเมล" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "เปลี่ยนอีเมลแล้ว" @@ -13616,49 +13547,17 @@ msgstr "เปลี่ยนอีเมลแล้ว" msgid "Email delivery" msgstr "การส่งอีเมล" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "อีเมลหรือเบอร์โทรศัพท์" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "ต้องยืนยันอีเมลหรือเบอร์โทรอีกครั้ง" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "ต้องยืนยันอีเมลอีกครั้ง" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "อีเมลไม่พร้อมใช้งาน" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "ขณะนี้ไม่สามารถอัปเดตอีเมลได้ โปรดลองอีกครั้งในภายหลังหรือติดต่อฝ่ายสนับสนุน" - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "ต้องอัปเดตอีเมล" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "ส่งอีเมลถึงเรา แล้วจะมีเจ้าหน้าที่มาตรวจสอบบัญชีของคุณ แจ้งเราว่าคุณไม่สามารถยืนยันด้วย SMS ได้ แล้วเราจะดำเนินการต่อ การตอบกลับจะส่งทางอีเมล ดังนั้นจึงไม่ใช่การดำเนินการทันที" - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "แถบแจ้งเตือนการยืนยันอีเมล" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "ต้องยืนยันอีเมล" @@ -13675,6 +13574,10 @@ msgstr "แทนที่การยืนยันอีเมล" msgid "Email verified successfully" msgstr "ยืนยันอีเมลสำเร็จแล้ว" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "อีเมลไปยังที่อยู่ปัจจุบันของคุณไม่สามารถจัดส่งได้ กรุณากรอกอีเมลใหม่ แล้วเราจะส่งรหัสไปที่นั่น" + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "การฝัง" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "ปิดการแสดงตัวอย่างแล้ว" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "เปิดการแสดงตัวอย่างแล้ว" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "เปิดใช้งานการอ่านออกเสียง /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "เปิดใช้งาน 2FA ในบัญชีของคุณเพื่อเปลี่ยนการตั้งค่านี้" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "ป้อน URL หรือรหัสเทมเพลต {theOtherPlatform} ที่ถูกต้อง" #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "ป้อนที่อยู่อีเมลที่ถูกต้อง" @@ -14298,33 +14199,11 @@ msgstr "ป้อนที่อยู่อีเมลที่ถูกต้ msgid "Enter a valid message link." msgstr "ป้อนลิงก์ข้อความที่ถูกต้อง" -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "ป้อนหมายเลขโทรศัพท์มือถือที่ถูกต้อง" - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "ป้อนหมายเลขโทรศัพท์ที่ถูกต้อง" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "ป้อนชื่อผู้ใช้ที่ถูกต้อง ({exampleFluxerTagFull})" -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "ป้อนที่อยู่อีเมลที่คุณเข้าถึงได้ เราจะส่งรหัสไปที่อีเมลนั้น" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "ป้อนรหัส" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "เข้าสู่โหมดเต็มหน้าจอ" msgid "Enter gift code…" msgstr "ป้อนรหัสของขวัญ…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "ป้อนอีเมลใหม่" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "ป้อนรหัสสำรองของคุณหนึ่ง msgid "Enter one of your backup codes." msgstr "ป้อนรหัสสำรองของคุณหนึ่งรหัส" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "ป้อนเบอร์โทรศัพท์" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "ป้อนรหัส {digitCount} หลักจากแอปย msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "ป้อนรหัส {digitCount} หลักจากแอปยืนยันตัวตนของคุณ" -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "ป้อนรหัส {digitCount} หลักที่ส่งไปยัง {phoneNumber}" - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "ป้อนรหัส {MFA_CODE_DIGIT_COUNT} หลักที่ส่งไปยัง {0}" - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "ป้อนรหัส" @@ -14408,11 +14267,6 @@ msgstr "ป้อนรหัสก่อนดำเนินการต่อ msgid "Enter the code from your authenticator app." msgstr "ป้อนรหัสจากแอปยืนยันตัวตนของคุณ" -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "ป้อนรหัสที่ส่งไปยัง {emailAddress}" - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "ป้อนรหัสที่ส่งไปยังอีเมลปัจจุบันของคุณ" @@ -14426,6 +14280,7 @@ msgstr "ป้อนรหัสที่ส่งไปยังอีเมล msgid "Enter the code shown in the app to continue." msgstr "ป้อนรหัสที่แสดงในแอปเพื่อดำเนินการต่อ" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "ป้อนรหัสที่เราส่งไปยังอีเมลใหม่ของคุณ" @@ -14434,11 +14289,6 @@ msgstr "ป้อนรหัสที่เราส่งไปยังอี msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "ป้อนรหัสที่เราส่งไปยังอีเมลของคุณเพื่อยืนยัน เราจะตั้งรหัสผ่านให้เมื่อยืนยันรหัสแล้ว" -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "ป้อนรหัสอีเมล" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "ป้อนลิงก์เชิญเพื่อเข้าร่วมคอมมูนิตี้" @@ -14452,11 +14302,6 @@ msgstr "ป้อนอีเมลใหม่ที่คุณต้องก msgid "Enter the PIN for your security key to continue." msgstr "ป้อนรหัส PIN ของคีย์ความปลอดภัยของคุณเพื่อดำเนินการต่อ" -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "ป้อนรหัส SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "ป้อนรหัสนี้ในเบราว์เซอร์เพื่อลงชื่อเข้าใช้ให้เสร็จสมบูรณ์" @@ -14492,11 +14337,6 @@ msgstr "ป้อนชื่อของคุณ" msgid "Enter your password." msgstr "ป้อนรหัสผ่านของคุณ" -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "ป้อนหมายเลขโทรศัพท์ของคุณ" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "เสียงเข้าห้อง" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "ไฟล์เสียงเข้าห้องต้องมีขนาดไม่เกิน {limit}" #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "คลังเสียงเข้าห้องเต็มแล้ว" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "นำเสียงเข้าห้องออกแล้ว" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "บันทึกเสียงเข้าห้องแล้ว" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "เสียงเข้าห้อง" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "เสียงเข้าห้องใช้ไม่ได้" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "หมดอายุ:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "การตั้งค่าตัวกรองเนื้อหาที่ไม่เหมาะสม" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "คัดลอกไปยังคลิปบอร์ดไม่สำเร็จ" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "สร้าง webhook ไม่สำเร็จ" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "โหลด URL ที่กำหนดเองไม่สำเร็จ ลองอีกครั้ง" #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "โหลด webhook ไม่สำเร็จ" @@ -15190,11 +15030,6 @@ msgstr "ลบ URL ที่กำหนดเองไม่สำเร็จ msgid "Failed to resend code. Try again." msgstr "ส่งรหัสอีกครั้งไม่สำเร็จ ลองอีกครั้ง" -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "ส่งรหัสยืนยันอีกครั้งไม่สำเร็จ โปรดลองอีกครั้งในภายหลัง" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "ส่งข้อความไม่สำเร็จ แตะค msgid "Failed to send report. Try again." msgstr "ส่งรายงานไม่สำเร็จ ลองอีกครั้ง" -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "ส่งอีเมลยืนยันไม่สำเร็จ โปรดลองอีกครั้งในภายหลัง" - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "เริ่มต้นไม่สำเร็จ" @@ -15551,15 +15381,15 @@ msgstr "กรองตามผู้ใช้" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "กรองทุกคน" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "กรองสมาชิกที่ไม่มีบทบาท" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "ติดตามช่องนี้" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "ติดตามเพื่อรับประกาศเหล่านี้ในช่องที่คุณเลือก" @@ -15773,7 +15603,7 @@ msgstr "ช่องที่ติดตาม {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "ช่องที่ติดตาม" @@ -15857,11 +15687,6 @@ msgstr "สำหรับชาวอังกฤษเท่านั้น... msgid "For me" msgstr "สำหรับฉัน" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "สำหรับการตรวจสอบนี้ คุณจะต้องส่งข้อความถึงเราแทนการรับข้อความจากเรา" - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "เพื่อความปลอดภัย โปรดยืนยันตัวตนเพื่อดำเนินการต่อ" @@ -15905,7 +15730,7 @@ msgstr "บังคับโครงร่างขณะโหลด" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "บังคับสื่อสำหรับผู้ใหญ่" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "บังคับย้ายไปช่อง AFK" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "บังคับไม่มีสิทธิ์ {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "บังคับแสดงข้อจำกัดความรั msgid "Force show voice connection" msgstr "บังคับแสดงการเชื่อมต่อเสียง" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "บังคับเปิดโหมดจำกัดเวลา" @@ -16020,7 +15845,7 @@ msgstr "ส่งต่อสื่อ" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "ส่งต่อข้อความ" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "การบล็อกตามพื้นที่" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "ถูกจำกัดตามพื้นที่" @@ -16490,12 +16315,6 @@ msgstr "รับอวาตาร์และแบนเนอร์แบบ msgid "Get monthly" msgstr "รับรายเดือน" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "ขอรหัสใหม่" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "รหัสของขวัญ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "ระยะเวลาของขวัญ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "คลังของขวัญ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "ขั้นตอนคลังของขวัญ" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "ไม่พบของขวัญ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "แลกของขวัญแล้ว" @@ -17030,7 +16849,7 @@ msgstr "แชทกลุ่ม" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "สวัสดี {displayName} โปรดยืนยันบัญชีของคุณเพื่อป้องกันการสูญเสียสิทธิ์เข้าถึง" #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "สวัสดี {displayName} โปรดยืนยันที่อยู่อีเมลของคุณ" +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "สวัสดี {displayName} เราไม่สามารถส่งอีเมลไปยังที่อยู่นี้ได้ โปรดเพิ่มอีเมลที่ใช้งานได้เพื่อยืนยันบัญชีของคุณ" + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "ซ่อนการแชร์หน้าจอของคุณห #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "สูง" @@ -17755,11 +17579,6 @@ msgstr "ฉันคือคำแนะนำ" msgid "I changed my mind" msgstr "เปลี่ยนใจแล้ว" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "ฉันต้องการวิธีอื่น" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "หากรายงานนี้เกี่ยวกับข้อ msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "หากรายงานนี้เกี่ยวกับข้อความที่เฉพาะเจาะจง ให้รายงานข้อความที่เกี่ยวข้องมากที่สุดแทน การรายงานข้อความจะช่วยให้ทีมความปลอดภัยของเราเข้าใจบริบทได้ชัดเจนที่สุด และการเพิ่มรายละเอียดในความคิดเห็นจะช่วยให้เราตรวจสอบได้เร็วขึ้น ดำเนินการรายงานผู้ใช้ทั้งหมดก็ต่อเมื่อการรายงานข้อความไม่สามารถครอบคลุมปัญหาในวงกว้างได้" -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "หากคุณไม่สามารถยืนยันด้วย SMS ได้" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "หากคุณไม่สามารถใช้วิธีการยืนยันตัวตนใดๆ ได้ โปรดติดต่อฝ่ายสนับสนุนเพื่อขอความช่วยเหลือ" - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "ขนาดอินเทอร์เฟซ" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "ไฟล์เสียงไม่ถูกต้อง" @@ -18674,8 +18483,10 @@ msgstr "JSON ไม่ถูกต้อง วางการตอบกลั #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "เข้าร่วมการโทรด้วยเสียง" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "เข้าร่วมช่องเสียง" @@ -19613,16 +19424,6 @@ msgstr "เรียนรู้เพิ่มเติมเกี่ยวก msgid "Leave" msgstr "ออก" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "ออกจาก {count, plural, one {# คอมมูนิตี้} other {# คอมมูนิตี้}} แล้วพักการตรวจสอบนี้ไว้ใช่ไหม" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "ออกจากคอมมูนิตี้และพักไว้" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "ให้โปรแกรมอ่านหน้าจอประกาศข้อความใหม่เมื่อมาถึงในช่องที่เปิดอยู่ เสียงแจ้งเตือนจะไม่ได้รับผลกระทบ" #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "ให้คอมมูนิตี้จัดการกันเอง" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "คลัง" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "คลังเต็ม (สูงสุด {max} เสียง) ลบเสียงก่อนเพิ่มเสียงอื่น" @@ -19812,7 +19613,7 @@ msgstr "คลัง: {count} จาก {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "ตลอดชีพ" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "กำลังโหลด..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "กำลังโหลด…" @@ -20261,7 +20062,7 @@ msgstr "ลุยเซียนา" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "ต่ำ" @@ -20416,7 +20217,7 @@ msgstr "จัดการฟีเจอร์ของคอมมูนิต msgid "Manage emoji & stickers" msgstr "จัดการอิโมจิและสติกเกอร์" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "จัดการ webhook ขาเข้าที่สามารถโพสต์ข้อความในช่องนี้ได้" @@ -20514,7 +20315,7 @@ msgstr "ทำเครื่องหมายช่องที่ยังไ msgid "Mark as read" msgstr "ทำเครื่องหมายว่าอ่านแล้ว" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "ทำเครื่องหมายว่าแลกแล้ว" @@ -20676,14 +20477,14 @@ msgstr "คอมมูนิตี้สำหรับผู้ใหญ่" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "เนื้อหาสำหรับผู้ใหญ่" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "เนื้อหาสำหรับผู้ใหญ่และคำเตือนเนื้อหา" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "อายุการใช้งานสูงสุด (วัน)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "ปกป้องเต็มที่เพื่อพื้นที่ที่เหมาะสำหรับทุกคนในครอบครัว" @@ -20924,7 +20725,7 @@ msgstr "หยุดเล่น" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "ยกเลิกแบนสมาชิกแล้ว" msgid "Member updated" msgstr "อัปเดตสมาชิกแล้ว" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "การยืนยันตัวตนสมาชิก" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "ระดับการยืนยันตัวตนของสมาชิก" @@ -21048,7 +20849,7 @@ msgstr "สมาชิกจะถูกนำออกเมื่อออฟ msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "สมาชิกที่มีสิทธิ์ \"{pinMessagesPermissionLabel}\" สามารถปักหมุดข้อความให้ทุกคนเห็นได้" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "สมาชิกที่มีบทบาทสามารถข้ามการตรวจสอบเหล่านี้ได้ สำหรับพื้นที่สาธารณะ เราแนะนำให้เปิดใช้งานการยืนยัน" @@ -21153,7 +20954,7 @@ msgstr "การกล่าวถึงคุณจะแสดงที่น #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "เฉพาะเมื่อถูกกล่าวถึง" @@ -21292,7 +21093,7 @@ msgstr "การตั้งค่าการแสดงข้อความ msgid "Message editing" msgstr "แก้ไขข้อความ" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "ส่งต่อข้อความแล้ว" @@ -21341,7 +21142,7 @@ msgstr "ปุ่มป้อนข้อความ" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "ข้อความยาวเกินไป" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "ตัวอย่างข้อความในรายการข้อความส่วนตัว" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "ข้อความเผยแพร่แล้ว" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "ข้อความที่เผยแพร่ใน #{sourceName} จะปรากฏใน #{targetName}" #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "ข้อความที่เผยแพร่ในช่องประกาศเหล่านี้จะถูกคัดลอกมาที่นี่" @@ -21504,7 +21305,7 @@ msgstr "ข้อความที่โพสต์ในช่องประ msgid "Messages you can bookmark" msgstr "ข้อความที่คุณสามารถบุ๊กมาร์กได้" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "การส่งข้อความในคอมมูนิตี้นี้ถูกหยุดชั่วคราว" @@ -21733,30 +21534,30 @@ msgstr "จำลองจะหมดอายุใน 1 วัน" msgid "Mock expires in 7 days" msgstr "จำลองจะหมดอายุใน 7 วัน" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "จำลองโอเวอร์เลย์การบล็อกตามพื้นที่" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "จำลองคลังของขวัญ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "จำลองสายเรียกเข้า" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "จำลองเหตุผลการบล็อกช่องเนื้อหาสำหรับผู้ใหญ่" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "จำลองเหตุผลการบล็อกสื่อเนื้อหาสำหรับผู้ใหญ่" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "จำลองตำแหน่ง UK" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "รูปโปรไฟล์ผู้ใช้จำลองในขนาดต่างๆ และทุกสถานะที่เป็นไปได้" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "จำลองรูปแบบ" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "ขั้นตอนผลิตภัณฑ์จำลอง" @@ -22698,14 +22494,16 @@ msgstr "ปิดเสียงคอมมูนิตี้ใหม่" msgid "New direct message" msgstr "ข้อความส่วนตัวใหม่" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "อีเมลใหม่" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "แบบฟอร์มอีเมลใหม่" @@ -22816,9 +22614,7 @@ msgstr "ใหม่สุดขึ้นก่อน" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "ถัดไป" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "ไม่" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "ไม่มีสิทธิ์ {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "ไม่มีสิทธิ์ {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "ไม่มีการเปลี่ยนแปลงที่ต้ msgid "No channels available" msgstr "ไม่มีช่องให้เลือก" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "ไม่พบช่อง" @@ -23233,11 +23029,6 @@ msgstr "ไม่พบสิทธิ์" msgid "No personal words yet." msgstr "ยังไม่มีคำส่วนตัว" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "ไม่มีหมายเลขโทรศัพท์" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "ไม่พบผลลัพธ์" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "ไม่พบผลลัพธ์" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "ไม่พบผู้ใช้" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "ไม่ต้องยืนยันตัวตน" @@ -23452,7 +23243,7 @@ msgstr "ไม่ต้องยืนยันตัวตน" msgid "No verification methods available" msgstr "ไม่มีวิธีการยืนยันตัวตน" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "ไม่มี webhook" @@ -23504,7 +23295,7 @@ msgstr "ไม่แปลง" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "ไม่มี" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "ไม่มี (ลักษณะการทำงานปกติ)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "นอร์เวย์" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "ยังเป็นสมาชิกไม่นานพอ" @@ -23798,9 +23589,9 @@ msgstr "สิ่งของ" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "ปิด" @@ -23848,7 +23639,7 @@ msgstr "เก่าสุดขึ้นก่อน" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "เปิด" @@ -23884,11 +23675,6 @@ msgstr "ไม่สามารถอ่านหรืออัปโหลด msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "ไฟล์ที่คุณกำลังอัปโหลดมีขนาดเกิน {maxSizeFormatted} ต่อไฟล์" -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "ขอตรวจสอบสักนิด" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "เฉพาะลำโพง" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "เฉพาะเจ้าของคอมมูนิตี้เท่านั้นที่เปลี่ยนการตั้งค่านี้ได้" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "เปิดอิโมจิในเบราว์เซอร์" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "เปิดตัวเลือกอิโมจิ" @@ -24382,12 +24168,8 @@ msgstr "ไอคอนเปิดเมนู" msgid "Open message history threshold" msgstr "เปิดการตั้งค่าเกณฑ์ประวัติข้อความ" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "เปิดโอเวอร์เลย์" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "เปิดป๊อปอัป" @@ -24485,11 +24267,6 @@ msgstr "เปิดแอปใหม่ คุณลงชื่อเข้ msgid "Open the shortcuts list for quick actions." msgstr "เปิดรายการปุ่มลัดเพื่อการดำเนินการด่วน" -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "เปิดอีเมลยืนยันและใช้ลิงก์ด้านใน หน้าต่างนี้จะอัปเดตหลังจากเปิดลิงก์แล้ว" - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "เปิดการตั้งค่าเสียงและวิ msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "เปิดเบราว์เซอร์ของคุณ ลงชื่อเข้าใช้ แล้วป้อนรหัสข้างล่างเพื่อเชื่อมโยงบัญชีของคุณ" -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "เปิดข้อความของคุณ" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "เปิดแอป {PRODUCT_NAME} เดิมของคุณ แล้วเลือก \"เชื่อมโยงอุปกรณ์ใหม่\" จากนั้นป้อนรหัสด้านล่าง" -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "เปิดแอปข้อความในโทรศัพท์ของคุณ แล้วสร้างข้อความใหม่" - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "เปิดแอปข้อความในโทรศัพท์ของคุณ แล้วเริ่มข้อความใหม่" - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "รีแอ็กชันอื่น…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "การตรวจสอบหมายเลขโทรศัพท์ของเราขัดข้องในขณะนี้ เป็นความผิดพลาดของเรา ไม่ใช่หมายเลขของคุณ โปรดรอสักครู่แล้วลองหมายเลขเดิมอีกครั้ง" - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "ฟิชชิง การฉ้อโกง ลิงก์ที่เป็นอันตราย หรือการกล่าวอ้างเท็จที่อาจก่อให้เกิดอันตรายในโลกจริง" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "โทรศัพท์" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "เบอร์โทรศัพท์" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "ต้องระบุเบอร์โทรศัพท์" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "ยืนยันเบอร์โทรศัพท์แล้ว" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "ต้องยืนยันเบอร์โทรศัพท์อีกครั้ง" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "ขั้นตอนโทรศัพท์" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "การยืนยันทางโทรศัพท์ไม่พร้อมใช้งานสำหรับบัญชีนี้ โปรดใช้วิธีอื่นหรือติดต่อฝ่ายสนับสนุน" - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "ต้องยืนยันเบอร์โทรศัพท์" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "เลือกตัวเลข 4 หลักต่อท้ายช msgid "Pick the appearance this administrator account should start with." msgstr "เลือกรูปลักษณ์เริ่มต้นสำหรับบัญชีผู้ดูแลระบบนี้" -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "เลือกวิธีที่คุณสามารถดำเนินการให้เสร็จสิ้นได้ตอนนี้" - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "ภาพซ้อนภาพ" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "ปักหมุด" @@ -25471,7 +25176,7 @@ msgstr "ปักหมุดแชทกลุ่ม" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "ปักหมุดหรือยกเลิกการปักหมุดข้อความใดๆ" #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "ปักหมุดข้อความนี้ในช่องเพื่อให้ทุกคนเห็น" @@ -26227,18 +25932,18 @@ msgstr "สีโปรไฟล์" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "ปรับแต่งโปรไฟล์" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "การปรับแต่งโปรไฟล์สำหรับ {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "แบบฟอร์มปรับแต่งโปรไฟล์" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "ประเภทโปรไฟล์" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "อัปเดตโปรไฟล์แล้ว" @@ -26340,7 +26045,7 @@ msgstr "แจ้งเตือนเมื่อมีอุปกรณ์เ #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "ประสานงานการโจมตี" msgid "Rate" msgstr "ความเร็ว" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "ถูกจำกัดอัตรา" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "JSON ดิบของการฝัง" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "ลบ {userName} ออกจากรายชื่อเพื่อนใช่หรือไม่" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "ลบทั้งหมด" @@ -27290,7 +26990,7 @@ msgstr "ลบรีแอ็กชัน {emojiNameWithColons} ทั้งห #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "ลบรีแอ็กชันทั้งหมด" @@ -27899,20 +27599,10 @@ msgstr "แท็กผู้ใช้ที่ถูกรายงาน (ไ msgid "Reposts: <0>{countLabel}" msgstr "รีโพสต์: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "โปรดขอรหัสใหม่ก่อน" - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "ขอลิงก์รีเซ็ตใหม่" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "โปรดขอรหัสยืนยันก่อน" - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "คำขอ" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "กำหนดให้ใช้ 2FA สำหรับการดำเนินการดูแล" @@ -27958,7 +27648,7 @@ msgstr "ต้องใช้ OAuth2 code grant" msgid "Require passkey" msgstr "กำหนดให้ใช้พาสคีย์" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "กำหนดให้ผู้ดูแลต้องใช้การยืนยันตัวตนแบบสองชั้นก่อนจึงจะแบน เตะ พักการใช้งานชั่วคราว หรือลบข้อความได้" @@ -27972,46 +27662,6 @@ msgstr "จำเป็น" msgid "Required 2FA for moderation actions" msgstr "กำหนดให้ต้องใช้ 2FA สำหรับการดำเนินการดูแล" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "แท็บเริ่มต้นการดำเนินการที่จำเป็น" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "ขั้นตอนการดำเนินการที่จำเป็น" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "ขั้นตอนการยืนยันเบอร์โทรศัพท์ที่จำเป็น" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "กำลังโหลดการส่งการดำเนินการที่จำเป็นอีกครั้ง" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "ผลลัพธ์การส่งการดำเนินการที่จำเป็นอีกครั้ง" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "ข้อความยืนยันการดำเนินการที่จำเป็นอีกครั้ง" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "รูปแบบการดำเนินการที่จำเป็น" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "การซ้อนทับการดำเนินการที่จำเป็น" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "ต้องใช้ URI การเปลี่ยนเส้นทางและรหัสการอนุญาตเมื่อเชิญบอทนี้" #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "ต้องยืนยันอีเมลและมีบัญชีที่สร้างมาแล้วอย่างน้อย 5 นาที" #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "ต้องมีที่อยู่อีเมลที่ยืนยันแล้ว" -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "ต้องใช้หมายเลขโทรศัพท์ที่ยืนยันแล้ว" - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "ต้องมีทุกอย่างเหมือนระดับกลาง และเป็นสมาชิกของคอมมูนิตี้มาแล้วอย่างน้อย 10 นาที" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "ส่งอีกครั้ง ({resendSecondsRemaining} วินาที)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "ส่งอีกครั้ง ({secondsRemaining} วินาที)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "กำลังโหลดปุ่มส่งอีกครั้ง" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "ส่งรหัสอีกครั้ง" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "ส่งอีเมลอีกครั้ง" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "ผลลัพธ์การส่งอีกครั้ง" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "ส่งอีกครั้งแล้ว" @@ -28518,21 +28152,6 @@ msgstr "แสดง" msgid "Reveal spoiler" msgstr "เปิดสปอยล์" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "ยืนยันอีเมลหรือยืนยันเบอร์โทรศัพท์ของคุณอีกครั้งเพื่อใช้งาน {productName} ต่อไป" - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "ยืนยันอีเมลของคุณอีกครั้งเพื่อใช้งาน {productName} ต่อไป" - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "ยืนยันหมายเลขโทรศัพท์ของคุณอีกครั้งเพื่อใช้งาน {productName} ต่อไป" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "ความอิ่มตัวของสี" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "ตัวอย่างขณะเลื่อนวิดีโอ" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "ค้นหาช่อง" msgid "Search communities" msgstr "ค้นหาคอมมูนิตี้" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "ค้นหาประเทศ..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "ค้นหาประเทศ…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "เลือกประเทศที่คุณอาศัยอยู่" #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "เลือก…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "ส่ง" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "ส่ง ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "ส่งรายงานอีกฉบับ" msgid "Send button" msgstr "ปุ่มส่งข้อความ" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "ส่งรหัส" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "ส่งข้อความ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "ปิดใช้งานการส่งข้อความแล้ว" @@ -30151,32 +29759,11 @@ msgstr "ส่งสื่อที่บันทึกไว้ {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "ส่งข้อความแบบอ่านออกเสียงด้วย /tts สมาชิกที่เปิดการอ่านออกเสียงข้อความไว้จะได้ยินข้อความเหล่านั้น" -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "ส่งรหัส <0>{0} ไปที่ <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "ส่งรหัสไปยังหมายเลขโทรศัพท์ด้านล่าง" - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "ส่งรหัสนี้" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "ส่งรายการปักหมุดนี้ย้อนเวลากลับไปไหม" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "ส่งไปที่" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "ส่งข้อความเสียง" msgid "Send:" msgstr "ส่ง:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "การส่ง SMS ไปยังเบอร์นี้มีค่าใช้จ่ายสูงเกินไปสำหรับ {PRODUCT_NAME} เราจึงอยากให้คุณส่ง SMS มาให้เราแทน เราทราบว่านี่อาจไม่สะดวก คุณสามารถขอให้ผู้ดูแลระบบของอินสแตนซ์นี้ยกเลิกข้อกำหนดนี้ออกจากบัญชีของคุณได้เช่นกัน" - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "การส่ง SMS ไปยังเบอร์นี้มีค่าใช้จ่ายสูงเกินไปสำหรับ {PRODUCT_NAME} เราจึงอยากให้คุณส่ง SMS มาให้เราแทน เราทราบว่านี่อาจไม่สะดวก คุณสามารถติดต่อ <0>{SUPPORT_EMAIL} เพื่อให้เรายกเลิกข้อกำหนดนี้ออกจากบัญชีของคุณได้" - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "ส่งทีละไฟล์" msgid "Serve the token file" msgstr "วางไฟล์โทเค็นบนเว็บไซต์" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "ข้อผิดพลาดของบริการ" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "ตั้งค่าปุ่มลัดสำหรับ \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "ตั้งสถานะกำหนดเอง" @@ -30486,18 +30060,6 @@ msgstr "ตั้งค่าภูมิภาคเสียงเป็น {r msgid "Set the voice region to automatic" msgstr "ตั้งค่าภูมิภาคเสียงเป็นอัตโนมัติ" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "พักการตรวจสอบนี้ไว้ก่อน" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "พักการตรวจสอบนี้ไว้ก่อนไหม" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "ตั้งค่าคำสรรพนาม" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "ตั้งสถานะของคุณ" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "ปุ่มลัดจะหยุดทำงานชั่วคราวระหว่างการบันทึก" #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "ย่อข้อความแล้วลองอีกครั้ง" @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "แสดงไอคอน {productName} ในถาดระบบหรือแถบเมนู" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "แสดงคำเตือนเนื้อหา" @@ -31672,7 +31234,7 @@ msgstr "โหมดจำกัดเวลา · รอ {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "โหมดจำกัดเวลาทำงานอยู่" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "โหมดจำกัดเวลาถูกตั้งเป็น {durationLabel} รอก่อนส่งข้อความถัดไป" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "เวลาที่เหลือของโหมดจำกัดเวลา" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "จำลองโหมดจำกัดเวลา" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "เวลาที่เหลือในโหมดจำกัดเวลา" @@ -31807,11 +31369,6 @@ msgstr "การเลื่อนที่ราบรื่น" msgid "Smoother video" msgstr "วิดีโอที่ราบรื่นขึ้น" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "ไม่สามารถยืนยัน SMS ได้ในขณะนี้ โปรดลองอีกครั้งในภายหลังหรือติดต่อฝ่ายสนับสนุน" - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "เกิดข้อผิดพลาดขณะเตรียมสติกเกอร์นี้ ลองใช้ไฟล์อื่นหรือลองอีกครั้งในภายหลัง" #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "เกิดข้อผิดพลาดขณะเผยแพร่ ลองอีกครั้งในอีกสักครู่" @@ -32009,11 +31566,9 @@ msgstr "เกิดข้อผิดพลาด โปรดโหลดห msgid "Something went wrong. Try again later." msgstr "เกิดข้อผิดพลาด โปรดลองอีกครั้งในภายหลัง" -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "เกิดข้อผิดพลาด โปรดลองอีกครั้ง" @@ -32352,11 +31907,6 @@ msgstr "การลงชื่อเข้าใช้ด้วย SSO หม msgid "Staff controls" msgstr "เครื่องมือสำหรับเจ้าหน้าที่" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "อาจมีค่าบริการส่งข้อความตามปกติจากผู้ให้บริการเครือข่ายของคุณ" - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "ภาพเคลื่อนไหวรูปดาว" msgid "Starred channels" msgstr "ช่องที่ติดดาว" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "การส่งข้อมูลฝั่งผู้รับ:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "การสมัครสมาชิก" @@ -33051,14 +32599,12 @@ msgstr "สถานการณ์การสมัครสมาชิก" msgid "Subtext" msgstr "ข้อความรอง" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "สำเร็จ" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "แนะนำสำหรับคอมมูนิตี้ส่วนใหญ่" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "ระบบและข้อความต้อนรับ" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "ประกาศจากทีมงาน {productName} คุณไม่สามารถตอบกลับที่นี่ได้" @@ -33765,11 +33311,6 @@ msgstr "การเลือกข้อความ" msgid "Text size" msgstr "ขนาดตัวอักษร" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "ส่งข้อความหาเราจากโทรศัพท์ของคุณ" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "ไทย" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "ขอบคุณที่ช่วยให้ {productName} ปลอดภัย เราจะตรวจสอบรายงานของคุณโดยเร็วที่สุด" -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "รหัสไม่ถูกต้อง โปรดตรวจสอบแล้วลองอีกครั้ง" - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "รหัสหมดอายุแล้ว โปรดขอรหัสใหม่" - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "การดำเนินการไม่เสร็จสมบูรณ์ คุณอาจออกจากคอมมูนิตี้บางแห่งไปแล้ว และบัญชีของคุณยังคงถูกล็อกอยู่ กด \"พักการตรวจสอบนี้ไว้ก่อน\" อีกครั้งเพื่อดำเนินการต่อ" - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "ไม่สำเร็จ ไม่มีอะไรเปลี่ยนแปลง ลองอีกครั้ง" - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "ดูเหมือนจะไม่ใช่สีที่ถูก msgid "That doesn't look like a valid URL." msgstr "ดูเหมือนจะไม่ใช่ URL ที่ถูกต้อง" -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "อีเมลนี้ถูกใช้ไปแล้ว" - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "การแทนที่นี้ปฏิเสธ {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "หน้านี้ไม่มีอยู่จริงหรืออาจถูกย้ายไปแล้ว" -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "การยืนยันทางโทรศัพท์ถูกพักไว้ เหลือขั้นตอนทางอีเมลอีกหนึ่งขั้นตอน" - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "ไม่มีช่องที่สามารถสร้างค msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "ขณะนี้ยังไม่มีบทบาทให้กำหนดในคอมมูนิตี้นี้ แต่คุณสามารถสร้างบทบาทใหม่ได้ที่ <0>{rolesSettingsPath}" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "ยังไม่มีการตั้งค่า webhook สำหรับช่องนี้ สร้าง webhook เพื่อให้แอปพลิเคชันภายนอกสามารถโพสต์ข้อความได้" @@ -34273,7 +33784,7 @@ msgstr "เกิดข้อผิดพลาดในการโหลดค msgid "There was an error loading the stickers. Try again." msgstr "เกิดข้อผิดพลาดในการโหลดสติกเกอร์ ลองอีกครั้ง" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "เกิดข้อผิดพลาดในการโหลด webhook สำหรับช่องนี้ ลองอีกครั้ง" @@ -34417,7 +33928,7 @@ msgstr "ช่องนี้สามารถโพสต์ข้อควา msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "ช่องนี้สามารถโพสต์ข้อความได้ 10 ข้อความติดต่อกัน จากนั้นอีก 1 ข้อความทุกๆ 6 นาที ลองใหม่อีกครั้งในอีกไม่กี่นาที" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "ช่องนี้ไม่รองรับ webhook" @@ -34550,12 +34061,12 @@ msgstr "การเชื่อมต่อนี้ยังไม่ได้ #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "มีเนื้อหาที่ละเอียดอ่อน" -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "การสนทนานี้ไม่พร้อมใช้งานแล้ว" @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "กลุ่มนี้มีสมาชิกมากเกินไป" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "กลุ่มนี้เต็มแล้ว นำสมาชิกบางคนออกก่อนจึงจะเพิ่มคนอื่นได้" @@ -34715,11 +34226,6 @@ msgstr "นี่คือสติกเกอร์ที่กำหนดเ msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "ช่องนี้จำกัดอายุ สามารถส่งอัปเดตไปยังช่องที่จำกัดอายุเท่านั้น" -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "นี่คือการตรวจสอบเพื่อป้องกันสแปม หมายเลขโทรศัพท์ของคุณไม่ได้เชื่อมโยงกับบัญชีของคุณ" - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "ปิดใช้งานอยู่" msgid "This is how messages appear" msgstr "ลักษณะการแสดงผลของข้อความ" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "ขณะนี้ฟีเจอร์นี้ยังไม่พร้อมใช้งานสำหรับบัญชีของคุณ โปรดขอให้ผู้ดูแลระบบของอินสแตนซ์นี้ตรวจสอบ" - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "ขณะนี้ยังไม่มีให้บริการในบัญชีของคุณ โปรดส่งอีเมลไปที่ {supportEmail} เพื่อให้เจ้าหน้าที่ตรวจสอบ" - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "นี่ไม่ใช่ช่องที่คุณกำลังมองหา" @@ -34792,11 +34288,6 @@ msgstr "นี่คือพาสคีย์สุดท้ายของค msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "นี่คือพาสคีย์สุดท้ายของคุณ เมื่อลบแล้ว คุณจะไม่สามารถใช้พาสคีย์เป็นการยืนยันชั้นที่สองได้" -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "นี่ไม่ใช่หมายเลขโทรศัพท์มือถือ จึงไม่สามารถรับข้อความของเราได้ โปรดลองใช้หมายเลขโทรศัพท์มือถือ หรือติดต่อฝ่ายสนับสนุนหากคุณคิดว่าข้อมูลนี้ไม่ถูกต้อง" - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "ข้อความนี้ถูกลบไปแล้ว" #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "ข้อความนี้เผยแพร่ไปแล้ว" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "ข้อความนี้ไม่มีอยู่อีกต่อไปแล้ว" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "ชื่อเล่นนี้จะแสดงในคอมมูนิตี้นี้เท่านั้น" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "หมายเลขนี้ต้องยืนยันด้วยการส่งข้อความหาเราแทน กลับไปเริ่มการยืนยันทางโทรศัพท์อีกครั้งเพื่อรับรหัสและหมายเลขที่จะส่งข้อความไป" - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "หมายเลขนี้ต้องยืนยันด้วยข้อความแทน SMS จากเรา" - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "ผู้เข้าร่วมรายนี้ปิดเสีย msgid "This participant was deafened by moderators" msgstr "ผู้เข้าร่วมรายนี้ถูกผู้ดูแลปิดเสียงทั้งหมด" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "ไม่สามารถใช้หมายเลขโทรศัพท์นี้ได้ โปรดลองใช้หมายเลขโทรศัพท์มือถืออื่นหรือติดต่อฝ่ายสนับสนุน" - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "หมายเลขโทรศัพท์นี้ถูกใช้ไปแล้ว ลองใช้หมายเลขอื่นหรือติดต่อฝ่ายสนับสนุน" - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "ผู้ใช้รายนี้ไม่มีบทบาทใน msgid "This user is already banned from the community." msgstr "ผู้ใช้รายนี้ถูกแบนออกจากคอมมูนิตี้แล้ว" -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "ผู้ใช้รายนี้ไม่พร้อมใช้งานแล้ว" @@ -35065,11 +34536,6 @@ msgstr "ผู้ดูแลแพลตฟอร์มบังคับเพ msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "เซสชันการยืนยันนี้หมดอายุแล้ว กลับไปที่ {productName} และเริ่มการชำระเงินอีกครั้ง" -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "เซสชันการยืนยันนี้หมดอายุแล้ว โปรดเริ่มใหม่อีกครั้ง" - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "การดำเนินการนี้จะทำให้คุ msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "การดำเนินการนี้จะเชื่อถือลิงก์ภายนอกทั้งหมดและข้ามคำเตือนสำหรับทุกโดเมน โดเมนที่เชื่อถืออยู่เดิมของคุณจะถูกแทนที่ ซึ่งมีความปลอดภัยน้อยกว่า" -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "หน้าต่างนี้จะอัปเดตอัตโนมัติหลังจากเราได้รับข้อความของคุณ" - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "แถบชื่อเรื่อง" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "แพลตฟอร์มแถบชื่อเรื่อง" @@ -35470,18 +34931,11 @@ msgstr "โทนภาพ" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "ปรับโทนภาพ HDR เป็นช่วงมาตรฐาน ลดความสว่างสูงสุด" -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "พยายามหลายครั้งเกินไป โปรดรอสักครู่แล้วลองอีกครั้ง" - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "คอมมูนิตี้มากเกินไป" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "ส่งคำขอมากเกินไป ลองอีกครั้งในภายหลัง" @@ -36151,8 +35605,10 @@ msgstr "ไม่สามารถเตรียมอิโมจิสำห #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "ไม่พร้อมใช้งาน" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "ไม่ได้จัดหมวดหมู่" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "บัญชีที่ยังไม่ได้ยืนยัน" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "ไม่มีลำดับ" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "เลิกปักหมุด" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "เลิกปักหมุดข้อความ" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "เลิกปักหมุดข้อความนี้ใช่ไหม" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "การเปลี่ยนแปลงที่ยังไม่ได้บันทึก" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "ไม่รองรับไฟล์เสียงนี้" @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "จนกว่าฉันจะเปิดอีกครั้ง" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "อีเมลที่ยังไม่ได้ยืนยัน" @@ -36958,12 +36414,7 @@ msgstr "อัปเดต {productName} เพื่อดูข้อควา msgid "Update app" msgstr "อัปเดตแอป" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "อัปเดตอีเมล" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "อัปเดตสถานะของฉัน" @@ -37306,18 +36757,13 @@ msgstr "ใช้ {url} ในตำแหน่งที่ต้องกา msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "ใช้หน้าต่างเฉพาะเพื่อกำหนดวันที่จำกัดประวัติข้อความสำหรับสมาชิกที่ไม่มีสิทธิ์ {readMessageHistoryPermissionLabel}" -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "ใช้ที่อยู่อีเมลอื่นและยืนยันด้วยรหัส" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "ใช้ค่าจริง" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "ใช้ประเภทพรีเมียมจริง" @@ -37335,16 +36781,6 @@ msgstr "ใช้วิธีอื่น" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "ใช้แอปยืนยันตัวตนเพื่อสร้างรหัสสำหรับการยืนยันตัวตนแบบสองชั้น" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "ใช้อีเมลที่คุณสามารถเปิดได้ เราจะส่งรหัสไปที่นั่น" - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "ใช้อีเมลที่แตกต่างจากอีเมลปัจจุบันของคุณ" - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "ใช้ธีมมืดทั่วทั้งแอป" msgid "Use default" msgstr "ใช้ค่าเริ่มต้น" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "ใช้อีเมลอื่น" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "ใช้อีเมล" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "ใช้พาสคีย์สำหรับการยืนยั msgid "Use passkeys to sign in without a password" msgstr "ใช้พาสคีย์เพื่อลงชื่อเข้าใช้โดยไม่ต้องใช้รหัสผ่าน" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "ใช้โทรศัพท์" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "ใช้ข้อความแบบยืนยันซ้ำ" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "ผู้ใช้ถูกย้ายช่อง" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "ไม่พบผู้ใช้" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "การยืนยัน" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "การยืนยันและข้อจำกัดการเป็นสมาชิก" @@ -37970,15 +37387,8 @@ msgstr "รหัสยืนยัน" msgid "Verification code sent" msgstr "ส่งรหัสยืนยันแล้ว" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "ส่งรหัสยืนยันแล้ว ตรวจสอบกล่องจดหมายอีเมลใหม่ของคุณ" - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "ส่งอีเมลยืนยันแล้ว โปรดตรวจสอบกล่องจดหมายเข้าของคุณ" @@ -38038,23 +37448,6 @@ msgstr "แบบฟอร์มยืนยันตัวตน" msgid "Verify it's you" msgstr "ยืนยันว่าเป็นคุณ" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "ยืนยันเบอร์โทรศัพท์" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "ยืนยันเบอร์โทรศัพท์" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "แบบฟอร์มยืนยันเบอร์โทรศัพท์" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "ยืนยันอีเมลของคุณก่อนเพิ่มแอปยืนยันตัวตน" #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "ยืนยันอีเมลของคุณก่อนเปลี่ยนชื่อเล่นในคอมมูนิตี้ รูปโปรไฟล์ แบนเนอร์ ประวัติส่วนตัว คำสรรพนาม หรือสีเน้น" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "ยืนยันอีเมลของคุณก่อนเปลี่ยนชื่อผู้ใช้ ชื่อที่แสดง รูปโปรไฟล์ แบนเนอร์ ประวัติส่วนตัว คำสรรพนาม เขตเวลา หรือความเป็นส่วนตัวของป้าย {premiumProductName}" #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "ยืนยันอีเมลของคุณก่อนแก้ไขโปรไฟล์คอมมูนิตี้นี้ คุณยังดูตัวอย่างได้ที่นี่" #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "ยืนยันอีเมลของคุณก่อนแก้ไขโปรไฟล์ คุณยังดูตัวอย่างได้ที่นี่" @@ -38113,11 +37506,6 @@ msgstr "ยืนยันอีเมลของคุณก่อนส่ง msgid "Verify your email first" msgstr "ยืนยันอีเมลของคุณก่อน" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "ยืนยันอีเมลหรือเบอร์โทรศัพท์ของคุณเพื่อใช้งาน {productName} ต่อไป" - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "ยืนยันอีเมลของคุณเพื่อซื msgid "Verify your email to change your username" msgstr "ยืนยันอีเมลเพื่อเปลี่ยนชื่อผู้ใช้" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "ยืนยันอีเมลของคุณเพื่อใช้งาน {productName} ต่อไป" - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "ยืนยันอีเมลเพื่อแก้ไขโปรไฟล์คอมมูนิตี้นี้" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "ยืนยันอีเมลเพื่อแก้ไขโปรไฟล์" @@ -38181,13 +37564,6 @@ msgstr "เวอร์มอนต์" msgid "Version" msgstr "เวอร์ชัน" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "สูงมาก" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "เพิ่มระดับเสียง" msgid "Wait a moment before deleting more messages." msgstr "รอสักครู่ก่อนลบข้อความอื่น" -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "รอสักครู่ หน้าต่างนี้จะปิดเองเมื่อเราได้รับข้อความของคุณ" - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "เว้นระยะเวลาระหว่างการส่งข้อความ สมาชิกที่มีสิทธิ์ \"{bypassSlowmodePermissionLabel}\" สามารถข้ามได้" -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "รอสักครู่" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "กำลังรอพาสคีย์…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "กำลังรอให้โหมดจำกัดเวลาใน {forwardChannelDisplayName} สิ้นสุด" #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "กำลังรอให้โหมดจำกัดเวลาในช่องที่เลือกอย่างน้อยหนึ่งช่องสิ้นสุด" @@ -39115,16 +38482,6 @@ msgstr "เราอ่านธีมนี้ไม่ได้ ธีมอ msgid "We couldn't remove that account. Try again." msgstr "เราไม่สามารถนำบัญชีนั้นออกได้ โปรดลองอีกครั้ง" -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "เราไม่สามารถยืนยันหมายเลขนี้ได้โดยอัตโนมัติ โปรดติดต่อฝ่ายสนับสนุน แล้วจะมีเจ้าหน้าที่ตรวจสอบบัญชีของคุณ" - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "เราไม่ส่งข้อความยืนยันไปยังประเทศนี้ โปรดลองใช้หมายเลขโทรศัพท์มือถือจากประเทศอื่น หรือติดต่อฝ่ายสนับสนุน" - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "เราพบการสมัครสมาชิก {premiumProduc msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "เราได้ลดราคา {premiumProductName} ในบราซิลแล้ว ตอนนี้ราคาเพียง {monthlyPrice} ต่อเดือน หรือ {yearlyPrice} ต่อปี" -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "เราต้องการขั้นตอนการยืนยันหนึ่งขั้นตอนก่อนที่คุณจะดำเนินการต่อ ซึ่งจะช่วยปกป้องบัญชีและป้องกันสแปมบน {productName}" - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "เราต้องการขั้นตอนการยืนยันสองขั้นตอนก่อนที่คุณจะดำเนินการต่อ เราจะแสดงทีละขั้นตอน" - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "เราแนะนำให้บันทึกรหัสเหล่านี้ไว้ตอนนี้ เพื่อไม่ให้คุณถูกล็อกออกจากบัญชี" @@ -39167,11 +38514,6 @@ msgstr "เราได้ส่งรหัสไปยัง {email} แล้ msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "เราจะกรอก {prefillEmail} ให้โดยอัตโนมัติเมื่อเปิดหน้าลงชื่อเข้าใช้ในเบราว์เซอร์" -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "เราจะส่งรหัส SMS เมื่อพร้อมใช้งาน" - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "เราอยากมอบ {PREMIUM_PRODUCT_NAME} ให้คุณนานกว่าแบบตลอดชีพ แต่นั่นจะทำให้กาลอวกาศพังทลาย ส่งของขวัญให้เพื่อนแทนดีไหม" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "เราจะดำเนินการโดยเร็วที่สุด คุณจะได้รับอีเมลเมื่อไฟล์เก็บถาวรของคุณพร้อมใช้งาน" #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "เราจะกู้คืนอีเมลเดิมของคุณ ออกจากระบบเซสชันเก่า ลบหมายเลขโทรศัพท์ ปิดใช้งาน MFA และรักษาความปลอดภัยบัญชีของคุณด้วยรหัสผ่านใหม่" +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "เราจะกู้คืนอีเมลเดิมของคุณ ออกจากระบบเซสชันเก่า ปิดใช้งาน MFA และรักษาความปลอดภัยบัญชีของคุณด้วยรหัสผ่านใหม่" #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "เราจะส่งรหัสยืนยันไปที่อ msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "เราจะส่งรหัสยืนยันไปยังอีเมลของคุณก่อนที่คุณจะดูรหัสสำรองได้" -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "เราจะส่งรหัส SMS เมื่อพร้อมใช้งาน หมายเลขของคุณจะไม่เชื่อมโยงกับบัญชีของคุณ เราจะเก็บเฉพาะเครื่องหมายที่เข้ารหัสไว้เท่านั้น โดยไม่มีรหัสผู้ใช้ และเก็บไว้ในระยะเวลาจำกัด" - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "เราจะยืนยันอีเมลปัจจุบันของคุณ จากนั้นจะยืนยันอีเมลใหม่ของคุณด้วยรหัสแบบใช้ครั้งเดียว" @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "สร้าง webhook แล้ว" @@ -39331,7 +38669,7 @@ msgstr "อัปเดต webhook แล้ว" msgid "Webhook URL" msgstr "URL ของ webhook" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhook" @@ -39486,8 +38824,8 @@ msgstr "สิ่งที่คุณกำลังแชร์ไม่อั #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "เป็นไงบ้าง?" @@ -39967,21 +39305,11 @@ msgstr "คุณสามารถนำสิทธิ์ <0>{readMessageHisto msgid "You can sign back in at any time." msgstr "คุณสามารถลงชื่อเข้าใช้ได้ทุกเมื่อ" -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "คุณยังขอให้ผู้ดูแลระบบของอินสแตนซ์นี้ตรวจสอบด้วยตนเองได้ตลอดเวลา" - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "คุณยังสามารถสร้างบัญชีหรือลงชื่อเข้าใช้ได้ หากมีการเปิดใช้งานคำเชิญอีกครั้งในภายหลัง คุณสามารถใช้ลิงก์เดิมนี้เพื่อเข้าร่วมได้" -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "คุณยังสามารถส่งอีเมลไปที่ {supportEmail} เพื่อขอให้เจ้าหน้าที่ตรวจสอบได้ตลอดเวลา" - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "คุณสามารถใช้ลิงก์ อิโมจิ และมาร์กดาวน์ได้" @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "คุณไม่สามารถเพิ่มอิโมจิหรือสติกเกอร์ที่นั่นได้" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "คุณไม่สามารถเพิ่มรีแอ็กชันใหม่ได้ในขณะที่ถูกพักการใช้งานชั่วคราว" @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "คุณไม่สามารถเป็นเพื่อนกับตัวเองได้" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "คุณเปลี่ยนชื่อเล่นที่นี่ไม่ได้" @@ -40094,7 +39422,7 @@ msgstr "คุณไม่สามารถส่งคำขอเป็นเ msgid "You can't send messages in this channel." msgstr "คุณไม่สามารถส่งข้อความในช่องนี้ได้" -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "คุณไม่สามารถส่งข้อความในคอมมูนิตี้นี้ได้" @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "คุณไม่มีสิทธิ์ดำเนินการนี้กับสมาชิกคนนี้" #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "คุณไม่มีสิทธิ์เข้าร่วมช่องเสียงนี้" @@ -40243,7 +39571,7 @@ msgstr "คุณไม่มีสิทธิ์เปลี่ยนชื่ msgid "You have been banned from this community." msgstr "คุณถูกแบนจากคอมมูนิตี้นี้แล้ว" -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "คุณบล็อก {username} อยู่ เลิกบล็อกเพื่อส่งข้อความ" @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "คุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก" #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "คุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก บันทึกหรือรีเซ็ตก่อนออกจากหน้านี้" @@ -40270,7 +39598,7 @@ msgstr "คุณมีการเปลี่ยนแปลงที่ยั msgid "You haven't authorized any applications to access your account." msgstr "คุณยังไม่ได้อนุญาตแอปพลิเคชันใดๆ ให้เข้าถึงบัญชีของคุณ" -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "คุณยังเป็นสมาชิกคอมมูนิตี้นี้ไม่นานพอที่จะส่งข้อความได้" @@ -40326,11 +39654,6 @@ msgstr "คุณต้องยอมรับข้อกำหนดในก msgid "You must verify your email before sending a report." msgstr "คุณต้องยืนยันอีเมลก่อนส่งรายงาน" -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "คุณต้องเข้าถึงอีเมลปัจจุบันได้จึงจะเปลี่ยนอีเมลจากตรงนี้ได้ ให้ใช้การยืนยันด้วยเบอร์โทรศัพท์หากมี หรือติดต่อฝ่ายสนับสนุน" - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "คุณต้องมีสิทธิ์ \"{manageRolesPermissionLa msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "คุณต้องมีสิทธิ์ \"{manageRolesPermissionLabel}\" เพื่อแก้ไขสิทธิ์เหล่านี้" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "คุณต้องมีสิทธิ์ \"{manageWebhooksPermissionLabel}\" เพื่อดูและแก้ไข webhook ของช่องนี้" @@ -40384,18 +39707,14 @@ msgstr "คุณต้องยืนยันบัญชีก่อนจึ msgid "You need to claim your account before you can start a direct message." msgstr "คุณต้องยืนยันบัญชีก่อนจึงจะสามารถเริ่มข้อความส่วนตัวได้" -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "คุณต้องยืนยันบัญชีก่อนจึงจะส่งข้อความส่วนตัวได้" -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "คุณต้องยืนยันบัญชีก่อนจึงจะส่งข้อความในคอมมูนิตี้นี้ได้" -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "คุณต้องยืนยันเบอร์โทรศัพท์เพื่อส่งข้อความในคอมมูนิตี้นี้" - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "คุณต้องยืนยันอีเมลก่อนจึ msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "คุณต้องยืนยันอีเมลก่อนจึงจะสามารถซื้อ {premiumProductFullName} ได้" -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "คุณต้องยืนยันอีเมลเพื่อส่งข้อความในคอมมูนิตี้นี้" @@ -40424,11 +39743,6 @@ msgstr "คุณต้องยืนยันอีเมลเพื่อส msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "คุณหรือคนที่คุณกำลังเพิ่มมีแชทกลุ่มเปิดอยู่ครบจำนวนสูงสุดแล้ว ออกจากแชทกลุ่มหนึ่งแล้วลองอีกครั้ง" -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "คุณยังคงอยู่ใน {ownedNames} เจ้าของไม่สามารถออกจากคอมมูนิตี้ของตนเองได้" - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "คุณถูกผู้ดูแลปิดเสียงทั้ msgid "You will be taken to {redirectHostname} after authorizing." msgstr "คุณจะถูกนำไปยัง {redirectHostname} หลังจากให้สิทธิ์" -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "คุณจะออกจาก {count, plural, one {# คอมมูนิตี้} other {# คอมมูนิตี้}} ที่เข้าข่ายการตรวจสอบนี้ และบัญชีของคุณจะกลับมาทำงานได้ตามปกติ" - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "คุณกำลังจะออกจาก {guildNames} โพสต์ของคุณจะไม่ถูกลบ และคุณสามารถเข้าร่วมใหม่ได้ในภายหลัง" - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "คุณยังต้องดำเนินการยืนยันอีเมลให้เสร็จสิ้น" - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "คุณทำเร็วเกินไป" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "คุณกำลังดำเนินการเร็วเกินไป โปรดรอสักครู่แล้วลองอีกครั้ง" @@ -40636,7 +39935,7 @@ msgstr "คุณส่งข้อความเร็วเกินไป" msgid "You're streaming!" msgstr "คุณกำลังสตรีมอยู่!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "คุณถูกพักการใช้งานชั่วคราว การส่งข้อความ รีแอ็กชัน และเสียงจะถูกระงับจนกว่าการพักการใช้งานจะสิ้นสุดลง" @@ -40764,25 +40063,25 @@ msgstr "การชำระเงินต่ออายุผ่าน {stor msgid "Your account" msgstr "บัญชีของคุณ" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "บัญชีของคุณจะกลับมาเป็นปกติทันที และคุณจะไม่ต้องใช้เบอร์โทรศัพท์อีกต่อไป นี่ไม่ใช่การยกเว้นถาวร และเราอาจขอให้คุณยืนยันอีกครั้งในภายหลัง" - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "เชื่อมบัญชีของคุณสำเร็จแล้ว ปิดแท็บนี้แล้วกลับไปที่แอปได้เลย" -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "บัญชีของคุณกลับมาใช้งานได้ตามปกติแล้ว" +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "บัญชีของคุณมีข้อจำกัด" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "บัญชีของคุณถูกจำกัด โปรดตรวจสอบอีเมลของคุณเพื่อดูวิธีปลดล็อก" #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "บัญชีของคุณยังไม่ได้ยืนยัน หากไม่มีอีเมลและรหัสผ่าน คุณจะไม่สามารถลงชื่อเข้าใช้จากอุปกรณ์อื่นได้ และอาจสูญเสียการเข้าถึงบัญชีของคุณ ยืนยันบัญชีของคุณตอนนี้เพื่อความปลอดภัย" -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "บัญชีของคุณใหม่เกินไปที่จะส่งข้อความในคอมมูนิตี้นี้" @@ -40800,11 +40099,6 @@ msgstr "บัญชีของคุณต้องมีการยืนย msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "บัญชีของคุณจะไม่ได้รับการปกป้องด้วยการยืนยันตัวตนแบบสองชั้นอีกต่อไปเมื่อคุณลงชื่อเข้าใช้ด้วยรหัสผ่าน และคุณจะสูญเสียสิทธิ์ระดับสูงในคอมมูนิตี้ที่กำหนดให้ใช้การยืนยันตัวตนแบบสองชั้นด้วย" -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "บัญชีของคุณจะกลับมาใช้งานได้ตามปกติทันที และจะไม่มีอะไรถูกลบออก เราสามารถขอให้ตรวจสอบอีกครั้งในภายหลังได้" - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "กำลังตรวจสอบบัตรของคุณเพ msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "บัตรของคุณใช้ได้ กำลังนำคุณไปยังหน้าชำระเงิน" -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "ผู้ให้บริการของคุณแจ้งว่าหมายเลขนี้ไม่ได้เปิดใช้งาน โปรดตรวจสอบและลองอีกครั้ง หรือติดต่อฝ่ายสนับสนุนหากหมายเลขถูกต้อง" - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "การเปลี่ยนแปลงของคุณจะส่งไปยังทุกชุมชนที่ติดตามช่องนี้ ซึ่งอาจใช้เวลาสักครู่ ข้อความที่เผยแพร่แต่ละข้อความอนุญาตให้แก้ไขด่วนได้ 3 ครั้ง จากนั้นแก้ไขได้ 1 ครั้งทุกๆ 20 นาที" @@ -40869,21 +40158,6 @@ msgstr "อุปกรณ์ของคุณจะขอให้บันท msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "อุปกรณ์ของคุณจะขอให้บันทึกพาสคีย์ที่อัปเดตสำหรับ {name} ใช้โทรศัพท์หรือคีย์ความปลอดภัยเดิมที่คุณเพิ่งใช้" -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "อัปเดตอีเมลของคุณแล้ว" - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "อีเมลของคุณไม่สามารถรับข้อความได้ โปรดเพิ่มอีเมลที่ใช้งานได้ เพื่อให้เรายังติดต่อคุณได้" - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "อีเมลของคุณไม่สามารถรับข้อความได้ โปรดอัปเดตเพื่อใช้งาน {productName} ต่อไป" - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "ยืนยันอีเมลของคุณแล้ว ตอนนี้คุณสามารถลงชื่อเข้าใช้บัญชีของคุณได้" @@ -41000,21 +40274,11 @@ msgstr "อัปเดตข้อความของคุณไม่สำ msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "การซื้อล่าสุดของคุณไม่อยู่ในช่วงเวลาที่สามารถขอคืนเงินได้แล้ว โปรดติดต่อฝ่ายสนับสนุนสำหรับปัญหาการเรียกเก็บเงิน" -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "อีเมลใหม่ของคุณ" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "ชื่อเล่นใหม่ของคุณ หรือเว้นว่างไว้เพื่อรีเซ็ต" -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "หมายเลขโทรศัพท์ของคุณไม่ได้เชื่อมโยงกับบัญชีของคุณ เราจะเก็บเฉพาะเครื่องหมายที่เข้ารหัสไว้เท่านั้น โดยไม่มีรหัสผู้ใช้ และเก็บไว้เป็นเวลาจำกัด" - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "ยกเลิกการชำระเงินแล้ว ปิดแท็บนี้แล้วกลับไปที่แอปได้เลย" @@ -41054,11 +40318,6 @@ msgstr "ของขวัญที่คุณซื้อ" msgid "your region" msgstr "ภูมิภาคของคุณ" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "การลงทะเบียนของคุณต้องผ่านการตรวจสอบสแปมเพิ่มเติมก่อนดำเนินการต่อ" - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/tr/messages.po b/fluxer_app/src/features/i18n/locales/tr/messages.po index e499b5974..10ab7ecfc 100644 --- a/fluxer_app/src/features/i18n/locales/tr/messages.po +++ b/fluxer_app/src/features/i18n/locales/tr/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# tepki} other {# tepki}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {Tepki veren # kişi} other {Tepki veren # kişi}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# saniye} other {# saniye}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel}, {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Davet bağlantınız # saniye içinde sona erecek.} other {Davet bağlantınız # saniye içinde sona erecek.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "{selectedCount} seçildi" @@ -2252,7 +2252,7 @@ msgstr "1 dakika" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 saat" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 ay (1 yıl)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "2FA yedeklemesi" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "2FA gereksinimi" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 üye (yazıyor)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 ay" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 saat" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 ay" @@ -2575,11 +2575,6 @@ msgstr "bir dakika" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Yeni bir masaüstü sürümü mevcut. Kurulum dosyasını indirin ve ardından {productName}'ı güncellemek için çalıştırın." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Yeni bir doğrulama kodu gönderildi." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Hesap verileri" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Hesap, spam yapmak, dolandırıcılık yapmak veya platformu kötüye kullanmak için var." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Hesap sınırlı" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Hesap durumu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Hesap çok yeni" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Hesap doğrulaması gerekli" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "İstenen izinlerle bir topluluğa bot ekleme" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Yorum ekle (isteğe bağlı)" @@ -3054,8 +3052,10 @@ msgstr "Bu kanala bir konu ekle" msgid "Add a word…" msgstr "Kelime ekle…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Çalışan bir e-posta adresi ekleyin" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Devam etmek için bir hesap ekleyin." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Önce hesabınıza bir e-posta ve parola ekleyin." @@ -3424,11 +3424,6 @@ msgstr "Eklendi: {createdDate} • son kullanım: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Ek yorumlar (isteğe bağlı)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Ek doğrulama gerekiyor" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Tüm diller" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Zaten iptal edilecek şekilde ayarlanmış" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Bu mesajı {productName} Güvenlik Ekibine de bildir" @@ -4713,11 +4708,6 @@ msgstr "Arama başlatmadan önce sor" msgid "Ask for a passkey after your password when you sign in" msgstr "Oturum açarken parolanızdan sonra geçiş anahtarı da istensin" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Hesabınızı incelemeleri için bu kurulumun yöneticilerine başvurun. Bu kurulum bağımsız olarak işletilir ve hesabınızı yalnızca yöneticileri değiştirebilir." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Gönderdiğiniz mesajlardaki URL'lerden izleme parametrelerini (utm_sour msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Gönderdiğiniz mesajlardaki URL'lerden izleme parametrelerini otomatik olarak kaldırın" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Yetişkinlere yönelik içerik olarak işaretlenmemiş kanallardaki mesajları müstehcen içeriğe karşı otomatik olarak tarar." @@ -5359,8 +5349,6 @@ msgstr "Şu an uzakta" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Geri" @@ -6506,11 +6494,6 @@ msgstr "Kameralar ve sanal yakalama cihazları Wayland sistem seçicisinde deği msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "{voiceChannelCameraUserLimit} katılımcının üzerinde kameralar kapalı" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "E-postanıza erişemiyor musunuz?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Buraya dosya yüklenemiyor" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Buraya dosya yüklenemiyor" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "E-postayı değiştir" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Emojiyi değiştir" @@ -7201,7 +7184,7 @@ msgstr "Kullanıcı üst sınırını {oldCount} değerinden {newCount} değerin msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Özel URL {oldCode} yerine {newCode} olarak değiştirildi" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Doğrulama seviyesi {oldLevel} yerine {newLevel} olarak değiştirildi" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kanal veya kategori" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Kanal izin geçersiz kılmaları" @@ -7509,8 +7492,6 @@ msgstr "Bağlantınızı kontrol edin ve tekrar deneyin." msgid "Check your connection, then try again." msgstr "Bağlantınızı kontrol edin, ardından yeniden deneyin." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Sistem seçicinizden bir ekran seçin" msgid "Choose a GIF" msgstr "GIF seçin" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Bir yöntem seçin" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Yeni bir parola seçin." @@ -7680,8 +7656,8 @@ msgstr "Bir eylem seçin." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Bir emoji seçin" @@ -7749,11 +7725,6 @@ msgstr "Kurulumunuzun nasıl çalışacağını seçin" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Alan sahipliğini kanıtlamak için aşağıdaki yöntemlerden birini seçin. Yalnızca birini tamamlamanız yeterlidir." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Bir doğrulama yöntemi seçin. Her iki yöntem de bu kontrolü geçebilir." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "{clientLabel} uygulamasının topluluğunuzda neler yapabileceğini seç msgid "Choose what friends see in their active now panel" msgstr "Arkadaşlarınızın şu an aktif panelinde neler göreceğini seçin" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Üyelerin mesaj gönderebilmek veya topluluk üyelerine DM gönderebilmek için nelere sahip olması gerektiğini seçin." @@ -8030,8 +8001,8 @@ msgstr "Net konuşma için mikrofonunuzu temizler." msgid "Clear" msgstr "Temizle" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Şu süreden sonra temizle" @@ -8053,7 +8024,7 @@ msgstr "Tüm ek mock'larını temizle" msgid "Clear all token overrides" msgstr "Tüm belirteç geçersiz kılmalarını temizle" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Ek mock'larını temizle" @@ -8066,14 +8037,14 @@ msgstr "Komutu temizle" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Özel durumu temizle" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Bu mesajdaki tüm tepkileri temizlemek istiyor musunuz?" @@ -8124,7 +8095,7 @@ msgstr "Arama girişini temizle" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Kömür teması" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Komutlar" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Seçilen bir veya daha fazla kanalda yavaş mod açık olduğu için yorumlar devre dışı bırakıldı. Yorum, iletildikten hemen sonra yavaş mod tarafından engellenirdi." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "{forwardChannelDisplayName} kanalında yavaş mod açık olduğu için yorumlar devre dışı bırakıldı. Yorum, iletildikten hemen sonra yavaş mod tarafından engellenirdi." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Yavaş mod açıkken yorumlar kullanılamaz." @@ -8670,11 +8639,11 @@ msgstr "Topluluklar" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Webhook'ları yönetemediğiniz topluluklar ve kanallar gizlenir." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Keşfet'te listelenen toplulukların tüm üyelerden gelen mesajları taraması gerekir. Keşfet etkinken bu ayar değiştirilemez." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Keşfet'te listelenen topluluklarda en az e-posta doğrulaması gerekir. Keşfet etkinken \"Hiçbiri\" seçilemez." @@ -8827,7 +8796,7 @@ msgstr "Topluluk adı" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Topluluk takma adı" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Topluluk profili" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Topluluk profili güncellendi" @@ -8907,7 +8876,7 @@ msgstr "Topluluk okunmamış rozet düzeyi" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Topluluk güncellendi" @@ -8952,11 +8921,6 @@ msgstr "Karşılaştırma" msgid "Complete mature content check" msgstr "Yetişkin içeriği kontrolünü tamamla" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "{productName} uygulamasını kullanmaya devam etmek için aşağıdaki doğrulama yollarından birini tamamlayın." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Ödemeyi tamamla" msgid "Complete the mature content check to unlock mature media." msgstr "Yetişkinlere yönelik medyanın kilidini açmak için yetişkin içeriği kontrolünü tamamlayın." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "{productName} uygulamasını kullanmaya devam etmek için aşağıdaki gerekli e-posta ve telefon doğrulama adımlarını tamamlayın." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "{productName} uygulamasını kullanmaya devam etmek için gerekli doğrulamayı tamamlayın." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Profil rozetinizi yapılandırın" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Bağlantıların sırası değiştirildi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Onay gerekli" @@ -9349,16 +9304,6 @@ msgstr "Kapsamlar ve izinlerle bir yetkilendirme URL'si oluşturun." msgid "Contact" msgstr "İletişim" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Destekle iletişime geçin" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Yardım için bu kurulumun yöneticileriyle iletişime geçin." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "İçerik üreticisi" msgid "Content filter" msgstr "İçerik filtresi" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "İçerik filtreleme" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Kodlanacak içerik türü" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "İçerik güvenliği denetimleri" @@ -9416,12 +9361,10 @@ msgstr "Bağlam menüleri sol tıklama (düğmelerde) veya sağ tıklama (diğer #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Kanal listelerindeki sessize alınmış kanallar için okunmamış göst msgid "Control which chat updates are announced by assistive technology." msgstr "Yardımcı teknolojilerin hangi sohbet güncellemelerini duyuracağını kontrol edin." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Sohbet bulunamadı" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Etiket eklenemedi" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Bu arkadaş gruba eklenemedi. Lütfen tekrar deneyin." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Gruba eklenemedi" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Tema bağlantısı oluşturulamadı" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Davet bağlantısı oluşturulamadı" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Ödemesiz döneminiz sonlandırılamadı" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Davet bağlantısı oluşturulamadı. Lütfen tekrar deneyin." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Görsel işlenemedi" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Bu mesaj yayınlanamadı" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Visionary topluluğuna yeniden katılamadınız" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Giriş sesi kaldırılamadı" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Kanal ayarları kaydedilemedi" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Giriş sesi kaydedilemedi" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Başvuru geri çekilemedi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Geri sayım sayacı" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Ülke" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Yönetici hesabını oluştur" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Kalan {addableCount, plural, one {# alıcıyla} other {# alıcıyla}} grup DM oluşturup diğerlerini atlamak ister misiniz?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Webhook oluştur" @@ -10948,7 +10884,7 @@ msgstr "Topluluktan özel emoji {emojiName}" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Özel giriş sesleri bu kurulumda etkin değil." @@ -11108,7 +11044,7 @@ msgstr "Özel ses işleme" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Özel uyarı metni" @@ -11530,11 +11466,6 @@ msgstr "Varsayılan arama motoru" msgid "Default shortcuts" msgstr "Varsayılan kısayollar" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Varsayılan sekme" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Bu mesajı sil" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Bu mesajı silmek istiyor musunuz? Geri alınamaz." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Bu mesajı sil? Geri alınamaz. Bu mesaj ayrıca bu kanalı takip eden her topluluktan kaldırılacaktır." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Geliştirici modu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Geliştirici seçeneği" @@ -12299,7 +12230,7 @@ msgstr "Doğrudan giriş" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Görüntüleme modu" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Görünen ad" @@ -12858,7 +12789,7 @@ msgstr "{communityName} topluluğuna katılmak ister misin?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Doktor, ben gelecekten geliyorum. Senin icat ettiğin bir zaman makinesiyle buraya geldim. Şimdi, 1985 yılına geri dönmek için yardımına ihtiyacım var." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Profil yerel saatini düzenle" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Yayınlanan mesajı düzenle?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Yukarıdaki veya aşağıdaki mesajlarını düzenle" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Profil görünümünüzü düzenleyin ve canlı önizlemesini görün" @@ -13590,10 +13521,8 @@ msgstr "{windowEndsOn} tarihine kadar para iadesi için uygun. Bu işlem aboneli msgid "Email" msgstr "E-posta" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "E-posta adresi gerekli." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "E-posta değiştirildi" @@ -13616,49 +13547,17 @@ msgstr "E-posta değiştirildi" msgid "Email delivery" msgstr "E-posta gönderimi" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "E-posta veya telefon" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "E-posta veya telefon yeniden doğrulaması gerekli" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "E-posta yeniden doğrulaması gerekli" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "E-posta kullanılamıyor" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "E-posta güncellemesi şu anda kullanılamıyor. Daha sonra tekrar deneyin veya destekle iletişime geçin." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "E-posta güncellemesi gerekli" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "E-posta gönderin, bir kişi hesabınızı inceleyecektir. SMS ile doğrulama yapamadığınızı bize bildirin, gerisini biz hallederiz. Yanıtlar e-posta ile gelir, bu nedenle anında değildir." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "E-posta doğrulama bildirim çubuğu" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "E-posta doğrulaması gerekli" @@ -13675,6 +13574,10 @@ msgstr "E-posta doğrulandı geçersiz kılma" msgid "Email verified successfully" msgstr "E-posta başarıyla doğrulandı" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Mevcut adresinize gönderilen e-postalar teslim edilmiyor. Yeni bir e-posta girin, oraya bir kod gönderelim." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Gömülü içerikler" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Gömülü içerikler gizlendi" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Gömülü içerikler yeniden gösterildi" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "/tts konuşma oynatmayı etkinleştir" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Bu ayarı değiştirmek için hesabınızda 2FA'yı etkinleştirin" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Geçerli bir {theOtherPlatform} şablon URL'si veya kodu girin." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Geçerli bir e-posta adresi girin." @@ -14298,33 +14199,11 @@ msgstr "Geçerli bir e-posta adresi girin." msgid "Enter a valid message link." msgstr "Geçerli bir mesaj bağlantısı girin." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Geçerli bir cep telefonu numarası girin." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Geçerli bir telefon numarası girin" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Geçerli bir kullanıcı adı girin ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Erişebileceğiniz bir e-posta adresi girin. Oraya bir kod göndereceğiz." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Kod girin" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Tam ekrana geç" msgid "Enter gift code…" msgstr "Hediye kodunu girin…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Yeni e-posta adresini girin" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Geçiş anahtarınızı kullanamıyorsanız yedek kodlarınızdan birini msgid "Enter one of your backup codes." msgstr "Yedek kodlarınızdan birini girin." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Telefon numarasını girin" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Kimlik doğrulayıcı uygulamanızdaki {digitCount} haneli kodu veya yed msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Kimlik doğrulayıcı uygulamanızdaki {digitCount} haneli kodu girin." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "{phoneNumber} numarasına gönderilen {digitCount} haneli kodu girin." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "{0} numarasına gönderilen {MFA_CODE_DIGIT_COUNT} haneli kodu girin." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Kodu girin" @@ -14408,11 +14267,6 @@ msgstr "Devam etmeden önce kodu girin." msgid "Enter the code from your authenticator app." msgstr "Kimlik doğrulayıcı uygulamanızdaki kodu girin." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "{emailAddress} adresine gönderilen kodu girin." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Mevcut e-posta adresinize gönderilen kodu girin." @@ -14426,6 +14280,7 @@ msgstr "E-posta adresinize gönderilen kodu girin." msgid "Enter the code shown in the app to continue." msgstr "Devam etmek için uygulamada gösterilen kodu girin." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Yeni adresinize gönderdiğimiz kodu girin." @@ -14434,11 +14289,6 @@ msgstr "Yeni adresinize gönderdiğimiz kodu girin." msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "E-postanızı doğrulamak için size gönderdiğimiz kodu girin. Kod onaylandıktan sonra parolanız ayarlanacaktır." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "E-posta kodunu girin" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Bir topluluğa katılmak için davet bağlantısını girin." @@ -14452,11 +14302,6 @@ msgstr "Kullanmak istediğiniz yeni e-postayı girin. Bir sonraki adımda oraya msgid "Enter the PIN for your security key to continue." msgstr "Devam etmek için güvenlik anahtarınızın PIN'ini girin." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "SMS kodunu girin" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Girişi tamamlamak için bu kodu tarayıcınıza girin." @@ -14492,11 +14337,6 @@ msgstr "Adınızı girin" msgid "Enter your password." msgstr "Parolanızı girin." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Telefon numaranızı girin" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Giriş sesi" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Giriş sesi dosyaları en fazla {limit} olmalıdır." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Giriş sesi kütüphanesi dolu" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Giriş sesi kaldırıldı" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Giriş sesi kaydedildi" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Giriş sesleri" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Giriş sesleri kullanılamıyor" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Sona eriyor:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Müstehcen içerik filtresi ayarı" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Panoya kopyalanamadı" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Webhook oluşturulamadı" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Özel URL yüklenemedi. Tekrar deneyin." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Webhook'lar yüklenemedi" @@ -15190,11 +15030,6 @@ msgstr "Özel URL kaldırılamadı. Tekrar deneyin." msgid "Failed to resend code. Try again." msgstr "Kod yeniden gönderilemedi. Tekrar deneyin." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Doğrulama kodu yeniden gönderilemedi. Daha sonra tekrar deneyin." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Mesaj gönderilemedi. Seçenekler için basılı tutun." msgid "Failed to send report. Try again." msgstr "Rapor gönderilemedi. Tekrar deneyin." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Doğrulama e-postası gönderilemedi. Daha sonra tekrar deneyin." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Başlatılamadı" @@ -15551,15 +15381,15 @@ msgstr "Kullanıcıya göre filtrele" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Herkese filtre uygula" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Rolü olmayan üyeleri filtrele" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Bu kanalı takip et" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Seçtiğiniz bir kanalda bu duyuruları almak için takip edin." @@ -15773,7 +15603,7 @@ msgstr "{currentName} adlı kanalın takibi" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Takip edilen kanallar" @@ -15857,11 +15687,6 @@ msgstr "Sadece İngilizlere özel..." msgid "For me" msgstr "Kendim için" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Bu doğrulama için bizden bir mesaj almak yerine bize bir mesaj göndereceksiniz." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Güvenliğiniz için devam etmeden önce lütfen siz olduğunuzu onaylayın." @@ -15905,7 +15730,7 @@ msgstr "Yükleme iskeletini zorla" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Yetişkin medyayı zorla" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "AFK kanalına taşımayı zorla" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "{permissionName} iznini zorla kaldır" @@ -15948,7 +15773,7 @@ msgstr "Özel URL sorumluluk reddini her zaman göster" msgid "Force show voice connection" msgstr "Ses bağlantısını her zaman göster" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Yavaş modu zorla etkinleştir" @@ -16020,7 +15845,7 @@ msgstr "Medyayı ilet" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Mesajı ilet" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Coğrafi engelleme katmanı" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Coğrafi olarak kısıtlanmış" @@ -16490,12 +16315,6 @@ msgstr "Kullanıcı adınızın ardından istediğiniz dört haneli etiketi {foo msgid "Get monthly" msgstr "Aylık al" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Yeni kod al" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Hediye kodları" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Hediye süresi" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Hediye envanteri" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Hediye envanteri akışı" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Hediye bulunamadı" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Hediye kullanıldı" @@ -17030,7 +16849,7 @@ msgstr "Grup doğrudan mesajı" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Merhaba {displayName}, erişiminizi kaybetmemek için hesabınızı sahiplenin." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Merhaba {displayName}, lütfen e-posta adresinizi doğrulayın." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Merhaba {displayName}, e-postanız adresinize teslim edilemiyor. Hesabınızı doğrulamak için çalışan bir e-posta adresi ekleyin." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Kendi ekran paylaşımınız gizlensin mi?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Yüksek" @@ -17755,11 +17579,6 @@ msgstr "Ben bir araç ipucuyum" msgid "I changed my mind" msgstr "Fikrimi değiştirdim" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Başka bir yola ihtiyacım var" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Bu rapor belirli bir mesajla ilgiliyse, bunun yerine o mesajı bildirin. msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Bu rapor belirli mesajlarla ilgiliyse, bunun yerine en alakalı mesajı bildirin. Mesaj raporları, güvenlik ekibimize en net bağlamı sağlar ve yorumlara ayrıntı eklemek, incelememizi hızlandırmamıza yardımcı olabilir. Yalnızca bir mesajı bildirmek daha geniş sorunu kapsamayacaksa, kullanıcının tamamını bildirmeye devam edin." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "SMS ile doğrulayamazsanız" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Herhangi bir doğrulama yöntemi kullanamıyorsanız yardım için destek ekibiyle iletişime geçin." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Arayüz boyutu" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Geçersiz ses dosyası" @@ -18674,8 +18483,10 @@ msgstr "Geçersiz JSON. Yukarıdaki URL'den gelen yanıtın tamamını yapışt #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Sesli aramaya katıl" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Sesli kanala katıl" @@ -19613,16 +19424,6 @@ msgstr "Visionary hakkında daha fazla bilgi edinin" msgid "Leave" msgstr "Ayrıl" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "{count, plural, one {# topluluktan} other {# topluluktan}} ayrılıp bu denetimi erteleyelim mi?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Ayrıl ve ertele" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Ekran okuyucuların açık kanala yeni mesajlar geldiğinde bunları duyurmasını sağlayın. Bildirim sesleri etkilenmez." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Topluluğun kendi kendini denetlemesine izin ver" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Kütüphane" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Kütüphane dolu (en fazla {max} ses). Yeni bir tane eklemeden önce birini silin." @@ -19812,7 +19613,7 @@ msgstr "Kütüphane: {count}/{max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Ömür boyu" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Yükleniyor..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Yükleniyor…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Düşük" @@ -20416,7 +20217,7 @@ msgstr "Topluluk özelliklerini yönet" msgid "Manage emoji & stickers" msgstr "Emoji ve çıkartmaları yönet" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Bu kanala mesaj gönderebilen gelen webhook'ları yönetin." @@ -20514,7 +20315,7 @@ msgstr "Tüm okunmamış gelen kutusu kanallarını onay sormadan hemen okundu o msgid "Mark as read" msgstr "Okundu olarak işaretle" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Kullanıldı olarak işaretle" @@ -20676,14 +20477,14 @@ msgstr "Yetişkinlere özel topluluk" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Yetişkinlere uygun içerik" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Yetişkinlere uygun içerik ve içerik uyarıları" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Maksimum kullanım ömrü (gün)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Aile dostu alanlar için maksimum koruma" @@ -20924,7 +20725,7 @@ msgstr "Oynatmayı durdur" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Üyenin yasağı kaldırıldı" msgid "Member updated" msgstr "Üye güncellendi" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Üye doğrulama" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Üye doğrulama seviyesi" @@ -21048,7 +20849,7 @@ msgstr "Çevrimdışı olduklarında bir rol atanmadığı sürece üyeler kald msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "\"{pinMessagesPermissionLabel}\" iznine sahip üyeler, herkes için mesaj sabitleyebilir." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Rolü olan üyeler bu kontrolleri atlayabilir. Herkese açık alanlar için doğrulamayı etkinleştirmenizi öneririz." @@ -21153,7 +20954,7 @@ msgstr "Sizden bahsedilenler {retentionDays} gün boyunca burada görünür." #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Yalnızca bahsetmeler" @@ -21292,7 +21093,7 @@ msgstr "Mesaj görüntüleme ayarları yalnızca masaüstünde kullanılabilir." msgid "Message editing" msgstr "Mesaj düzenleme" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Mesaj iletildi" @@ -21341,7 +21142,7 @@ msgstr "Mesaj giriş düğmeleri" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Mesaj çok uzun" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "DM listesindeki mesaj önizlemeleri" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Mesaj yayınlandı" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "{sourceName} kanalındaki iletiler artık {targetName} kanalında görünecek." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Bu duyuru kanallarında yayınlanan mesajlar buraya kopyalanır." @@ -21504,7 +21305,7 @@ msgstr "Bu duyuru kanallarında yayınlanan mesajlar sizin kanallarınıza kopya msgid "Messages you can bookmark" msgstr "Yer imlerine ekleyebileceğin mesajlar" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Bu toplulukta mesajlaşma geçici olarak duraklatıldı." @@ -21733,30 +21534,30 @@ msgstr "Sahte içerik 1 gün içinde sona eriyor" msgid "Mock expires in 7 days" msgstr "Sahte içerik 7 gün içinde sona eriyor" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Coğrafi engelleme kaplamasını taklit et" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Hediye envanterini taklit et" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Gelen aramayı taklit et" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Yetişkin içeriği kanal geçidi nedenini taklit et" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Yetişkin içeriği medya geçidi nedenini taklit et" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Birleşik Krallık coğrafi konumunu taklit et" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Çeşitli boyutlarda ve tüm durum permütasyonlarında sahte kullanıcı avatarları." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Varyantı taklit et" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Sahte ürün akışları" @@ -22698,14 +22494,16 @@ msgstr "Yeni topluluk sessize alma" msgid "New direct message" msgstr "Yeni doğrudan mesaj" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Yeni e-posta" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Yeni e-posta formu" @@ -22816,9 +22614,7 @@ msgstr "Önce en yeni" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "İleri" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Hayır" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "{attachFilesPermission} izni yok" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "{sendMessagesPermission} izni yok" @@ -23005,7 +22801,7 @@ msgstr "Kaydedilecek değişiklik yok" msgid "No channels available" msgstr "Kanal yok" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Kanal bulunamadı" @@ -23233,11 +23029,6 @@ msgstr "İzin bulunamadı" msgid "No personal words yet." msgstr "Henüz kişisel kelime yok." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Telefon numarası yok" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Sonuç bulunamadı" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Sonuç bulunamadı" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Kullanıcı bulunamadı" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Doğrulama gerekmiyor." @@ -23452,7 +23243,7 @@ msgstr "Doğrulama gerekmiyor." msgid "No verification methods available" msgstr "Kullanılabilir doğrulama yöntemi yok" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Webhook yok" @@ -23504,7 +23295,7 @@ msgstr "Dönüştürme yok" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Yok" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Yok (normal davranış)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Norveççe" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Yeterince uzun süredir üye değil" @@ -23798,9 +23589,9 @@ msgstr "Nesneler" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Kapalı" @@ -23848,7 +23639,7 @@ msgstr "Önce en eski" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Açık" @@ -23884,11 +23675,6 @@ msgstr "Bir veya daha fazla ek okunamadı veya yüklenemedi. Dosya taşınmış msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Yüklemeye çalıştığınız bir veya daha fazla dosya, dosya başına {maxSizeFormatted} olan maksimum boyut sınırını aşıyor." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Hızlı bir kontrol" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Yalnızca hoparlörler" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Bu ayarı yalnızca topluluk sahibi değiştirebilir" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Emojiyi tarayıcıda aç" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Emoji seçiciyi aç" @@ -24382,12 +24168,8 @@ msgstr "Menü açma simgesi" msgid "Open message history threshold" msgstr "Mesaj geçmişi eşiği ayarlarını aç" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Katmanı aç" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Açılır listeyi aç" @@ -24485,11 +24267,6 @@ msgstr "Yeni uygulamayı açın. Oturumunuz zaten açık." msgid "Open the shortcuts list for quick actions." msgstr "Hızlı eylemler için kısayol listesini açın." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Doğrulama e-postasını açın ve içindeki bağlantıyı kullanın. Bağlantı açıldıktan sonra bu pencere güncellenecektir." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Ses ve video ayarlarını aç" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Tarayıcınızı açın, oturum açın ve hesabınızı bağlamak için aşağıdaki kodu girin." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Mesajlarınızı açın" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Eski {PRODUCT_NAME} uygulamanızı açın ve Yeni bir cihaz bağla seçeneğini belirleyip aşağıdaki kodu girin." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Telefonunuzun mesajlaşma uygulamasını açın ve yeni bir kısa mesaj oluşturun." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Telefonunuzun mesajlaşma uygulamasını açın ve yeni bir kısa mesaj başlatın." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Diğer tepki…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Telefon numarası kontrolümüz şu anda çalışmıyor. Bu bizim hatamız, numaranızın değil. Birkaç dakika bekleyip aynı numarayı tekrar deneyin." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Kimlik avı, dolandırıcılık, kötü amaçlı bağlantılar veya gerçek dünyada zarara yol açabilecek yanlış iddialar." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Telefon" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Telefon numarası" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Telefon numarası gerekli" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Telefon numarası doğrulandı" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Telefon yeniden doğrulaması gerekiyor" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Telefon adımı" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Bu hesap için telefon doğrulaması kullanılamıyor. Başka bir yöntem kullanın veya destek ekibiyle iletişime geçin." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Telefon doğrulaması gerekli" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Kullanıcı adınızın sonundaki 4 haneli sayıyı seçin" msgid "Pick the appearance this administrator account should start with." msgstr "Bu yönetici hesabının hangi görünümle başlayacağını seçin." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Şimdi tamamlayabileceğiniz yöntemi seçin." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Resim içinde resim" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Sabitle" @@ -25471,7 +25176,7 @@ msgstr "Grup DM'ini sabitle" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Herhangi bir mesajı sabitleyin veya sabitlemesini kaldırın." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Bu mesajı herkesin görmesi için kanala sabitleyin." @@ -26227,18 +25932,18 @@ msgstr "Profil rengi" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Profil özelleştirme" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "{selectedGuildName} için profil özelleştirmesi" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Profil özelleştirme formu" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Profil türü" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Profil güncellendi" @@ -26340,7 +26045,7 @@ msgstr "Yeni ses cihazı bağlandığında sor" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Saldırı koordinasyonu" msgid "Rate" msgstr "Hız" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Hız sınırı aşıldı" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Ham gömülü içerik JSON'u" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "{userName} arkadaş listenizden çıkarılsın mı?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Tümünü kaldır" @@ -27290,7 +26990,7 @@ msgstr "Bu mesajdaki tüm {emojiNameWithColons} tepkilerini kaldırmak istiyor m #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Tüm tepkileri kaldır" @@ -27899,20 +27599,10 @@ msgstr "Bildirilen kullanıcının etiketi (isteğe bağlı)" msgid "Reposts: <0>{countLabel}" msgstr "Yeniden paylaşımlar: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Önce yeni bir kod isteyin." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Yeni bir sıfırlama bağlantısı isteyin" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Önce bir doğrulama kodu isteyin." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "İstekler" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Moderasyon işlemleri için 2FA zorunlu kıl" @@ -27958,7 +27648,7 @@ msgstr "OAuth2 kod izni gerektir" msgid "Require passkey" msgstr "Geçiş anahtarı gerektir" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Moderatörlerin yasaklama, atma, zaman aşımı uygulama veya mesaj silme işlemlerini yapabilmesi için iki faktörlü kimlik doğrulaması zorunludur." @@ -27972,46 +27662,6 @@ msgstr "Gerekli" msgid "Required 2FA for moderation actions" msgstr "Moderasyon eylemleri için 2FA zorunlu kılındı" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Gerekli eylem varsayılan sekmesi" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Gerekli eylem akışı" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Gerekli eylem telefon adımı" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Gerekli eylem yeniden gönderme yükleniyor" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Gerekli eylem yeniden gönderme sonucu" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Gerekli eylem yeniden doğrulama metni" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Gerekli eylem varyantı" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Gerekli eylemler katmanı" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Bu botu davet ederken bir yönlendirme URI'si ve yetkilendirme kodu gerektirir." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Doğrulanmış bir e-posta adresi ve en az 5 dakikalık bir hesap gerektirir." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Doğrulanmış bir e-posta adresi gerektirir." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Doğrulanmış bir telefon numarası gerektirir." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Orta seviyedeki her şeye ek olarak, topluluğun en az 10 dakikadır üyesi olmayı gerektirir." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Tekrar gönder ({resendSecondsRemaining}sn)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Tekrar gönder ({secondsRemaining}sn)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Yeniden gönder düğmesi yükleniyor" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Kodu tekrar gönder" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "E-postayı tekrar gönder" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Yeniden gönderme sonucu" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Tekrar gönderildi" @@ -28518,21 +28152,6 @@ msgstr "Göster" msgid "Reveal spoiler" msgstr "Spoiler'ı göster" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "{productName} uygulamasını kullanmaya devam etmek için e-postanızı yeniden doğrulayın veya telefonunuzu doğrulayın." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "{productName} uygulamasını kullanmaya devam etmek için e-postanızı yeniden doğrulayın." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "{productName} uygulamasını kullanmaya devam etmek için telefon numaranızı yeniden doğrulayın." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Doygunluk" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Sarma önizlemesi" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Kanallarda ara" msgid "Search communities" msgstr "Toplulukları ara" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Ülkeleri ara..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Ülkeleri ara…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "İkamet ettiğiniz ülkeyi seçin." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Seç…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Gönder" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Gönder ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Başka bir rapor gönder" msgid "Send button" msgstr "Gönder düğmesi" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Kod gönder" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Mesaj gönder" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Mesaj gönderme devre dışı" @@ -30151,32 +29759,11 @@ msgstr "Kayıtlı medyayı gönder: {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Metin okuma mesajlarını /tts ile gönderin. Metin okumayı açan üyeler bu mesajları sesli olarak duyar." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "<0>{0} kodunu <1>{1} numarasına gönderin" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Kodu aşağıdaki telefon numarasına gönderin." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Bu kodu gönder" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Bu sabitlemeyi zamanda geriye gönderelim mi?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Gönderilecek numara" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Sesli mesaj gönder" msgid "Send:" msgstr "Gönderme:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Bu telefon numarasına SMS göndermek {PRODUCT_NAME} için çok pahalı, bu yüzden bunun yerine sizin bize bir SMS göndermeniz gerekiyor. Bunun ideal olmadığının farkındayız. Bu gereksinimi hesabınızdan kaldırmaları için bu kurulumun yöneticilerine de başvurabilirsiniz." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Bu telefon numarasına SMS göndermek {PRODUCT_NAME} için çok pahalı, bu yüzden bunun yerine sizin bize bir SMS göndermeniz gerekiyor. Bunun ideal olmadığının farkındayız. Bu gereksinimi hesabınızdan kaldırmamız için <0>{SUPPORT_EMAIL} adresiyle de iletişime geçebilirsiniz." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Seri gönderim" msgid "Serve the token file" msgstr "Belirteç dosyasını sun" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Hizmet hatası" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "\"{label}\" için özel kısayol ayarla" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Özel durum ayarla" @@ -30486,18 +30060,6 @@ msgstr "Ses bölgesi {region} olarak ayarlandı" msgid "Set the voice region to automatic" msgstr "Ses bölgesi otomatik olarak ayarlandı" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Bu kontrolü ertele" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Bu denetimi erteleyelim mi?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Zamirlerinizi ayarlayın" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Durumunuzu ayarlayın" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Kayıt sırasında klavye kısayolları duraklatılır." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Mesajı kısaltıp tekrar deneyin." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Sistem tepsisinde veya menü çubuğunda bir {productName} simgesi göster" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "İçerik uyarısı göster" @@ -31672,7 +31234,7 @@ msgstr "Yavaş mod · {remaining} bekleyin" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Yavaş mod etkin" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Yavaş mod {durationLabel} olarak ayarlandı. Başka bir mesaj göndermeden önce bekleyin." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Yavaş modda kalan süre" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Yavaş mod simülasyonu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Yavaş mod için kalan süre" @@ -31807,11 +31369,6 @@ msgstr "Akıcı kaydırma" msgid "Smoother video" msgstr "Daha akıcı video" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "SMS doğrulaması şu anda kullanılamıyor. Daha sonra tekrar deneyin veya destekle iletişime geçin." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Bu çıkartma hazırlanırken bir sorun oluştu. Başka bir dosya deneyin veya bir süre sonra tekrar deneyin." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Yayınlanırken bir şeyler ters gitti. Birazdan tekrar dene." @@ -32009,11 +31566,9 @@ msgstr "Bir şeyler ters gitti. Sayfayı yeniden yükleyin veya tekrar oturum a msgid "Something went wrong. Try again later." msgstr "Bir sorun oluştu. Lütfen daha sonra tekrar deneyin." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Bir şeyler ters gitti. Tekrar deneyin." @@ -32352,11 +31907,6 @@ msgstr "SSO ile oturum açma zaman aşımına uğradı. Tekrar deneyin." msgid "Staff controls" msgstr "Personel kontrolleri" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Operatörünüzün standart mesajlaşma ücretleri geçerli olabilir." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Yıldız animasyonu" msgid "Starred channels" msgstr "Yıldızlı kanallar" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Abone aktarımı:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Abonelik" @@ -33051,14 +32599,12 @@ msgstr "Abonelik senaryoları" msgid "Subtext" msgstr "Alt metin" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Başarılı" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Çoğu topluluk için önerilir" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Sistem ve karşılama" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "{productName} ekibinden sistem duyuruları. Buradan yanıt veremezsiniz." @@ -33765,11 +33311,6 @@ msgstr "Metin seçimi" msgid "Text size" msgstr "Metin boyutu" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Telefonunuzdan bize mesaj gönderin" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Tayca" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "{productName} uygulamasını güvenli tutmaya yardımcı olduğunuz için teşekkür ederiz. Raporunuzu en kısa sürede inceleyeceğiz." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Bu kod çalışmadı. Kontrol edip tekrar deneyin." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Bu kodun süresi doldu. Yeni bir kod isteyin." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Bu işlem tamamlanamadı. Bazı topluluklardan zaten çıkılmış olabilir ve hesabınız hâlâ kilitli. Tamamlamak için Bu kontrolü ertele düğmesine tekrar basın." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Bu işlem gerçekleşmedi. Hiçbir şey değişmedi. Tekrar deneyin." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Geçerli bir renk gibi görünmüyor. Hex, rgb(), hsl() veya bir CSS ren msgid "That doesn't look like a valid URL." msgstr "Geçerli bir URL gibi görünmüyor." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Bu e-posta adresi zaten kullanımda." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Geçersiz kılma {permissions} iznini reddetti" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Aradığınız sayfa mevcut değil veya taşınmış." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Telefon kontrolü beklemeye alındı. Bir e-posta adımı kaldı." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Davet oluşturulabilecek kanal yok." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Şu anda bu toplulukta atanacak bir rol yok ancak <0>{rolesSettingsPath} üzerinden yeni bir rol oluşturabilirsiniz." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Bu kanal için yapılandırılmış webhook yok. Harici uygulamaların mesaj göndermesine izin vermek için bir webhook oluşturun." @@ -34273,7 +33784,7 @@ msgstr "Davetler yüklenirken bir hata oluştu. Tekrar deneyin." msgid "There was an error loading the stickers. Try again." msgstr "Çıkartmalar yüklenirken bir hata oluştu. Tekrar deneyin." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Bu kanalın webhook'ları yüklenirken bir hata oluştu. Tekrar deneyin." @@ -34417,7 +33928,7 @@ msgstr "Bu kanal art arda 10 mesaj yayınlayabilir, ardından her 6 dakikada bir msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Bu kanal art arda 10 mesaj yayınlayabilir, ardından her 6 dakikada bir tane daha. Birkaç dakika içinde tekrar deneyin." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Bu kanal webhook'ları desteklemiyor." @@ -34550,12 +34061,12 @@ msgstr "Bu bağlantı doğrulanmadı." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Bu hassas içerik barındırıyor." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Bu sohbet artık kullanılamıyor." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Bu grupta çok fazla kişi var" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Bu grup dolu. Daha fazla kişi eklemeden önce birini çıkarın." @@ -34715,11 +34226,6 @@ msgstr "Bu, bir topluluğa ait özel bir çıkartmadır." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Bu, yaş kısıtlamalı bir kanaldır. Güncellemeler yalnızca yaş kısıtlamalı kanallara gidebilir." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Bu bir spam önleme kontrolüdür. Telefon numaranız hesabınıza bağlı değil." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Bu devre dışı" msgid "This is how messages appear" msgstr "Mesajlar böyle görünür" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Bu seçenek şu anda hesabınız için kullanılamıyor. Bunu incelemeleri için bu kurulumun yöneticilerine başvurun." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Bu şu anda hesabınızda kullanılamıyor. {supportEmail} adresine e-posta gönderin, bir kişi inceleyecektir." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Aradığınız kanal bu değil." @@ -34792,11 +34288,6 @@ msgstr "Bu son geçiş anahtarınız ve geçiş anahtarları ikinci faktörünü msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Bu son geçiş anahtarınız. Bunu sildikten sonra ikinci faktör olarak geçiş anahtarı kullanamazsınız." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Bu bir mobil numara değil, bu yüzden mesajımızı alamaz. Başka bir mobil numara deneyin veya yanlış olduğunu düşünüyorsanız destek ekibiyle iletişime geçin." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Bu mesaj zaten silinmiş." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Bu ileti zaten yayınlandı" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Bu mesaj artık mevcut değil." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Bu takma ad yalnızca bu toplulukta görünür olacak" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Bu numara bunun yerine bize mesaj göndererek doğrulanır. Kodu ve mesaj atılacak numarayı almak için geri dönüp telefonla doğrulamayı yeniden başlatın." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Bu numaranın, bizden SMS almak yerine bize mesaj göndererek doğrulanması gerekiyor." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Bu katılımcı sağırlaştırıldı" msgid "This participant was deafened by moderators" msgstr "Bu katılımcı moderatörler tarafından sağırlaştırıldı" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Bu telefon numarası kullanılamıyor. Başka bir mobil numara deneyin veya destekle iletişime geçin." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Bu telefon numarası zaten kullanılmış. Başka bir numara deneyin veya destekle iletişime geçin." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Bu kullanıcının bu toplulukta hiçbir rolü yok." msgid "This user is already banned from the community." msgstr "Bu kullanıcı topluluktan zaten yasaklanmış." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Bu kullanıcı artık mevcut değil." @@ -35065,11 +34536,6 @@ msgstr "Bu kullanıcı bir platform yöneticisi tarafından bu topluluğa zorla msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Bu doğrulama oturumunun süresi doldu. {productName} uygulamasına dönün ve ödeme işlemine yeniden başlayın." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Bu doğrulama oturumunun süresi doldu. Lütfen yeniden başlayın." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Bu işlem sizi oturumdan çıkaracak, önbelleğe alınmış dosyaları msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Bu işlem, tüm harici bağlantılara güvenecek ve her alan adı için uyarıyı atlayacaktır. Mevcut güvenilir alan adlarınız değiştirilecektir. Bu daha az güvenlidir." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Mesajınızı aldıktan sonra bu pencere otomatik olarak güncellenecektir." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Başlık çubuğu" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Başlık çubuğu platformu" @@ -35470,18 +34931,11 @@ msgstr "Ton" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "HDR görüntüleri standart aralığa ton eşleyerek en yüksek parlaklığı azaltın." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Çok fazla deneme yaptınız. Biraz bekleyip tekrar deneyin." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Çok fazla topluluk" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Çok fazla istek gönderildi. Daha sonra tekrar deneyin." @@ -36151,8 +35605,10 @@ msgstr "Yükleme için hiçbir emoji hazırlanamadı. Şu hatalar oluştu:" #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Kullanılamıyor" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Kategorisiz" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Sahiplenilmemiş hesap" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Sırasız" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Sabitlemeyi kaldır" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Mesajın sabitlemesini kaldır" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Bu mesajın sabitlemesi kaldırılsın mı?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Kaydedilmemiş değişiklikler" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Desteklenmeyen ses dosyası." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Ben tekrar açana kadar" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Doğrulanmamış e-posta" @@ -36958,12 +36414,7 @@ msgstr "Bu mesajı görüntülemek için {productName} uygulamasını güncelley msgid "Update app" msgstr "Uygulamayı güncelle" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "E-postayı güncelle" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Durumumu güncelle" @@ -37306,18 +36757,13 @@ msgstr "Görsel URL'sinin ekleneceği yere {url} yazın." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "{readMessageHistoryPermissionLabel} iznine sahip olmayan üyeler için mesaj geçmişi eşik tarihini ayrı bir pencerede ayarlayın." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Farklı bir e-posta adresi kullanın ve bir kodla doğrulayın." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Gerçek olanı kullan" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Gerçek premium türünü kullan" @@ -37335,16 +36781,6 @@ msgstr "Alternatif yöntem kullan" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "İki faktörlü kimlik doğrulama kodları oluşturmak için bir kimlik doğrulayıcı uygulama kullanın" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Erişebileceğiniz bir e-posta adresi kullanın. Oraya bir kod göndereceğiz." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Mevcut e-postanızdan farklı bir e-posta kullanın." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Uygulama genelinde koyu temayı kullan" msgid "Use default" msgstr "Varsayılanı kullan" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Farklı bir e-posta kullan" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "E-posta kullan" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Geçiş anahtarları iki faktörlü kimlik doğrulama için kullanılsı msgid "Use passkeys to sign in without a password" msgstr "Parola olmadan oturum açmak için geçiş anahtarlarını kullanın" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Telefon kullan" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Yeniden doğrulama metnini kullan" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Kullanıcı başka kanala taşındı" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Kullanıcı bulunamadı" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Doğrulama" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Doğrulama ve üyelik engelleri" @@ -37970,15 +37387,8 @@ msgstr "Doğrulama kodu" msgid "Verification code sent" msgstr "Doğrulama kodu gönderildi" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Doğrulama kodu gönderildi. Yeni e-posta gelen kutunuzu kontrol edin." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Doğrulama e-postası gönderildi. Gelen kutunuzu kontrol edin." @@ -38038,23 +37448,6 @@ msgstr "Kimlik doğrulama formu" msgid "Verify it's you" msgstr "Kimliğinizi doğrulayın" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Telefonu doğrula" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Telefon numarasını doğrula" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Telefon numarası doğrulama formu" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Bir kimlik doğrulayıcı uygulaması eklemeden önce e-postanızı doğrulayın." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Topluluk takma adınızı, avatarınızı, banner'ınızı, biyografinizi, zamirlerinizi veya vurgu renginizi değiştirmeden önce e-postanızı doğrulayın." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Kullanıcı adınızı, görünen adınızı, avatarınızı, banner'ınızı, biyografinizi, zamirlerinizi, saat diliminizi veya {premiumProductName} rozeti gizliliğinizi değiştirmeden önce e-postanızı doğrulayın." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Bu topluluk profilini düzenlemeden önce e-postanızı doğrulayın. Yine de buradan önizleyebilirsiniz." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Profilinizi düzenlemeden önce e-postanızı doğrulayın. Yine de buradan önizleyebilirsiniz." @@ -38113,11 +37506,6 @@ msgstr "Arkadaşlık isteği göndermeden önce e-postanızı doğrulayın." msgid "Verify your email first" msgstr "Önce e-postanızı doğrulayın" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "{productName} uygulamasını kullanmaya devam etmek için e-postanızı veya telefonunuzu doğrulayın." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Hediye almak için e-postanı doğrula." msgid "Verify your email to change your username" msgstr "Kullanıcı adınızı değiştirmek için e-postanızı doğrulayın" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "{productName} uygulamasını kullanmaya devam etmek için e-postanızı doğrulayın." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Bu topluluk profilini düzenlemek için e-postanızı doğrulayın" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Profilinizi düzenlemek için e-postanızı doğrulayın" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Sürüm" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Çok yüksek" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Sesi artır" msgid "Wait a moment before deleting more messages." msgstr "Daha fazla mesaj silmeden önce biraz bekleyin." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Biraz bekleyin. Mesajınızı aldığımızda bu pencere otomatik olarak kapanacaktır." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Mesajlar arasında bekleme süresi. \"{bypassSlowmodePermissionLabel}\" iznine sahip üyeler bunu atlayabilir." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Burada bekleyin" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Geçiş anahtarı bekleniyor…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "{forwardChannelDisplayName} kanalındaki yavaş modun süresinin dolması bekleniyor." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Seçilen bir veya daha fazla kanalda yavaş modun süresinin dolması bekleniyor." @@ -39115,16 +38482,6 @@ msgstr "Bu temayı okuyamadık. Bozuk veya geçersiz olabilir." msgid "We couldn't remove that account. Try again." msgstr "Bu hesabı kaldıramadık. Lütfen tekrar deneyin." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Bu numarayı otomatik olarak doğrulayamadık. Destek ekibiyle iletişime geçin, bir kişi hesabınızı inceleyecektir." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Bu ülkeye doğrulama SMS'leri göndermiyoruz. Başka bir ülkenin mobil numarasını deneyin veya destek ekibimizle iletişime geçin." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Bu hesap için mevcut bir {premiumProductFullName} aboneliği bulduk. Ö msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Brezilya'daki {premiumProductName} fiyatını düşürdük. Artık ayda {monthlyPrice}, yılda ise {yearlyPrice}." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Devam etmeden önce bir doğrulama adımına ihtiyacımız var. Bu, hesapları korumaya ve {productName} platformunu spam'den uzak tutmaya yardımcı olur." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Devam etmeden önce iki doğrulama adımına ihtiyacımız var. Adımları tek tek göstereceğiz." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Hesabınıza erişiminizi kaybetmemek için bu kodları şimdi kaydetmenizi öneririz." @@ -39167,11 +38514,6 @@ msgstr "{email} adresine bir kod gönderdik." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Tarayıcıda oturum açma ekranı açıldığında {prefillEmail} adresini önceden dolduracağız." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Mümkün olduğunda bir SMS kodu göndereceğiz." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Size ömür boyundan daha uzun bir {PREMIUM_PRODUCT_NAME} süresi vermek isterdik ama bu, uzay-zaman sürekliliğini bozar. Bunun yerine hediyeyi bir arkadaşınıza gönderelim mi?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Bunu en kısa sürede işleme alacağız. Arşiviniz hazır olduğunda bir e-posta alacaksınız." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Önceki e-postanızı geri yükleyeceğiz, eski oturumları kapatacağız, telefon numaralarını kaldıracağız, MFA'yı devre dışı bırakacağız ve hesabınızı yeni bir parolayla güvence altına alacağız." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Eski e-postanızı geri yükleyeceğiz, eski oturumları kapatacağız, MFA'yı devre dışı bırakacağız ve hesabınızı yeni bir şifreyle güvence altına alacağız." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Parolanızı değiştirmeden önce e-postanıza bir doğrulama kodu gön msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Yedek kodlarınızı görüntüleyebilmeniz için önce e-postanıza bir doğrulama kodu göndereceğiz." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Uygun olduğunda SMS kodu göndereceğiz. Numaranız hesabınıza bağlı değil. Yalnızca sınırlı bir süre için şifrelenmiş bir işaret tutuyoruz, kullanıcı kimliği olmadan." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Mevcut e-postanızı ve ardından yeni e-postanızı tek kullanımlık kodlarla doğrulayacağız." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook oluşturuldu" @@ -39331,7 +38669,7 @@ msgstr "Webhook güncellendi" msgid "Webhook URL" msgstr "Webhook URL'si" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhook'lar" @@ -39486,8 +38824,8 @@ msgstr "Paylaştığınız içerik güncellenmiyor" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Neler oluyor?" @@ -39967,21 +39305,11 @@ msgstr "<0>{readMessageHistoryPermissionLabel} iznini <1>{EVERYONE_MENTION}< msgid "You can sign back in at any time." msgstr "İstediğiniz zaman tekrar giriş yapabilirsiniz." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Bu kurulumun yöneticilerinden istediğiniz zaman bir insan tarafından inceleme talep edebilirsiniz." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Yine de bir hesap oluşturabilir veya oturum açabilirsiniz. Davetler daha sonra tekrar etkinleştirilirse, katılmak için aynı bağlantıyı kullanabilirsiniz." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Bir insanın incelemesi için istediğiniz zaman {supportEmail} adresine e-posta gönderebilirsiniz." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Bağlantı, emoji ve Markdown kullanabilirsiniz." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Buraya ifade ekleyemezsiniz" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Zaman aşımındayken yeni tepkiler ekleyemezsiniz." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Kendinizle arkadaş olamazsınız" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Takma adınızı buradan değiştiremezsiniz" @@ -40094,7 +39422,7 @@ msgstr "Kendinize arkadaşlık isteği gönderemezsiniz." msgid "You can't send messages in this channel." msgstr "Bu kanalda mesaj gönderemezsiniz." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Bu toplulukta mesaj gönderemezsiniz." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Bu üyeye bu işlemi yapmak için izniniz yok." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Bu sesli kanala katılma izniniz yok" @@ -40243,7 +39571,7 @@ msgstr "Bu emojiyi yeniden adlandırma izniniz yok. Ad önceki haline döndürü msgid "You have been banned from this community." msgstr "Bu topluluktan yasaklandınız." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "{username} adlı kullanıcıyı engellediniz. Mesaj göndermek için engelini kaldırın." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Kaydedilmemiş değişiklikleriniz var." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Kaydedilmemiş değişiklikleriniz var. Ayrılmadan önce kaydedin veya sıfırlayın." @@ -40270,7 +39598,7 @@ msgstr "Kaydedilmemiş değişiklikleriniz var. Ayrılmadan önce kaydedin veya msgid "You haven't authorized any applications to access your account." msgstr "Hesabınıza erişmesi için henüz hiçbir uygulamaya yetki vermediniz." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Mesaj gönderebilmek için bu topluluğa yeterince uzun süredir üye değilsiniz." @@ -40326,11 +39654,6 @@ msgstr "Hesap oluşturmak için hizmet şartlarını kabul etmelisiniz" msgid "You must verify your email before sending a report." msgstr "Rapor göndermeden önce e-postanızı doğrulamanız gerekir." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "E-posta adresinizi buradan değiştirmek için mevcut e-postanıza erişmeniz gerekir. Mümkünse telefon doğrulamayı kullanın veya destekle iletişime geçin." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Bu izinleri düzenlemek için \"{manageRolesPermissionLabel}\" iznine sa msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Bu izinleri düzenlemek için \"{manageRolesPermissionLabel}\" iznine sahip olmanız gerekir." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Bu kanalın webhook'larını görüntülemek ve düzenlemek için \"{manageWebhooksPermissionLabel}\" iznine sahip olmanız gerekir." @@ -40384,18 +39707,14 @@ msgstr "Topluluk oluşturmadan önce hesabınızı sahiplenmeniz gerekiyor." msgid "You need to claim your account before you can start a direct message." msgstr "Doğrudan mesaj göndermeden önce hesabınızı sahiplenmeniz gerekir." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Doğrudan mesaj göndermek için hesabınızı sahiplenmeniz gerekiyor." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Bu toplulukta mesaj göndermek için hesabınızı sahiplenmeniz gerekiyor." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Bu toplulukta mesaj göndermek için bir telefon numarası doğrulamanız gerekiyor." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Doğrudan mesaj göndermeden önce e-posta adresinizi doğrulamanız ger msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "{premiumProductFullName} satın almadan önce e-postanızı doğrulamanız gerekiyor." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Bu toplulukta mesaj göndermek için e-postanızı doğrulamanız gerekiyor." @@ -40424,11 +39743,6 @@ msgstr "Bu toplulukta mesaj göndermek için e-postanızı doğrulamanız gereki msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Sizin veya eklediğiniz kişinin açık grup DM sayısı üst sınıra ulaşmış. Birinden ayrılıp tekrar deneyin." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Şu topluluklarda kalırsınız: {ownedNames}. Sahipler kendi topluluklarından ayrılamaz." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Moderatörler tarafından sağırlaştırıldınız" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Yetkilendirdikten sonra {redirectHostname} adresine yönlendirileceksiniz." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Bu kontrolün geçerli olduğu {count, plural, one {# topluluktan} other {# topluluktan}} ayrılacaksınız ve hesabınız tekrar normal çalışacak." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Şu topluluklardan ayrılacaksınız: {guildNames}. Gönderdiğiniz hiçbir şey silinmez ve daha sonra tekrar katılabilirsiniz." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "E-posta adımını yine de tamamlamanız gerekecek." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Çok hızlı gidiyorsunuz" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Çok hızlı gidiyorsunuz. Biraz bekleyip tekrar deneyin." @@ -40636,7 +39935,7 @@ msgstr "Çok hızlı mesaj gönderiyorsunuz" msgid "You're streaming!" msgstr "Yayın yapıyorsunuz!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Zaman aşımındasınız. Zaman aşımı süresi dolana kadar mesajlaşma, tepkiler ve sesli iletişim duraklatıldı." @@ -40764,25 +40063,25 @@ msgstr "{storeName} yenileme ödemeniz başarısız oldu ancak <0/> <1>{graceDat msgid "Your account" msgstr "Hesabınız" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Hesabınız hemen normale döner ve artık telefon numarasına ihtiyacınız olmaz. Bu kalıcı bir muafiyet değildir ve bu kontrolü daha sonra tekrar isteyebiliriz." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Hesabınız başarıyla bağlandı. Artık bu sekmeyi kapatıp uygulamaya dönebilirsiniz." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Hesabınız normale döndü." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Hesabınız sınırlı" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Hesabınız sınırlı. Nasıl kaldırılacağını öğrenmek için e-postanızı kontrol edin." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Hesabınız henüz sahiplenilmedi. E-posta ve parola olmadan başka cihazlardan giriş yapamazsınız ve hesabınıza erişiminizi kaybedebilirsiniz. Güvence altına almak için hesabınızı şimdi sahiplenin." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Bu toplulukta mesaj göndermek için hesabınız çok yeni." @@ -40800,11 +40099,6 @@ msgstr "Hesabınız çok faktörlü kimlik doğrulama gerektiriyor ancak bu ciha msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Parolanızla oturum açtığınızda hesabınız artık iki faktörlü kimlik doğrulamayla korunmayacak. Ayrıca iki faktörlü kimlik doğrulama gerektiren topluluklardaki yükseltilmiş izinlerinizi de kaybedeceksiniz." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Hesabınız hemen normal çalışmaya devam eder ve hiçbir şey kaldırılmaz. Bu kontrolü daha sonra tekrar isteyebiliriz." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Kartınız yerelleştirilmiş fiyatlandırma için kontrol ediliyor. Bu msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Kartınız uygun. Şimdi ödeme sayfasına yönlendiriliyorsunuz." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Operatörünüz bu numaranın kullanımda olmadığını belirtiyor. Kontrol edip tekrar deneyin veya doğruysa destek ekibimizle iletişime geçin." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Yaptığınız değişiklikler bu kanalı takip eden tüm topluluklara ulaşacaktır, bu biraz zaman alabilir. Yayınlanan her mesaj için 3 hızlı düzenleme hakkınız vardır, sonrasında her 20 dakikada bir düzenleme yapabilirsiniz." @@ -40869,21 +40158,6 @@ msgstr "Cihazınız {name} için güncellenmiş bir geçiş anahtarını kaydetm msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Cihazınız {name} için güncellenmiş bir geçiş anahtarını kaydetmenizi isteyecek. Az önce kullandığınız telefonu veya güvenlik anahtarını kullanın." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "E-posta adresiniz güncellendi." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "E-postanız mesaj alamıyor. Hesabınıza ulaşabilmemiz için çalışan bir e-posta adresi ekleyin." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "E-postanız mesaj alamadı. {productName} uygulamasını kullanmaya devam etmek için güncelleyin." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "E-postanız doğrulandı. Artık hesabınıza giriş yapabilirsiniz." @@ -41000,21 +40274,11 @@ msgstr "Mesajınız güncellenemedi" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Son satın alımınız artık iade süresi içinde değil. Fatura sorunları için destek ekibiyle iletişime geçin." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "yeni e-postanız" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Yeni takma adınız veya sıfırlamak için boş bırakın." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Numaranız hesabınıza bağlı değil. Yalnızca sınırlı bir süre için şifrelenmiş bir işaretleyici saklıyoruz, kullanıcı kimliği olmadan." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Ödemeniz iptal edildi. Şimdi bu sekmeyi kapatıp uygulamaya dönebilirsiniz." @@ -41054,11 +40318,6 @@ msgstr "Satın aldığınız hediyeler" msgid "your region" msgstr "bölgeniz" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Devam etmeden önce kaydınızın ek bir anti-spam kontrolünden geçmesi gerekiyor." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/uk/messages.po b/fluxer_app/src/features/i18n/locales/uk/messages.po index 6b76592f9..98880cdc6 100644 --- a/fluxer_app/src/features/i18n/locales/uk/messages.po +++ b/fluxer_app/src/features/i18n/locales/uk/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# реакція} few {# реакції} many {# р msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# користувач} few {# користувачі} many {# користувачів} other {# користувача}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# секунда} few {# секунди} many {# секунд} other {# секунди}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} о {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {Ваше посилання-запрошення дійсне ще # секунду.} few {Ваше посилання-запрошення дійсне ще # секунди.} many {Ваше посилання-запрошення дійсне ще # секунд.} other {Ваше посилання-запрошення дійсне ще # секунди.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Вибрано: {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 хвилина" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 годин" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 місяців (1 рік)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "резервні коди 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Вимога 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 учасники (друкують)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 місяці" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 годин" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 місяців" @@ -2575,11 +2575,6 @@ msgstr "хвилина" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Доступна нова комп'ютерна версія. Завантажте інсталятор і запустіть його, щоб оновити {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Новий код підтвердження надіслано." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Дані облікового запису" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Обліковий запис створено для розсилання спаму, шахрайства або зловживання платформою." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Обліковий запис обмежено" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Стан облікового запису" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Обліковий запис занадто новий" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Потрібна перевірка облікового запису" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Додати бота до спільноти із запитаними дозволами" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Додати коментар (необов'язково)" @@ -3054,8 +3052,10 @@ msgstr "Додати тему до цього каналу" msgid "Add a word…" msgstr "Додати слово…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Додайте дієву електронну адресу" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Щоб продовжити, додайте обліковий запис." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Спершу додайте електронну пошту та пароль до свого облікового запису." @@ -3424,11 +3424,6 @@ msgstr "Додано: {createdDate} • востаннє використано: msgid "Additional comments (optional)" msgstr "Додаткові коментарі (необов'язково)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Потрібна додаткова перевірка" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Усі мови" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Скасування вже заплановано" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Також поскаржитися на це повідомлення команді безпеки {productName}" @@ -4713,11 +4708,6 @@ msgstr "Запитувати перед початком дзвінків" msgid "Ask for a passkey after your password when you sign in" msgstr "Запитувати ключ доступу після введення пароля під час входу" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Попросіть адміністраторів цього екземпляра переглянути ваш обліковий запис. Цей екземпляр працює незалежно, і лише його адміністратори можуть змінювати ваш обліковий запис." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Автоматично видаляти параметри відсте msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Автоматично видаляти параметри відстеження з URL-адрес у повідомленнях, які ви надсилаєте" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Автоматично перевіряти повідомлення на наявність відвертого вмісту в каналах, не позначених як вміст для дорослих." @@ -5359,8 +5349,6 @@ msgstr "Зараз відсутній(-я)" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Назад" @@ -6506,11 +6494,6 @@ msgstr "Камери та віртуальні пристрої захоплен msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Камери вимкнено, якщо учасників більше ніж {voiceChannelCameraUserLimit}" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Немає доступу до цієї електронної адреси?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Сюди не можна завантажити файли" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Сюди не можна завантажити файли" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Змінити електронну адресу" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Змінити емоджі" @@ -7201,7 +7184,7 @@ msgstr "Змінено ліміт користувачів з {oldCount} на {n msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Змінено персоналізовану URL-адресу з {oldCode} на {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Змінено рівень перевірки з {oldLevel} на {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Канал або категорія" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Перевизначення дозволів каналу" @@ -7509,8 +7492,6 @@ msgstr "Перевірте з'єднання та спробуйте ще раз msgid "Check your connection, then try again." msgstr "Перевірте з'єднання, потім спробуйте ще раз." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Виберіть екран у системному діалозі" msgid "Choose a GIF" msgstr "Виберіть GIF-зображення" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Виберіть спосіб" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Виберіть новий пароль." @@ -7680,8 +7656,8 @@ msgstr "Оберіть дію." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Виберіть емоджі" @@ -7749,11 +7725,6 @@ msgstr "Виберіть, як працюватиме ваш екземпляр" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Оберіть один зі способів підтвердження права власності на домен. Достатньо виконати лише один." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Оберіть один спосіб перевірки. Достатньо будь-якого з них." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Виберіть, що {clientLabel} може робити у вашій msgid "Choose what friends see in their active now panel" msgstr "Виберіть, що друзі бачитимуть на панелі «Активні зараз»" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Виберіть, що повинні мати учасники, перш ніж вони зможуть писати в каналах або надсилати особисті повідомлення учасникам спільноти." @@ -8030,8 +8001,8 @@ msgstr "Очищає звук вашого мікрофона для чітко msgid "Clear" msgstr "Очистити" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Очистити через" @@ -8053,7 +8024,7 @@ msgstr "Очистити всі макети вкладень" msgid "Clear all token overrides" msgstr "Очистити всі перевизначення токенів" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Очистити макети вкладень" @@ -8066,14 +8037,14 @@ msgstr "Очистити команду" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Очистити власний статус" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Видалити всі реакції з цього повідомлення?" @@ -8124,7 +8095,7 @@ msgstr "Очистити поле пошуку" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Тема «Вугілля»" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Команди" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Коментарі вимкнено, оскільки в одному або кількох вибраних каналах увімкнено повільний режим. Коментар буде заблоковано повільним режимом одразу після пересилання." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Коментарі вимкнено, оскільки в каналі «{forwardChannelDisplayName}» увімкнено повільний режим. Коментар буде заблоковано повільним режимом одразу після пересилання." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Коментарі недоступні, коли ввімкнено повільний режим." @@ -8670,11 +8639,11 @@ msgstr "Спільноти" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Спільноти та канали, де ви не можете керувати вебхуками, приховані." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Спільноти в Discovery мають перевіряти повідомлення від усіх учасників. Цей параметр не можна змінити, доки Discovery ввімкнено." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Спільноти в Discovery потребують щонайменше підтвердження електронної пошти. Поки Discovery ввімкнено, не можна вибрати «Немає»." @@ -8827,7 +8796,7 @@ msgstr "Назва спільноти" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Псевдонім у спільноті" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Профіль спільноти" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Профіль спільноти оновлено" @@ -8907,7 +8876,7 @@ msgstr "Рівень значків непрочитаних повідомле #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Спільноту оновлено" @@ -8952,11 +8921,6 @@ msgstr "Порівняння" msgid "Complete mature content check" msgstr "Пройти перевірку вмісту для дорослих" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Щоб продовжити користуватися {productName}, скористайтеся одним із наведених нижче способів перевірки." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Завершити оплату" msgid "Complete the mature content check to unlock mature media." msgstr "Пройдіть перевірку вмісту для дорослих, щоб розблокувати медіафайли для дорослих." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Щоб продовжити користуватися {productName}, виконайте наведені нижче обов'язкові кроки з підтвердження електронної пошти та номера телефону." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Пройдіть необхідну перевірку, щоб продовжити користуватися {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Налаштуйте свій значок профілю" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Порядок підключень змінено" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Потрібна згода" @@ -9349,16 +9304,6 @@ msgstr "Створіть URL-адресу авторизації з област msgid "Contact" msgstr "Контакт" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Звернутися до підтримки" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Зв'яжіться з адміністраторами цього екземпляра для отримання допомоги." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Автор контенту" msgid "Content filter" msgstr "Фільтр вмісту" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Фільтрування вмісту" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Тип вмісту для кодування" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Перевірки безпеки вмісту" @@ -9416,12 +9361,10 @@ msgstr "Контекстні меню можна відкрити лівим к #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Керуйте поведінкою індикатора непрочи msgid "Control which chat updates are announced by assistive technology." msgstr "Керуйте тим, які оновлення чату оголошуються допоміжними технологіями." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Розмову не знайдено" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Не вдалося додати тег" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Не вдалося додати цього друга до групи. Спробуйте ще раз." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Не вдалося додати до групи" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Не вдалося створити посилання на тему" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Не вдалося створити посилання-запрошення" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Не вдалося завершити пільговий період" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Не вдалося створити посилання-запрошення. Спробуйте ще раз." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Не вдалося обробити зображення" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Не вдалося опублікувати це повідомлення" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Не вдалося повторно приєднатися до спільноти Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Не вдалося видалити звук входу" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Не вдалося зберегти налаштування каналу" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Не вдалося зберегти звук входу" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Не вдалося відкликати заявку" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Таймер зворотного відліку" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Країна" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Створити обліковий запис адміністрато msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Створити груповий чат із {addableCount, plural, one {# одержувачем, що залишився} few {# одержувачами, що залишилися} many {# одержувачами, що залишилися} other {# одержувача, що залишився}}, а інших пропустити?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Створити вебхук" @@ -10948,7 +10884,7 @@ msgstr "Власний емодзі {emojiName} зі спільноти" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Власні звуки входу не ввімкнено в цьому екземплярі." @@ -11108,7 +11044,7 @@ msgstr "Власна обробка голосу" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Власний текст попередження" @@ -11530,11 +11466,6 @@ msgstr "Пошукова система за замовчуванням" msgid "Default shortcuts" msgstr "Стандартні комбінації клавіш" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Вкладка за замовчуванням" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Делавер" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Видалити це повідомлення" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Видалити це повідомлення? Цю дію не можна скасувати." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Видалити це повідомлення? Це неможливо скасувати. Повідомлення також буде видалено з усіх спільнот, які підписані на цей канал." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Режим розробника" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Параметр розробника" @@ -12299,7 +12230,7 @@ msgstr "Прямий вхід" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Режим відображення" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Ім'я для відображення" @@ -12858,7 +12789,7 @@ msgstr "Ви хочете приєднатися до {communityName}?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Док, я з майбутнього. Я прибув сюди на машині часу, яку ви винайшли. Тепер мені потрібна ваша допомога, щоб повернутися в 1985 рік." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Змінити місцевий час профілю" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Редагувати опубліковане повідомлення?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Редагувати свої повідомлення вище або нижче" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Редагуйте вигляд свого профілю й одразу переглядайте результат" @@ -13590,10 +13521,8 @@ msgstr "Маєте право на відшкодування до {windowEndsOn msgid "Email" msgstr "Електронна пошта" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Потрібна електронна адреса." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Електронну пошту змінено" @@ -13616,49 +13547,17 @@ msgstr "Електронну пошту змінено" msgid "Email delivery" msgstr "Доставка електронної пошти" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Електронна пошта або телефон" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Потрібне повторне підтвердження електронної пошти або номера телефону" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Потрібне повторне підтвердження електронної пошти" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Електронна пошта недоступна" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Оновлення електронної пошти зараз недоступне. Спробуйте пізніше або зверніться до служби підтримки." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Потрібно оновити електронну пошту" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Напишіть нам на електронну пошту, і людина перегляне ваш обліковий запис. Повідомте нам, що ви не можете пройти перевірку за допомогою SMS, і ми розберемося. Відповіді надходять електронною поштою, тому це не миттєво." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Панель сповіщень про підтвердження електронної пошти" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Потрібне підтвердження електронної пошти" @@ -13675,6 +13574,10 @@ msgstr "Перевизначення підтвердження електрон msgid "Email verified successfully" msgstr "Електронну пошту успішно підтверджено" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Листи на вашу поточну адресу не доставляються. Введіть нову електронну адресу, і ми надішлемо туди код." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Вбудований вміст" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Вбудований вміст приховано" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Вбудований вміст показано" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Увімкнути відтворення мовлення /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Увімкніть двофакторну автентифікацію в обліковому записі, щоб змінити цей параметр" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Введіть дійсну URL-адресу або код шаблону {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Введіть дійсну адресу електронної пошти." @@ -14298,33 +14199,11 @@ msgstr "Введіть дійсну адресу електронної пошт msgid "Enter a valid message link." msgstr "Введіть дійсне посилання на повідомлення." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Введіть дійсний номер мобільного телефону." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Введіть дійсний номер телефону" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Введіть дійсне ім'я користувача ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Введіть електронну адресу, до якої маєте доступ. Ми надішлемо туди код." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Введіть код" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "На весь екран" msgid "Enter gift code…" msgstr "Введіть код подарунка…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Введіть нову електронну адресу" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Введіть один із резервних кодів, якщо н msgid "Enter one of your backup codes." msgstr "Введіть один зі своїх резервних кодів." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Введіть номер телефону" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Введіть {digitCount}-значний код із застосун msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Введіть {digitCount}-значний код із застосунку автентифікації." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Введіть {digitCount}-значний код, надісланий на номер {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Введіть {MFA_CODE_DIGIT_COUNT}-значний код, надісланий на номер {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Введіть код" @@ -14408,11 +14267,6 @@ msgstr "Введіть код, перш ніж продовжити." msgid "Enter the code from your authenticator app." msgstr "Введіть код із застосунку автентифікації." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Введіть код, надісланий на {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Введіть код, надісланий на вашу поточну електронну пошту." @@ -14426,6 +14280,7 @@ msgstr "Введіть код, надісланий на вашу електро msgid "Enter the code shown in the app to continue." msgstr "Введіть код, показаний у застосунку, щоб продовжити." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Введіть код, який ми надіслали на вашу нову адресу електронної пошти." @@ -14434,11 +14289,6 @@ msgstr "Введіть код, який ми надіслали на вашу н msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Введіть код, який ми надіслали на вашу електронну пошту, щоб підтвердити її. Ваш пароль буде встановлено після підтвердження коду." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Введіть код з електронної пошти" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Введіть посилання-запрошення, щоб приєднатися до спільноти." @@ -14452,11 +14302,6 @@ msgstr "Введіть нову електронну адресу, яку хоч msgid "Enter the PIN for your security key to continue." msgstr "Введіть PIN-код вашого ключа безпеки, щоб продовжити." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Введіть SMS-код" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Введіть цей код у своєму браузері, щоб завершити вхід." @@ -14492,11 +14337,6 @@ msgstr "Введіть своє ім'я" msgid "Enter your password." msgstr "Введіть свій пароль." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Введіть свій номер телефону" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Звук входу" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Файли звуків входу мають бути розміром до {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Бібліотека звуків входу заповнена" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Звук входу видалено" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Звук входу збережено" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Звуки входу" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Звуки входу недоступні" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Закінчується:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Налаштування фільтра відвертого вмісту" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Не вдалося скопіювати в буфер обміну" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Не вдалося створити вебхук" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Не вдалося завантажити персоналізовану URL-адресу. Спробуйте ще раз." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Не вдалося завантажити вебхуки" @@ -15190,11 +15030,6 @@ msgstr "Не вдалося видалити персоналізовану URL- msgid "Failed to resend code. Try again." msgstr "Не вдалося повторно надіслати код. Спробуйте ще раз." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Не вдалося повторно надіслати код підтвердження. Спробуйте пізніше." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Не вдалося надіслати повідомлення. Нат msgid "Failed to send report. Try again." msgstr "Не вдалося надіслати скаргу. Спробуйте ще раз." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Не вдалося надіслати лист для підтвердження. Спробуйте пізніше." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Помилка запуску" @@ -15551,15 +15381,15 @@ msgstr "Фільтрувати за користувачем" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Фільтрувати всіх" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Фільтрувати учасників без ролей" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Підписатися на цей канал" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Підпишіться, щоб отримувати ці оголошення в обраному вами каналі." @@ -15773,7 +15603,7 @@ msgstr "Підписаний канал {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Канали, на які підписано" @@ -15857,11 +15687,6 @@ msgstr "Тільки для британців..." msgid "For me" msgstr "Для мене" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Для цієї перевірки ви надсилаєте нам текстове повідомлення, а не отримуєте його від нас." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Для вашої безпеки підтвердьте, що це ви, щоб продовжити." @@ -15905,7 +15730,7 @@ msgstr "Примусово показувати скелет завантаже #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Примусово показувати медіа для дорослих" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Примусово перемістити до каналу AFK" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Примусово вимкнути дозвіл «{permissionName}»" @@ -15948,7 +15773,7 @@ msgstr "Завжди показувати попередження про пер msgid "Force show voice connection" msgstr "Завжди показувати голосове з'єднання" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Примусово ввімкнути повільний режим" @@ -16020,7 +15845,7 @@ msgstr "Переслати медіа" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Переслати повідомлення" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Накладання географічного блокування" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Геообмеження" @@ -16490,12 +16315,6 @@ msgstr "Отримайте анімований аватар і банер, зн msgid "Get monthly" msgstr "Отримати щомісяця" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Отримати новий код" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Коди подарунків" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Тривалість подарунка" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Інвентар подарунків" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Потік інвентарю подарунків" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Подарунок не знайдено" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Подарунок активовано" @@ -17030,7 +16849,7 @@ msgstr "Груповий чат" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Привіт, {displayName}, зареєструйте свій обліковий запис, щоб не втратити доступ." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Привіт, {displayName}! Будь ласка, підтвердьте свою електронну адресу." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Привіт, {displayName}, ми не можемо доставити електронний лист на вашу адресу. Додайте робочу електронну адресу для підтвердження вашого облікового запису." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Сховати демонстрацію свого екрана?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Високий" @@ -17755,11 +17579,6 @@ msgstr "Я — підказка" msgid "I changed my mind" msgstr "Я передумав(-ла)" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Мені потрібен інший спосіб" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Якщо скарга стосується конкретного пов msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Якщо скарга стосується конкретних повідомлень, надішліть скаргу на найрелевантніше повідомлення. Скарга на повідомлення надає нашій команді безпеки найчіткіший контекст, а додавання деталей у коментарях може пришвидшити розгляд. Продовжуйте скаржитися на користувача в цілому, лише якщо скарга на повідомлення не охоплює ширшої проблеми." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Якщо ви не можете пройти підтвердження через SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Якщо ви не можете скористатися жодним методом перевірки, зверніться по допомогу до служби підтримки." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Розмір інтерфейсу" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Недійсний аудіофайл" @@ -18674,8 +18483,10 @@ msgstr "Недійсний JSON. Вставте повну відповідь з #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Приєднатися до голосового дзвінка" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Приєднатися до голосового каналу" @@ -19613,16 +19424,6 @@ msgstr "Дізнайтеся більше про Visionary" msgid "Leave" msgstr "Вийти" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Вийти з {count, plural, one {# спільноти} few {# спільнот} many {# спільнот} other {# спільноти}} і відкласти цю перевірку?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Вийти та відкласти" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Дозволити програмам читання з екрана оголошувати нові повідомлення, що надходять у відкритий канал. Звуки сповіщень залишаються без змін." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Дозволити спільноті модерувати себе" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Бібліотека" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Бібліотека заповнена (макс. {max} звуків). Видаліть один, перш ніж додавати інший." @@ -19812,7 +19613,7 @@ msgstr "Бібліотека: {count} з {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Довічно" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Завантаження..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Завантаження…" @@ -20261,7 +20062,7 @@ msgstr "Луїзіана" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Низький" @@ -20416,7 +20217,7 @@ msgstr "Керувати функціями спільноти" msgid "Manage emoji & stickers" msgstr "Керувати емодзі та стікерами" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Керуйте вхідними вебхуками, які можуть надсилати повідомлення в цей канал." @@ -20514,7 +20315,7 @@ msgstr "Позначати всі непрочитані канали у вхі msgid "Mark as read" msgstr "Позначити як прочитане" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Позначити як активований" @@ -20676,14 +20477,14 @@ msgstr "Спільнота для дорослих" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Контент для дорослих" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Контент для дорослих і попередження про вміст" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Максимальний термін дії (днів)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Максимальний захист для сімейних спільнот" @@ -20924,7 +20725,7 @@ msgstr "Зупинити відтворення" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Учасника розблоковано" msgid "Member updated" msgstr "Учасника оновлено" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Перевірка учасників" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Рівень перевірки учасників" @@ -21048,7 +20849,7 @@ msgstr "Учасники вилучаються, коли вони офлайн, msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Учасники з дозволом «{pinMessagesPermissionLabel}» можуть закріплювати повідомлення для всіх." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Учасники з ролями можуть обходити ці перевірки. Для публічних просторів радимо ввімкнути перевірку." @@ -21153,7 +20954,7 @@ msgstr "Згадки про вас відображаються тут прот #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Лише згадки" @@ -21292,7 +21093,7 @@ msgstr "Налаштування відображення повідомлень msgid "Message editing" msgstr "Редагування повідомлень" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Повідомлення переслано" @@ -21341,7 +21142,7 @@ msgstr "Кнопки введення повідомлень" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Повідомлення задовге" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Попередній перегляд повідомлень у списку приватних чатів" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Повідомлення опубліковано" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Повідомлення з #{sourceName} тепер з’являтимуться в #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Повідомлення, опубліковані в цих каналах оголошень, копіюються сюди." @@ -21504,7 +21305,7 @@ msgstr "Повідомлення, опубліковані в цих канал msgid "Messages you can bookmark" msgstr "Повідомлення, які можна додати до закладок" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Обмін повідомленнями в цій спільноті тимчасово призупинено." @@ -21733,30 +21534,30 @@ msgstr "Макет: спливає через 1 день" msgid "Mock expires in 7 days" msgstr "Макет: спливає через 7 днів" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Імітувати накладання географічного блокування" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Імітувати інвентар подарунків" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Імітувати вхідний дзвінок" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Імітувати причину блокування каналу з контентом для дорослих" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Імітувати причину блокування медіа з контентом для дорослих" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Імітувати геопозицію Великої Британії" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Тестові аватари користувачів різних розмірів і з усіма можливими статусами." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Варіант імітації" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Імітовані потоки продукту" @@ -22698,14 +22494,16 @@ msgstr "Канали з вимкненими сповіщеннями в нов msgid "New direct message" msgstr "Нове особисте повідомлення" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Нова електронна адреса" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Форма нової електронної адреси" @@ -22816,9 +22614,7 @@ msgstr "Спочатку найновіші" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Далі" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Ні" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Немає дозволу {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Немає дозволу {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Немає змін для збереження" msgid "No channels available" msgstr "Немає доступних каналів" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Канали не знайдено" @@ -23233,11 +23029,6 @@ msgstr "Дозволів не знайдено" msgid "No personal words yet." msgstr "Особистих слів ще немає." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Немає номера телефону" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Немає результатів" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Нічого не знайдено" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Користувачів не знайдено" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Перевірка не потрібна." @@ -23452,7 +23243,7 @@ msgstr "Перевірка не потрібна." msgid "No verification methods available" msgstr "Немає доступних методів перевірки" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Вебхуків немає" @@ -23504,7 +23295,7 @@ msgstr "Без перетворення" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Немає" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Немає (звичайна поведінка)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Норвезька" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Не є учасником достатньо довго" @@ -23798,9 +23589,9 @@ msgstr "Об'єкти" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Вимкнено" @@ -23848,7 +23639,7 @@ msgstr "Спочатку найстаріші" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Увімкнено" @@ -23884,11 +23675,6 @@ msgstr "Одне або кілька вкладень не вдалося про msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Один або кілька файлів, які ви намагаєтеся завантажити, перевищують максимальний розмір {maxSizeFormatted} на файл." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Швидка перевірка" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Лише динаміки" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Змінити цей параметр може лише власник спільноти" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Відкрити емоджі в браузері" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Відкрити панель емоджі" @@ -24382,12 +24168,8 @@ msgstr "Відкрити меню" msgid "Open message history threshold" msgstr "Відкрити налаштування порогу історії повідомлень" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Відкрити оверлей" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Відкрити спадний список" @@ -24485,11 +24267,6 @@ msgstr "Відкрийте новий застосунок. Ви вже ввій msgid "Open the shortcuts list for quick actions." msgstr "Відкрийте список комбінацій клавіш для швидких дій." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Відкрийте лист із підтвердженням і перейдіть за посиланням. Це вікно оновиться після відкриття посилання." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Відкрити налаштування аудіо та відео" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Відкрийте браузер, увійдіть, а потім введіть код нижче, щоб зв'язати свій обліковий запис." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Відкрийте повідомлення" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Відкрийте свій старий застосунок {PRODUCT_NAME} і виберіть «Підключити новий пристрій», а потім введіть код нижче." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Відкрийте застосунок для обміну повідомленнями на телефоні та створіть нове текстове повідомлення." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Відкрийте застосунок для обміну повідомленнями на телефоні та почніть нове текстове повідомлення." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Інша реакція…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Наша перевірка номерів телефону зараз не працює. Це проблема на нашому боці, а не з вашим номером. Зачекайте кілька хвилин і спробуйте ще раз із тим самим номером." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Фішинг, шахрайство, шкідливі посилання або неправдиві твердження, що можуть завдати реальної шкоди." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Телефон" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Номер телефону" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Потрібен номер телефону" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Номер телефону підтверджено" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Потрібне повторне підтвердження номера телефону" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Крок телефону" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Підтвердження номера телефону недоступне для цього облікового запису. Скористайтеся іншим способом або зверніться до служби підтримки." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Потрібне підтвердження номера телефону" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Виберіть 4-значний номер після вашого і msgid "Pick the appearance this administrator account should start with." msgstr "Виберіть зовнішній вигляд, з яким цей обліковий запис адміністратора має розпочати роботу." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Виберіть спосіб, який ви можете виконати зараз." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Картинка в картинці" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Закріпити" @@ -25471,7 +25176,7 @@ msgstr "Закріпити груповий чат" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Закріплювати або відкріплювати будь-яке повідомлення." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Закріпити це повідомлення в каналі, щоб його бачили всі." @@ -26227,18 +25932,18 @@ msgstr "Колір профілю" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Налаштування профілю" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Налаштування профілю для {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Форма налаштування профілю" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Тип профілю" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Профіль оновлено" @@ -26340,7 +26045,7 @@ msgstr "Запитувати про нові аудіопристрої" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Координація рейду" msgid "Rate" msgstr "Швидкість" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Перевищено ліміт запитів" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "Необроблений JSON вбудованого вмісту" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Видалити {userName} зі списку друзів?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Видалити всі" @@ -27290,7 +26990,7 @@ msgstr "Видалити всі реакції {emojiNameWithColons} з цьог #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Видалити всі реакції" @@ -27899,20 +27599,10 @@ msgstr "Тег користувача, на якого надіслано ска msgid "Reposts: <0>{countLabel}" msgstr "Репости: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Спершу запитайте новий код." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Запитати нове посилання для скидання" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Спершу запитайте код підтвердження." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Запити" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Вимагати 2FA для дій модерації" @@ -27958,7 +27648,7 @@ msgstr "Вимагати надання коду OAuth2" msgid "Require passkey" msgstr "Вимагати ключ доступу" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Вимагати двофакторну автентифікацію для модераторів, перш ніж вони зможуть блокувати, виганяти, застосовувати тайм-аут або видаляти повідомлення." @@ -27972,46 +27662,6 @@ msgstr "Обов'язково" msgid "Required 2FA for moderation actions" msgstr "Запроваджено вимогу двофакторної автентифікації (2FA) для дій модерації" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Вкладка за замовчуванням для обов'язкової дії" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Потік обов'язкових дій" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Крок телефону обов'язкової дії" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Завантаження повторного надсилання обов'язкової дії" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Результат повторного надсилання обов'язкової дії" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Текст повторної перевірки обов'язкової дії" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Варіант обов'язкової дії" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Накладання обов'язкових дій" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Потрібні URI переспрямування та код авторизації під час запрошення цього бота." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Потрібні підтверджена електронна адреса та обліковий запис, якому щонайменше 5 хвилин." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Потрібна підтверджена електронна адреса." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Потрібен підтверджений номер телефону." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Потрібні всі вимоги рівня «Середній», а також членство в спільноті щонайменше 10 хвилин." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Надіслати повторно ({resendSecondsRemaining} с)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Надіслати повторно ({secondsRemaining} с)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Кнопка повторного надсилання завантажується" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Надіслати код повторно" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Надіслати лист повторно" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Результат повторного надсилання" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Надіслано повторно" @@ -28518,21 +28152,6 @@ msgstr "Показати" msgid "Reveal spoiler" msgstr "Показати спойлер" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Щоб продовжити користуватися {productName}, повторно підтвердьте свою електронну пошту або підтвердьте номер телефону." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Щоб продовжити користуватися {productName}, повторно підтвердьте свою електронну пошту." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Повторно підтвердьте свій номер телефону, щоб продовжити користуватися {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Насиченість" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Перегляд під час перемотування" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Пошук каналів" msgid "Search communities" msgstr "Пошук спільнот" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Пошук країн..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Пошук країн…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Виберіть країну проживання." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Вибрати…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Надіслати" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Надіслати ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Надіслати ще одну скаргу" msgid "Send button" msgstr "Кнопка надсилання" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Надіслати код" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Надсилати повідомлення" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Надсилання повідомлень вимкнено" @@ -30151,32 +29759,11 @@ msgstr "Надіслати збережений медіафайл «{memeName} msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Надсилати повідомлення з озвученням тексту через /tts. Учасники, які ввімкнули озвучення тексту, чутимуть їх уголос." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Надішліть код <0>{0} на <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Надішліть код на вказаний нижче номер телефону." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Надіслати цей код" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Надіслати це закріплене повідомлення назад у минуле?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Надіслати на" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Надіслати голосове повідомлення" msgid "Send:" msgstr "Надсилання:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Надсилання SMS на цей номер телефону занадто дороге для {PRODUCT_NAME}, тому нам потрібно, щоб ви надіслали SMS нам. Ми знаємо, що це не ідеально. Ви також можете попросити адміністраторів цього екземпляра зняти цю вимогу з вашого облікового запису." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Надсилання SMS на цей номер телефону занадто дороге для {PRODUCT_NAME}, тому нам потрібно, щоб ви надіслали SMS нам. Ми знаємо, що це не ідеально. Ви також можете зв'язатися з <0>{SUPPORT_EMAIL}, щоб ми зняли цю вимогу з вашого облікового запису." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Надсилати послідовно" msgid "Serve the token file" msgstr "Розмістіть файл токена" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Помилка служби" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Установити власну комбінацію клавіш для «{label}»" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Встановити власний статус" @@ -30486,18 +30060,6 @@ msgstr "Встановлено голосовий регіон: {region}" msgid "Set the voice region to automatic" msgstr "Встановлено автоматичний вибір голосового регіону" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Відкласти цю перевірку" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Відкласти цю перевірку?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Вкажіть свої займенники" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Встановити статус" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Під час запису комбінації клавіш призупинено." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Скоротіть повідомлення та спробуйте ще раз." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Показувати іконку {productName} у системному треї або рядку меню" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Показувати попередження про вміст" @@ -31672,7 +31234,7 @@ msgstr "Повільний режим · зачекайте {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Повільний режим активний" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Встановлено повільний режим на {durationLabel}. Зачекайте, перш ніж надсилати наступне повідомлення." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Залишилось до кінця повільного режиму" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Симуляція повільного режиму" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Залишилося часу в повільному режимі" @@ -31807,11 +31369,6 @@ msgstr "Плавне прокручування" msgid "Smoother video" msgstr "Плавніше відео" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Підтвердження через SMS наразі недоступне. Спробуйте пізніше або зверніться до служби підтримки." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Щось пішло не так під час підготовки цього стікера. Спробуйте інший файл або повторіть спробу пізніше." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Виникла помилка під час публікації. Спробуйте ще раз за мить." @@ -32009,11 +31566,9 @@ msgstr "Щось пішло не так. Перезавантажте сторі msgid "Something went wrong. Try again later." msgstr "Щось пішло не так. Спробуйте пізніше." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Щось пішло не так. Спробуйте ще раз." @@ -32352,11 +31907,6 @@ msgstr "Час очікування входу через SSO вичерпано msgid "Staff controls" msgstr "Керування для персоналу" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Може стягуватися стандартна плата за повідомлення від вашого оператора." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Анімація зірки" msgid "Starred channels" msgstr "Канали у вибраному" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Транспорт підписника:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Підписка" @@ -33051,14 +32599,12 @@ msgstr "Сценарії підписки" msgid "Subtext" msgstr "Дрібний текст" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Успішно" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Рекомендовано для більшості спільнот" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Система та привітання" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Системні оголошення від команди {productName}. Тут не можна відповідати." @@ -33765,11 +33311,6 @@ msgstr "Виділення тексту" msgid "Text size" msgstr "Розмір тексту" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Надішліть нам повідомлення зі свого телефону" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Тайська" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Дякуємо, що допомагаєте зробити {productName} безпечним. Ми розглянемо вашу скаргу якомога швидше." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Цей код не спрацював. Перевірте його та спробуйте ще раз." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Термін дії цього коду закінчився. Запитайте новий код." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Це не завершилося. Деякі спільноти могли бути вже залишені, а ваш обліковий запис досі заблоковано. Натисніть «Відкласти цю перевірку» ще раз, щоб завершити." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Не вдалося. Нічого не змінилося. Спробуйте ще раз." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Це не схоже на дійсний колір. Спробуйте msgid "That doesn't look like a valid URL." msgstr "Це не схоже на дійсну URL-адресу." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Ця електронна адреса вже використовується." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Перевизначення забороняло {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Сторінка, яку ви шукаєте, не існує або була переміщена." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Перевірку телефону відкладено. Залишився один крок з електронною поштою." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Немає доступних каналів для створення msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Наразі в цій спільноті немає ролей для призначення, але ви можете створити нову роль у <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Для цього каналу не налаштовано жодних вебхуків. Створіть вебхук, щоб дозволити зовнішнім застосункам надсилати повідомлення." @@ -34273,7 +33784,7 @@ msgstr "Сталася помилка під час завантаження з msgid "There was an error loading the stickers. Try again." msgstr "Під час завантаження стікерів сталася помилка. Спробуйте ще раз." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Під час завантаження вебхуків для цього каналу сталася помилка. Спробуйте ще раз." @@ -34417,7 +33928,7 @@ msgstr "Цей канал може публікувати 10 повідомле msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Цей канал може публікувати 10 повідомлень поспіль, а потім ще одне кожні 6 хвилин. Спробуйте ще за кілька хвилин." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Цей канал не підтримує вебхуки." @@ -34550,12 +34061,12 @@ msgstr "Це підключення не підтверджено." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Тут міститься делікатний вміст." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Ця розмова більше недоступна." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "У цій групі забагато людей" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Ця група заповнена. Видаліть когось, перш ніж додавати інших." @@ -34715,11 +34226,6 @@ msgstr "Це власний стікер із спільноти." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Це канал з обмеженим доступом за віком. Оновлення можуть надходити лише до каналів з обмеженим доступом за віком." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Це перевірка на спам. Ваш номер телефону не прив'язаний до облікового запису." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Вимкнено" msgid "This is how messages appear" msgstr "Так виглядають повідомлення" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Зараз це недоступно для вашого облікового запису. Попросіть адміністраторів цього екземпляра розглянути це." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Зараз це недоступно для вашого облікового запису. Напишіть на {supportEmail}, і ваш запит розгляне людина." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Це не той канал, який ви шукаєте." @@ -34792,11 +34288,6 @@ msgstr "Це ваш останній ключ доступу, а ключі до msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Це ваш останній ключ доступу. Після його видалення ви не зможете використовувати ключ доступу як другий фактор." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Це не номер мобільного телефону, тому він не може отримувати наші SMS. Спробуйте вказати номер мобільного телефону або зверніться до служби підтримки, якщо вважаєте, що це помилка." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Це повідомлення вже видалено." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Це повідомлення вже опубліковано" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Цього повідомлення більше не існує." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Цей псевдонім буде видно лише в цій спільноті" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Цей номер підтверджується надсиланням нам SMS. Поверніться та знову почніть підтвердження номера телефону, щоб отримати код і номер, на який надіслати SMS." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Цей номер потрібно підтвердити, надіславши нам SMS, а не отримавши код від нас." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "У цього учасника вимкнено звук" msgid "This participant was deafened by moderators" msgstr "Модератори вимкнули звук цьому учаснику" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Цей номер телефону не можна використовувати. Спробуйте інший мобільний номер або зверніться до служби підтримки." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Цей номер телефону вже використовувався. Спробуйте інший номер або зверніться до служби підтримки." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Цей користувач не має ролей у цій спіль msgid "This user is already banned from the community." msgstr "Цього користувача вже заблоковано в спільноті." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Цей користувач більше недоступний." @@ -35065,11 +34536,6 @@ msgstr "Цього користувача примусово додав до с msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Термін дії сеансу перевірки закінчився. Поверніться до {productName} і почніть оформлення замовлення знову." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Термін дії цього сеансу перевірки закінчився. Почніть знову." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Ви вийдете з облікового запису, кешован msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Це дозволить довіряти всім зовнішнім посиланням і пропускати попередження для кожного домену. Ваші наявні довірені домени буде замінено. Це менш безпечно." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Це вікно автоматично оновиться після отримання вашого повідомлення." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Рядок заголовка" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Платформа рядка заголовка" @@ -35470,18 +34931,11 @@ msgstr "Тон" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Перетворювати HDR-зображення у стандартний діапазон, зменшуючи пікову яскравість." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Забагато спроб. Зачекайте трохи, потім спробуйте ще раз." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Забагато спільнот" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Забагато запитів. Спробуйте пізніше." @@ -36151,8 +35605,10 @@ msgstr "Не вдалося підготувати жодного емоджі #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Недоступно" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Без категорії" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Незареєстрований обліковий запис" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Маркований" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Відкріпити" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Відкріпити повідомлення" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Відкріпити це повідомлення?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Незбережені зміни" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Непідтримуваний аудіофайл." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Доки я не ввімкну знову" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Непідтверджена електронна пошта" @@ -36958,12 +36414,7 @@ msgstr "Оновіть {productName}, щоб переглянути це пов msgid "Update app" msgstr "Оновити застосунок" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Оновити електронну пошту" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Оновити мій статус" @@ -37306,18 +36757,13 @@ msgstr "Використовуйте {url} там, де має бути вста msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Використовуйте спеціальне модальне вікно, щоб встановити дату обмеження історії повідомлень для учасників, які не мають дозволу «{readMessageHistoryPermissionLabel}»." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Використайте іншу електронну адресу та підтвердьте її кодом." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Використовувати фактичний" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Використовувати фактичний тип преміуму" @@ -37335,16 +36781,6 @@ msgstr "Використати інший спосіб" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Використовуйте застосунок автентифікації для генерації кодів двофакторної автентифікації" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Використовуйте електронну адресу, до якої маєте доступ. Ми надішлемо туди код." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Використовуйте електронну адресу, яка відрізняється від поточної." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Використовувати темну тему в усьому за msgid "Use default" msgstr "Використати типове значення" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Використати іншу електронну адресу" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Використати електронну пошту" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Використовувати ключі доступу для двоф msgid "Use passkeys to sign in without a password" msgstr "Використовуйте ключі доступу для входу без пароля" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Використати телефон" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Використовувати текст повторної перевірки" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Користувач змінює канал" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Користувача не знайдено" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Верифікація" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Бар'єри перевірки та членства" @@ -37970,15 +37387,8 @@ msgstr "Код підтвердження" msgid "Verification code sent" msgstr "Код підтвердження надіслано" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Код підтвердження надіслано. Перевірте поштову скриньку нової адреси." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Лист із підтвердженням надіслано. Перевірте свою поштову скриньку." @@ -38038,23 +37448,6 @@ msgstr "Форма підтвердження особи" msgid "Verify it's you" msgstr "Підтвердьте, що це ви" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Підтвердити номер телефону" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Підтвердити номер телефону" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Форма підтвердження номера телефону" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Підтвердьте свою електронну пошту, перш ніж додавати застосунок автентифікації." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Підтвердьте свою електронну пошту, перш ніж змінювати псевдонім у спільноті, аватар, банер, біографію, займенники або акцентний колір." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Підтвердьте свою електронну пошту, перш ніж змінювати ім'я користувача, ім'я для відображення, аватар, банер, біографію, займенники, часовий пояс або конфіденційність значка {premiumProductName}." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Підтвердьте свою електронну пошту, перш ніж редагувати цей профіль спільноти. Ви все одно можете переглянути його тут." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Підтвердьте свою електронну пошту, перш ніж редагувати профіль. Ви все одно можете переглянути його тут." @@ -38113,11 +37506,6 @@ msgstr "Підтвердьте свою електронну пошту, пер msgid "Verify your email first" msgstr "Спершу підтвердьте свою електронну пошту" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Підтвердьте свою електронну пошту або номер телефону, щоб продовжити користуватися {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Підтвердьте свою електронну адресу, що msgid "Verify your email to change your username" msgstr "Підтвердьте свою електронну пошту, щоб змінити ім'я користувача" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Підтвердьте свою електронну пошту, щоб продовжити користуватися {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Підтвердьте свою електронну пошту, щоб редагувати цей профіль спільноти" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Підтвердьте свою електронну пошту, щоб редагувати профіль" @@ -38181,13 +37564,6 @@ msgstr "Вермонт" msgid "Version" msgstr "Версія" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Дуже високий" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Збільшити гучність" msgid "Wait a moment before deleting more messages." msgstr "Зачекайте мить, перш ніж видаляти інші повідомлення." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Зачекайте. Це вікно автоматично закриється, щойно ми отримаємо ваше повідомлення." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Час між повідомленнями. Учасники з дозволом «{bypassSlowmodePermissionLabel}» можуть це обійти." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Зачекайте тут" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Очікування ключа доступу…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Очікування завершення повільного режиму в каналі «{forwardChannelDisplayName}»." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Очікування завершення повільного режиму в одному або кількох вибраних каналах." @@ -39115,16 +38482,6 @@ msgstr "Не вдалося прочитати цю тему. Можливо, в msgid "We couldn't remove that account. Try again." msgstr "Не вдалося видалити обліковий запис. Спробуйте ще раз." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Не вдалося автоматично підтвердити цей номер. Зверніться до служби підтримки, і людина перегляне ваш обліковий запис." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Ми не надсилаємо повідомлення з кодом підтвердження в цю країну. Спробуйте мобільний номер з іншої країни або зверніться до служби підтримки." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Ми знайшли наявну підписку {premiumProductFullNam msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Ми знизили ціну на {premiumProductName} у Бразилії. Тепер це {monthlyPrice} на місяць або {yearlyPrice} на рік." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Нам потрібен один крок перевірки, перш ніж ви зможете продовжити. Це допомагає захистити облікові записи та запобігти спаму в {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Нам потрібно два кроки перевірки, перш ніж ви зможете продовжити. Ми показуватимемо по одному кроку за раз." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Радимо зберегти ці коди зараз, щоб не втратити доступ до свого облікового запису." @@ -39167,11 +38514,6 @@ msgstr "Ми надіслали код на {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Ми попередньо заповнимо {prefillEmail}, щойно відкриється вхід у браузері." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Ми надішлемо SMS-код, коли він буде доступний." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Ми б залюбки подарували вам більше, ніж довічний {PREMIUM_PRODUCT_NAME}, але це порушує просторово-часовий континуум. Натомість надіслати подарунок другу?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Ми обробимо це якомога швидше. Ви отримаєте електронний лист, коли ваш архів буде готовий." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Ми відновимо вашу попередню електронну адресу, завершимо старі сеанси, видалимо номери телефонів, вимкнемо багатофакторну автентифікацію та захистимо ваш обліковий запис новим паролем." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Ми відновимо вашу попередню електронну адресу, вийдемо з усіх старих сеансів, вимкнемо багатофакторну автентифікацію та захистимо ваш обліковий запис новим паролем." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Ми надішлемо код підтвердження на вашу msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Ми надішлемо код підтвердження на вашу електронну пошту, перш ніж ви зможете переглянути резервні коди." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Ми надішлемо SMS-код, коли він буде доступний. Ваш номер не буде пов’язано з вашим обліковим записом. Ми зберігаємо лише зашифрований маркер без ідентифікатора користувача протягом обмеженого часу." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Ми підтвердимо вашу поточну електронну адресу, а потім нову за допомогою одноразових кодів." @@ -39307,7 +38645,7 @@ msgstr "Вебхук {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Вебхук створено" @@ -39331,7 +38669,7 @@ msgstr "Вебхук оновлено" msgid "Webhook URL" msgstr "URL вебхука" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Вебхуки" @@ -39486,8 +38824,8 @@ msgstr "Те, чим ви ділитеся, не оновлюється" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Що відбувається?" @@ -39967,21 +39305,11 @@ msgstr "Ви можете вилучити дозвіл <0>{readMessageHistoryPe msgid "You can sign back in at any time." msgstr "Ви можете ввійти знову в будь-який час." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Ви будь-коли можете попросити адміністраторів цього екземпляра про перевірку людиною." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Ви все одно можете створити обліковий запис або ввійти. Якщо згодом запрошення знову ввімкнуть, ви зможете приєднатися за цим самим посиланням." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Ви завжди можете написати на {supportEmail}, щоб вашу справу розглянула людина." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Можна використовувати посилання, емодзі та Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Ви не можете додавати вирази туди" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Ви не можете додавати нові реакції, поки діє тайм-аут." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Ви не можете додати себе в друзі" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Тут не можна змінити свій псевдонім" @@ -40094,7 +39422,7 @@ msgstr "Ви не можете надіслати собі запит на до msgid "You can't send messages in this channel." msgstr "Ви не можете надсилати повідомлення в цьому каналі." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Ви не можете надсилати повідомлення в цій спільноті." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "У вас немає дозволу виконувати цю дію щодо цього учасника." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "У вас немає дозволу приєднатися до цього голосового каналу" @@ -40243,7 +39571,7 @@ msgstr "У вас немає дозволу перейменовувати це msgid "You have been banned from this community." msgstr "Вас заблоковано в цій спільноті." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Ви заблокували користувача {username}. Розблокуйте його, щоб надсилати повідомлення." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "У вас є незбережені зміни." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "У вас є незбережені зміни. Збережіть або скиньте їх, перш ніж вийти." @@ -40270,7 +39598,7 @@ msgstr "У вас є незбережені зміни. Збережіть аб msgid "You haven't authorized any applications to access your account." msgstr "Ви ще не авторизували жодних застосунків для доступу до вашого облікового запису." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Ви ще недостатньо довго є учасником цієї спільноти, щоб надсилати повідомлення." @@ -40326,11 +39654,6 @@ msgstr "Ви повинні погодитися з умовами викори msgid "You must verify your email before sending a report." msgstr "Щоб надіслати скаргу, потрібно підтвердити свою електронну пошту." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Щоб змінити електронну пошту тут, вам потрібен доступ до поточної. Скористайтеся підтвердженням за телефоном, якщо доступно, або зверніться до служби підтримки." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Вам потрібен дозвіл «{manageRolesPermissionLabel}», msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Щоб редагувати ці дозволи, вам потрібен дозвіл «{manageRolesPermissionLabel}»." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Вам потрібен дозвіл «{manageWebhooksPermissionLabel}», щоб переглядати та редагувати вебхуки для цього каналу." @@ -40384,18 +39707,14 @@ msgstr "Щоб створити спільноту, потрібно зареє msgid "You need to claim your account before you can start a direct message." msgstr "Щоб розпочати особисте листування, потрібно зареєструвати свій обліковий запис." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Щоб надсилати особисті повідомлення, потрібно зареєструвати свій обліковий запис." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Щоб надсилати повідомлення в цій спільноті, потрібно зареєструвати свій обліковий запис." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Щоб надсилати повідомлення в цій спільноті, потрібно підтвердити номер телефону." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Щоб розпочати особисте листування, пот msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Щоб придбати {premiumProductFullName}, потрібно підтвердити свою електронну адресу." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Щоб надсилати повідомлення в цій спільноті, потрібно підтвердити свою електронну адресу." @@ -40424,11 +39743,6 @@ msgstr "Щоб надсилати повідомлення в цій спіль msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "У вас або в когось із тих, кого ви додаєте, уже відкрито максимальну кількість групових чатів. Вийдіть з одного й спробуйте ще раз." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Ви залишаєтеся в {ownedNames}. Власники не можуть покинути власну спільноту." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Модератори вимкнули вам звук" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Після авторизації вас буде перенаправлено на {redirectHostname}." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Ви покинете {count, plural, one {# спільноту, до якої} few {# спільноти, до яких} many {# спільнот, до яких} other {# спільнот, до яких}} застосовується ця перевірка, і ваш обліковий запис знову працюватиме як зазвичай." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Ви покинете {guildNames}. Нічого з опублікованого вами не буде видалено, і ви зможете приєднатися знову пізніше." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Вам усе одно потрібно буде пройти крок з електронною адресою." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Ви надто поспішаєте" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Ви надто поспішаєте. Зачекайте трохи й спробуйте знову." @@ -40636,7 +39935,7 @@ msgstr "Ви надто швидко надсилаєте повідомленн msgid "You're streaming!" msgstr "Ви транслюєте!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "У вас тайм-аут. Обмін повідомленнями, реакції та голосовий зв'язок призупинено до закінчення тайм-ауту." @@ -40764,25 +40063,25 @@ msgstr "Платіж за поновлення через {storeName} не пр msgid "Your account" msgstr "Ваш обліковий запис" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Ваш обліковий запис одразу повернеться до норми, і телефонний номер вам більше не знадобиться. Це не постійне звільнення, і ми можемо попросити пройти цю перевірку знову пізніше." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Ваш обліковий запис успішно прив'язано. Тепер ви можете закрити цю вкладку та повернутися до застосунку." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Ваш обліковий запис знову працює як зазвичай." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Ваш обліковий запис обмежено" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Ваш обліковий запис обмежено. Перевірте свою електронну пошту, щоб дізнатися, як зняти обмеження." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Ваш обліковий запис ще не зареєстровано. Без електронної пошти та пароля ви не зможете ввійти з інших пристроїв і можете втратити доступ до свого облікового запису. Зареєструйте свій обліковий запис зараз, щоб убезпечити його." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Ваш обліковий запис занадто новий, щоб надсилати повідомлення в цій спільноті." @@ -40800,11 +40099,6 @@ msgstr "Ваш обліковий запис вимагає багатофакт msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Ваш обліковий запис більше не буде захищено двофакторною автентифікацією під час входу за допомогою пароля. Ви також втратите розширені дозволи у спільнотах, які вимагають двофакторної автентифікації." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Ваш обліковий запис одразу знову працюватиме як зазвичай, і нічого не буде видалено. Ми можемо попросити пройти цю перевірку пізніше." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Ми перевіряємо вашу картку, щоб визначи msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Ваша картка підходить. Перенаправляємо вас на сторінку оплати." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Ваш оператор повідомив, що цей номер не обслуговується. Перевірте його та спробуйте ще раз, або зверніться до служби підтримки, якщо номер правильний." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Ваші зміни надійдуть до всіх спільнот, які підписані на цей канал, що може зайняти хвилину. Кожне опубліковане повідомлення дозволяє 3 швидкі редагування, а потім по 1 кожні 20 хвилин." @@ -40869,21 +40158,6 @@ msgstr "Ваш пристрій запропонує зберегти оновл msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Ваш пристрій запропонує зберегти оновлений ключ доступу для {name}. Скористайтеся тим самим телефоном або ключем безпеки, що й щойно." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Вашу електронну адресу оновлено." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "На вашу електронну адресу не вдалося доставити листи. Додайте робочу адресу, щоб ми могли з вами зв'язуватися." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Ваша електронна адреса не може отримувати листи. Оновіть її, щоб продовжити користуватися {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Вашу електронну адресу підтверджено. Тепер ви можете увійти до свого облікового запису." @@ -41000,21 +40274,11 @@ msgstr "Ваше повідомлення не оновилося" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Ваша остання покупка більше не підлягає поверненню. Зверніться до служби підтримки щодо питань виставлення рахунків." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "ваша нова електронна адреса" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Ваш новий псевдонім або залиште порожнім, щоб скинути його." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Ваш номер не пов’язаний з вашим обліковим записом. Ми зберігаємо лише зашифрований маркер без ідентифікатора користувача протягом обмеженого часу." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Ваш платіж скасовано. Тепер ви можете закрити цю вкладку та повернутися до застосунку." @@ -41054,11 +40318,6 @@ msgstr "Ваші придбані подарунки" msgid "your region" msgstr "ваш регіон" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Щоб продовжити, потрібно пройти додаткову перевірку на спам." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/vi/messages.po b/fluxer_app/src/features/i18n/locales/vi/messages.po index 5a281534d..171a70cd4 100644 --- a/fluxer_app/src/features/i18n/locales/vi/messages.po +++ b/fluxer_app/src/features/i18n/locales/vi/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# cảm xúc} other {# cảm xúc}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# người bày tỏ cảm xúc} other {# người bày tỏ cảm xúc}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# giây} other {# giây}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} lúc {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, other {Liên kết mời của bạn sẽ hết hạn sau # giây.}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "Đã chọn {selectedCount}" @@ -2252,7 +2252,7 @@ msgstr "1 phút" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 giờ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 tháng (1 năm)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "Sao lưu 2FA" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "Yêu cầu 2FA" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 thành viên (đang nhập)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 tháng" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 giờ" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 tháng" @@ -2575,11 +2575,6 @@ msgstr "một phút" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "Đã có phiên bản mới cho máy tính. Tải xuống trình cài đặt, sau đó chạy để cập nhật {productName}." -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "Mã xác minh mới đã được gửi." - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "Dữ liệu tài khoản" msgid "Account exists to spam, scam, or abuse the platform." msgstr "Tài khoản này được tạo ra để gửi tin rác, lừa đảo hoặc lạm dụng nền tảng." +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "Tài khoản bị giới hạn" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "Trạng thái tài khoản" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "Tài khoản còn quá mới" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "Cần xác minh tài khoản" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "Thêm bot vào cộng đồng với các quyền được yêu cầu" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "Thêm bình luận (tùy chọn)" @@ -3054,8 +3052,10 @@ msgstr "Thêm chủ đề cho kênh này" msgid "Add a word…" msgstr "Thêm từ…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "Thêm email còn hoạt động" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "Thêm tài khoản để tiếp tục." #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "Trước tiên, hãy thêm email và mật khẩu vào tài khoản của bạn." @@ -3424,11 +3424,6 @@ msgstr "Đã thêm: {createdDate} • dùng lần cuối: {lastUsedDate}" msgid "Additional comments (optional)" msgstr "Bình luận thêm (không bắt buộc)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "Cần xác minh bổ sung" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "Tất cả ngôn ngữ" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "Đã đặt lịch hủy" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "Đồng thời báo cáo tin nhắn này cho Đội ngũ an toàn của {productName}" @@ -4713,11 +4708,6 @@ msgstr "Hỏi trước khi bắt đầu cuộc gọi" msgid "Ask for a passkey after your password when you sign in" msgstr "Khi đăng nhập, yêu cầu khóa truy cập sau khi bạn nhập mật khẩu" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "Hãy nhờ quản trị viên của máy chủ này xem xét tài khoản của bạn. Máy chủ này được vận hành độc lập và chỉ quản trị viên của máy chủ mới có thể thay đổi tài khoản của bạn." - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "Tự động xóa các tham số theo dõi (như utm_source, fbclid, gcl msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "Tự động xóa tham số theo dõi khỏi URL trong tin nhắn bạn gửi" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "Tự động sàng lọc tin nhắn có nội dung nhạy cảm trong các kênh không được đánh dấu là nội dung người lớn." @@ -5359,8 +5349,6 @@ msgstr "Đang vắng mặt" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "Quay lại" @@ -6506,11 +6494,6 @@ msgstr "Camera và thiết bị thu ảo được chọn tại đây trong {prod msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "Camera sẽ tắt khi có hơn {voiceChannelCameraUserLimit} người tham gia" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "Không truy cập được email đó?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "Không thể tải tệp lên ở đây" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "Không thể tải tệp lên ở đây" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "Đổi email" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "Đổi biểu tượng cảm xúc" @@ -7201,7 +7184,7 @@ msgstr "Đã thay đổi giới hạn người dùng từ {oldCount} thành {new msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "Đã thay đổi URL tùy chỉnh từ {oldCode} thành {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "Đã thay đổi cấp độ xác minh từ {oldLevel} thành {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "Kênh hoặc danh mục" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "Ghi đè quyền kênh" @@ -7509,8 +7492,6 @@ msgstr "Kiểm tra kết nối mạng và thử lại." msgid "Check your connection, then try again." msgstr "Kiểm tra kết nối của bạn, sau đó thử lại." -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "Chọn màn hình trong trình chọn của hệ thống" msgid "Choose a GIF" msgstr "Chọn GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "Chọn một phương thức" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "Chọn mật khẩu mới." @@ -7680,8 +7656,8 @@ msgstr "Chọn một hành động." #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "Chọn biểu tượng cảm xúc" @@ -7749,11 +7725,6 @@ msgstr "Chọn cách máy chủ của bạn hoạt động" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "Chọn một trong các phương thức bên dưới để chứng minh quyền sở hữu miền. Bạn chỉ cần hoàn thành một phương thức." -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "Chọn một phương thức xác minh. Một trong hai phương thức đều có thể hoàn tất bước kiểm tra này." - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "Chọn những gì {clientLabel} có thể làm trong cộng đồng c msgid "Choose what friends see in their active now panel" msgstr "Chọn những gì bạn bè thấy trong mục Đang hoạt động của họ" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "Chọn những gì thành viên phải có trước khi họ có thể đăng bài hoặc nhắn tin trực tiếp cho thành viên cộng đồng." @@ -8030,8 +8001,8 @@ msgstr "Xử lý âm thanh micrô để giọng nói rõ ràng hơn." msgid "Clear" msgstr "Xóa" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "Xóa sau" @@ -8053,7 +8024,7 @@ msgstr "Xóa tất cả mô phỏng tệp đính kèm" msgid "Clear all token overrides" msgstr "Xóa tất cả ghi đè token" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "Xóa mô phỏng tệp đính kèm" @@ -8066,14 +8037,14 @@ msgstr "Xóa lệnh" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "Xóa trạng thái tùy chỉnh" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "Xóa tất cả cảm xúc khỏi tin nhắn này?" @@ -8124,7 +8095,7 @@ msgstr "Xóa nội dung tìm kiếm" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "Giao diện Than" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "Lệnh" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "Không thể bình luận vì một hoặc nhiều kênh đã chọn đang bật chế độ chậm. Bình luận sẽ bị chặn ngay sau khi chuyển tiếp." #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "Không thể bình luận vì kênh {forwardChannelDisplayName} đang bật chế độ chậm. Bình luận sẽ bị chặn ngay sau khi chuyển tiếp." #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "Không thể bình luận khi đang bật chế độ chậm." @@ -8670,11 +8639,11 @@ msgstr "Cộng đồng" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "Cộng đồng và kênh mà bạn không thể quản lý webhook sẽ bị ẩn." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "Các cộng đồng được liệt kê trong Khám phá bắt buộc phải quét tin nhắn từ tất cả thành viên. Bạn không thể thay đổi cài đặt này khi Khám phá đang bật." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "Các cộng đồng được liệt kê trong Khám phá bắt buộc phải có ít nhất mức xác minh email. Không thể chọn \"Không\" khi Khám phá đang bật." @@ -8827,7 +8796,7 @@ msgstr "Tên cộng đồng" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "Biệt danh cộng đồng" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "Hồ sơ cộng đồng" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "Đã cập nhật hồ sơ cộng đồng" @@ -8907,7 +8876,7 @@ msgstr "Cấp độ huy hiệu chưa đọc của cộng đồng" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "Đã cập nhật cộng đồng" @@ -8952,11 +8921,6 @@ msgstr "So sánh" msgid "Complete mature content check" msgstr "Hoàn tất kiểm tra nội dung người lớn" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "Hoàn tất một trong các phương thức xác minh dưới đây để tiếp tục sử dụng {productName}." - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "Hoàn tất thanh toán" msgid "Complete the mature content check to unlock mature media." msgstr "Hoàn tất kiểm tra nội dung người lớn để mở khóa nội dung người lớn." -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "Hoàn tất các bước xác minh email và điện thoại bắt buộc bên dưới để tiếp tục sử dụng {productName}." - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "Hoàn tất xác minh bắt buộc để tiếp tục sử dụng {productName}." - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "Cấu hình huy hiệu hồ sơ của bạn" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "Đã sắp xếp lại kết nối" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "Cần có sự đồng ý" @@ -9349,16 +9304,6 @@ msgstr "Tạo URL ủy quyền với phạm vi và quyền." msgid "Contact" msgstr "Liên hệ" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "Liên hệ bộ phận hỗ trợ" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "Liên hệ quản trị viên của máy chủ này để được trợ giúp." - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "Nhà sáng tạo nội dung" msgid "Content filter" msgstr "Bộ lọc nội dung" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "Lọc nội dung" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "Loại nội dung để mã hóa" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "Cổng an toàn nội dung" @@ -9416,12 +9361,10 @@ msgstr "Bạn có thể mở menu ngữ cảnh bằng cách nhấp chuột trái #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "Kiểm soát cách hiển thị chỉ báo chưa đọc cho kênh đã t msgid "Control which chat updates are announced by assistive technology." msgstr "Kiểm soát những cập nhật trò chuyện mà công nghệ hỗ trợ sẽ thông báo." -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "Không tìm thấy cuộc trò chuyện" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "Không thể thêm thẻ" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "Không thể thêm người bạn này vào nhóm. Vui lòng thử lại." #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "Không thể thêm vào nhóm" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "Không thể tạo liên kết chủ đề" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "Không thể tạo liên kết mời" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "Không thể kết thúc thời gian gia hạn" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "Không thể tạo liên kết mời. Vui lòng thử lại." @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "Không xử lý được hình ảnh" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "Không thể đăng tin nhắn này" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "Không thể tham gia lại cộng đồng Visionary" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "Không thể xóa âm thanh vào phòng" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "Không thể lưu cài đặt kênh" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "Không thể lưu âm thanh vào phòng" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "Không thể rút đơn đăng ký" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "Đồng hồ đếm ngược" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "Quốc gia" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "Tạo tài khoản quản trị viên" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "Tạo tin nhắn nhóm với {addableCount, plural, one {# người nhận còn lại} other {# người nhận còn lại}} và bỏ qua những người khác?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "Tạo webhook" @@ -10948,7 +10884,7 @@ msgstr "Biểu tượng cảm xúc tùy chỉnh {emojiName} từ một cộng đ #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "Âm thanh vào phòng tùy chỉnh chưa được bật trên máy chủ này." @@ -11108,7 +11044,7 @@ msgstr "Xử lý giọng nói tùy chỉnh" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "Văn bản cảnh báo tùy chỉnh" @@ -11530,11 +11466,6 @@ msgstr "Công cụ tìm kiếm mặc định" msgid "Default shortcuts" msgstr "Phím tắt mặc định" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "Tab mặc định" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "Delaware" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "Xóa tin nhắn này" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "Xóa tin nhắn này? Không thể hoàn tác." #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "Xóa tin nhắn này? Không thể hoàn tác. Tin nhắn này cũng sẽ bị xóa khỏi mọi cộng đồng đang theo dõi kênh này." @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "Chế độ nhà phát triển" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "Tùy chọn nhà phát triển" @@ -12299,7 +12230,7 @@ msgstr "Đầu vào trực tiếp" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "Chế độ hiển thị" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "Tên hiển thị" @@ -12858,7 +12789,7 @@ msgstr "Bạn có muốn tham gia {communityName} không?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "Bác sĩ, tôi đến từ tương lai. Tôi đến đây bằng cỗ máy thời gian do chính bác sĩ phát minh. Giờ thì tôi cần bác sĩ giúp để quay về năm 1985." @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "Chỉnh sửa giờ địa phương trên hồ sơ" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "Chỉnh sửa tin nhắn đã đăng?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "Chỉnh sửa tin nhắn của bạn ở trên hoặc dưới" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "Chỉnh sửa giao diện hồ sơ và xem trước trực tiếp" @@ -13590,10 +13521,8 @@ msgstr "Đủ điều kiện hoàn tiền đến {windowEndsOn}. Thao tác này msgid "Email" msgstr "Email" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "Cần có địa chỉ email." #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "Đã đổi email" @@ -13616,49 +13547,17 @@ msgstr "Đã đổi email" msgid "Email delivery" msgstr "Gửi email" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "Email hoặc số điện thoại" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "Cần xác minh lại email hoặc số điện thoại" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "Cần xác minh lại email" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "Email không khả dụng" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "Hiện không thể cập nhật email. Vui lòng thử lại sau hoặc liên hệ bộ phận hỗ trợ." - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "Cần cập nhật email" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "Gửi email cho chúng tôi và một người sẽ xem xét tài khoản của bạn. Hãy cho chúng tôi biết bạn không thể xác minh qua SMS và chúng tôi sẽ xử lý tiếp. Phản hồi sẽ được gửi qua email, vì vậy việc này không diễn ra ngay lập tức." - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "Thanh thông báo xác minh email" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "Cần xác minh email" @@ -13675,6 +13574,10 @@ msgstr "Ghi đè xác minh email" msgid "Email verified successfully" msgstr "Đã xác minh email thành công" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "Email đến địa chỉ hiện tại của bạn không được gửi đi. Nhập một địa chỉ email mới và chúng tôi sẽ gửi mã xác nhận đến đó." + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "Nội dung nhúng" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "Đã ẩn nội dung nhúng" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "Đã hiện lại nội dung nhúng" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "Bật phát giọng nói cho /tts" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "Bật 2FA cho tài khoản của bạn để thay đổi cài đặt này" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "Nhập URL mẫu hoặc mã mẫu hợp lệ của {theOtherPlatform}." #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "Nhập địa chỉ email hợp lệ." @@ -14298,33 +14199,11 @@ msgstr "Nhập địa chỉ email hợp lệ." msgid "Enter a valid message link." msgstr "Nhập liên kết tin nhắn hợp lệ." -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "Nhập số điện thoại di động hợp lệ." - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "Nhập số điện thoại hợp lệ" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "Nhập tên người dùng hợp lệ ({exampleFluxerTagFull})." -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "Nhập địa chỉ email mà bạn truy cập được. Chúng tôi sẽ gửi mã đến đó." - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "Nhập mã" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "Vào chế độ toàn màn hình" msgid "Enter gift code…" msgstr "Nhập mã quà tặng…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "Nhập email mới" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "Nhập một trong các mã dự phòng của bạn nếu bạn không t msgid "Enter one of your backup codes." msgstr "Nhập một trong các mã dự phòng của bạn." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "Nhập số điện thoại" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "Nhập mã gồm {digitCount} chữ số từ ứng dụng xác thực h msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "Nhập mã gồm {digitCount} chữ số từ ứng dụng xác thực của bạn." -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "Nhập mã gồm {digitCount} chữ số đã gửi đến {phoneNumber}." - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "Nhập mã gồm {MFA_CODE_DIGIT_COUNT} chữ số đã gửi đến {0}." - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "Nhập mã" @@ -14408,11 +14267,6 @@ msgstr "Nhập mã trước khi tiếp tục." msgid "Enter the code from your authenticator app." msgstr "Nhập mã từ ứng dụng xác thực của bạn." -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "Nhập mã đã gửi đến {emailAddress}." - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "Nhập mã đã gửi đến email hiện tại của bạn." @@ -14426,6 +14280,7 @@ msgstr "Nhập mã đã gửi đến email của bạn." msgid "Enter the code shown in the app to continue." msgstr "Nhập mã hiển thị trong ứng dụng để tiếp tục." +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "Nhập mã chúng tôi đã gửi đến địa chỉ email mới của bạn." @@ -14434,11 +14289,6 @@ msgstr "Nhập mã chúng tôi đã gửi đến địa chỉ email mới của msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "Nhập mã chúng tôi đã gửi đến email của bạn để xác minh. Mật khẩu của bạn sẽ được đặt sau khi mã được xác nhận." -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "Nhập mã xác nhận email" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "Nhập liên kết mời để tham gia cộng đồng." @@ -14452,11 +14302,6 @@ msgstr "Nhập email mới bạn muốn dùng. Chúng tôi sẽ gửi mã xác n msgid "Enter the PIN for your security key to continue." msgstr "Nhập mã PIN cho khóa bảo mật của bạn để tiếp tục." -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "Nhập mã SMS" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "Nhập mã này vào trình duyệt để hoàn tất đăng nhập." @@ -14492,11 +14337,6 @@ msgstr "Nhập tên của bạn" msgid "Enter your password." msgstr "Nhập mật khẩu của bạn." -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "Nhập số điện thoại của bạn" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "Âm thanh vào phòng" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "Tệp âm thanh vào phòng phải có kích thước tối đa {limit}." #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "Thư viện âm thanh vào phòng đã đầy" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "Đã xóa âm thanh vào phòng" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "Đã lưu âm thanh vào phòng" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "Âm thanh vào phòng" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "Âm thanh vào phòng không khả dụng" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "Hết hạn:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "Cài đặt bộ lọc nội dung nhạy cảm" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "Sao chép vào bảng tạm thất bại" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "Tạo webhook không thành công" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "Không tải được URL tùy chỉnh. Vui lòng thử lại." #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "Không tải được webhook" @@ -15190,11 +15030,6 @@ msgstr "Không thể xóa URL tùy chỉnh. Vui lòng thử lại." msgid "Failed to resend code. Try again." msgstr "Không gửi lại được mã. Vui lòng thử lại." -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "Không gửi lại được mã xác minh. Vui lòng thử lại sau." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "Gửi tin nhắn không thành công. Nhấn giữ để xem tùy chọn msgid "Failed to send report. Try again." msgstr "Không gửi được báo cáo. Vui lòng thử lại." -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "Không gửi được email xác minh. Vui lòng thử lại sau." - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "Không thể khởi động" @@ -15551,15 +15381,15 @@ msgstr "Lọc theo người dùng" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "Lọc tất cả" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "Lọc thành viên chưa có vai trò" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "Theo dõi kênh này" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "Theo dõi để nhận thông báo này trong một kênh bạn chọn." @@ -15773,7 +15603,7 @@ msgstr "Kênh đã theo dõi {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "Kênh đã theo dõi" @@ -15857,11 +15687,6 @@ msgstr "Chỉ dành cho người Anh..." msgid "For me" msgstr "Dành cho tôi" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "Để thực hiện bước kiểm tra này, bạn sẽ gửi tin nhắn cho chúng tôi thay vì nhận tin nhắn từ chúng tôi." - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "Để bảo mật, vui lòng xác nhận danh tính của bạn để tiếp tục." @@ -15905,7 +15730,7 @@ msgstr "Buộc hiển thị khung tải" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "Buộc hiển thị nội dung người lớn" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "Buộc chuyển sang kênh AFK" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "Buộc không có quyền {permissionName}" @@ -15948,7 +15773,7 @@ msgstr "Luôn hiển thị cảnh báo URL tùy chỉnh" msgid "Force show voice connection" msgstr "Luôn hiển thị trạng thái kết nối thoại" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "Buộc bật chế độ chậm" @@ -16020,7 +15845,7 @@ msgstr "Chuyển tiếp phương tiện" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "Chuyển tiếp tin nhắn" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "Lớp phủ chặn địa lý" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "Bị giới hạn địa lý" @@ -16490,12 +16315,6 @@ msgstr "Nhận ảnh đại diện và banner động, huy hiệu người đăn msgid "Get monthly" msgstr "Nhận hàng tháng" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "Lấy mã mới" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "Mã quà tặng" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "Thời lượng quà tặng" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "Kho quà tặng" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "Luồng kho quà tặng" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "Không tìm thấy quà tặng" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "Đã đổi quà" @@ -17030,7 +16849,7 @@ msgstr "Tin nhắn nhóm" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "Chào {displayName}, hãy xác nhận tài khoản để tránh mất quyền truy cập." #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "Chào {displayName}, vui lòng xác minh địa chỉ email của bạn." +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "Chào {displayName}, chúng tôi không thể gửi thư đến địa chỉ của bạn. Hãy thêm một địa chỉ email đang hoạt động để xác minh tài khoản của bạn." + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "Ẩn chia sẻ màn hình của bạn?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "Cao" @@ -17755,11 +17579,6 @@ msgstr "Tôi là một chú giải công cụ" msgid "I changed my mind" msgstr "Tôi đã đổi ý" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "Tôi cần một cách khác" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "Nếu báo cáo này liên quan đến một tin nhắn cụ thể, hãy msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "Nếu báo cáo này liên quan đến các tin nhắn cụ thể, hãy báo cáo tin nhắn phù hợp nhất. Báo cáo tin nhắn cung cấp cho đội ngũ an toàn của chúng tôi ngữ cảnh rõ ràng nhất và việc thêm chi tiết vào phần bình luận có thể giúp chúng tôi xem xét nhanh hơn. Chỉ tiếp tục báo cáo toàn bộ người dùng nếu việc báo cáo tin nhắn không phản ánh được vấn đề lớn hơn." -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "Nếu bạn không thể xác minh qua SMS" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "Nếu bạn không thể sử dụng bất kỳ phương thức xác minh nào, hãy liên hệ với bộ phận hỗ trợ để được giúp đỡ." - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "Cỡ giao diện" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "Tệp âm thanh không hợp lệ" @@ -18674,8 +18483,10 @@ msgstr "JSON không hợp lệ. Dán toàn bộ phản hồi từ URL trên." #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "Tham gia cuộc gọi thoại" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "Tham gia kênh thoại" @@ -19613,16 +19424,6 @@ msgstr "Tìm hiểu thêm về Visionary" msgid "Leave" msgstr "Rời đi" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "Rời khỏi {count, plural, one {# cộng đồng} other {# cộng đồng}} và tạm gác lại việc kiểm tra này?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "Rời khỏi và tạm gác lại" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "Cho phép trình đọc màn hình thông báo tin nhắn mới khi chúng đến trong kênh đang mở. Âm thanh thông báo không bị ảnh hưởng." #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "Để cộng đồng tự kiểm duyệt" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "Thư viện" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "Thư viện đã đầy (tối đa {max} âm thanh). Xóa một mục trước khi thêm mục khác." @@ -19812,7 +19613,7 @@ msgstr "Thư viện: {count} trên {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "Trọn đời" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "Đang tải..." #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "Đang tải…" @@ -20261,7 +20062,7 @@ msgstr "Louisiana" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "Thấp" @@ -20416,7 +20217,7 @@ msgstr "Quản lý tính năng cộng đồng" msgid "Manage emoji & stickers" msgstr "Quản lý biểu tượng cảm xúc và nhãn dán" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "Quản lý các webhook đến có thể đăng tin nhắn vào kênh này." @@ -20514,7 +20315,7 @@ msgstr "Đánh dấu tất cả kênh chưa đọc trong hộp thư đến là msgid "Mark as read" msgstr "Đánh dấu đã đọc" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "Đánh dấu đã đổi" @@ -20676,14 +20477,14 @@ msgstr "Cộng đồng nội dung người lớn" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "Nội dung người lớn" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "Nội dung người lớn & cảnh báo nội dung" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "Thời gian tồn tại tối đa (ngày)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "Bảo vệ tối đa cho không gian thân thiện với gia đình" @@ -20924,7 +20725,7 @@ msgstr "Dừng phát" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "Đã bỏ cấm thành viên" msgid "Member updated" msgstr "Đã cập nhật thành viên" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "Xác minh thành viên" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "Cấp độ xác minh thành viên" @@ -21048,7 +20849,7 @@ msgstr "Thành viên sẽ bị xóa khỏi cộng đồng khi ngoại tuyến tr msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "Thành viên có quyền \"{pinMessagesPermissionLabel}\" có thể ghim tin nhắn cho mọi người." -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "Thành viên có vai trò có thể bỏ qua các kiểm tra này. Đối với không gian công cộng, chúng tôi khuyên bạn nên bật xác minh." @@ -21153,7 +20954,7 @@ msgstr "Các lượt nhắc đến bạn sẽ hiển thị ở đây trong {rete #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "Chỉ nhắc đến" @@ -21292,7 +21093,7 @@ msgstr "Cài đặt hiển thị tin nhắn chỉ có trên máy tính." msgid "Message editing" msgstr "Chỉnh sửa tin nhắn" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "Đã chuyển tiếp tin nhắn" @@ -21341,7 +21142,7 @@ msgstr "Nút nhập tin nhắn" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "Tin nhắn quá dài" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "Bản xem trước tin nhắn trong danh sách tin nhắn trực tiếp" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "Tin nhắn đã được đăng" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "Tin nhắn đăng trong #{sourceName} giờ sẽ xuất hiện trong #{targetName}." #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "Tin nhắn được đăng trên các kênh thông báo này sẽ được sao chép tại đây." @@ -21504,7 +21305,7 @@ msgstr "Tin nhắn được đăng trong các kênh này sẽ được sao chép msgid "Messages you can bookmark" msgstr "Tin nhắn bạn có thể đánh dấu" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "Tính năng nhắn tin đang tạm dừng trong cộng đồng này." @@ -21733,30 +21534,30 @@ msgstr "Giả lập hết hạn sau 1 ngày" msgid "Mock expires in 7 days" msgstr "Giả lập hết hạn sau 7 ngày" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "Giả lập lớp phủ chặn địa lý" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "Giả lập kho quà tặng" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "Giả lập cuộc gọi đến" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "Giả lập lý do chặn kênh nội dung người lớn" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "Giả lập lý do chặn nội dung người lớn" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "Giả lập vị trí địa lý Anh" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "Ảnh đại diện giả lập ở nhiều kích cỡ và mọi tổ hợp trạng thái." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "Biến thể giả lập" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "Luồng sản phẩm giả lập" @@ -22698,14 +22494,16 @@ msgstr "Kênh tắt thông báo ở cộng đồng mới" msgid "New direct message" msgstr "Tin nhắn trực tiếp mới" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "Email mới" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "Biểu mẫu email mới" @@ -22816,9 +22614,7 @@ msgstr "Mới nhất trước" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "Tiếp" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "Không" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "Không có quyền {attachFilesPermission}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "Không có quyền {sendMessagesPermission}" @@ -23005,7 +22801,7 @@ msgstr "Không có thay đổi nào để lưu" msgid "No channels available" msgstr "Không có kênh nào" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "Không tìm thấy kênh nào" @@ -23233,11 +23029,6 @@ msgstr "Không tìm thấy quyền nào" msgid "No personal words yet." msgstr "Chưa có từ cá nhân nào." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "Không có số điện thoại" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "Không có kết quả" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "Không tìm thấy kết quả nào" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "Không tìm thấy người dùng nào" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "Không yêu cầu xác minh." @@ -23452,7 +23243,7 @@ msgstr "Không yêu cầu xác minh." msgid "No verification methods available" msgstr "Không có phương thức xác minh nào" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "Không có webhook nào" @@ -23504,7 +23295,7 @@ msgstr "Không chuyển đổi" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "Không" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "Không (hành vi bình thường)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "Tiếng Na Uy" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "Chưa đủ thời gian làm thành viên" @@ -23798,9 +23589,9 @@ msgstr "Đồ vật" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "Tắt" @@ -23848,7 +23639,7 @@ msgstr "Cũ nhất trước" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "Bật" @@ -23884,11 +23675,6 @@ msgstr "Không thể đọc hoặc tải lên một hoặc nhiều tệp đính msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "Một hoặc nhiều tệp bạn đang tải lên vượt quá giới hạn kích thước tối đa là {maxSizeFormatted} cho mỗi tệp." -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "Kiểm tra nhanh" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "Chỉ loa" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "Chỉ chủ sở hữu cộng đồng mới có thể thay đổi cài đặt này" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "Mở biểu tượng cảm xúc trong trình duyệt" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "Mở bảng chọn biểu tượng cảm xúc" @@ -24382,12 +24168,8 @@ msgstr "Mở menu" msgid "Open message history threshold" msgstr "Mở ngưỡng lịch sử tin nhắn" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "Mở lớp phủ" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "Mở danh sách thả xuống" @@ -24485,11 +24267,6 @@ msgstr "Mở ứng dụng mới. Bạn đã đăng nhập." msgid "Open the shortcuts list for quick actions." msgstr "Mở danh sách phím tắt để thực hiện thao tác nhanh." -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "Mở email xác minh và dùng liên kết bên trong. Cửa sổ này sẽ cập nhật sau khi liên kết mở ra." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "Mở cài đặt âm thanh & video" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "Mở trình duyệt, đăng nhập, sau đó nhập mã bên dưới để liên kết tài khoản của bạn." -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "Mở tin nhắn của bạn" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "Mở ứng dụng {PRODUCT_NAME} cũ của bạn và chọn Liên kết thiết bị mới, sau đó nhập mã bên dưới." -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "Mở ứng dụng nhắn tin trên điện thoại của bạn và tạo tin nhắn văn bản mới." - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "Mở ứng dụng nhắn tin trên điện thoại và bắt đầu một tin nhắn văn bản mới." - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "Cảm xúc khác…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "Hệ thống kiểm tra số điện thoại của chúng tôi hiện đang gặp sự cố. Lỗi này là do chúng tôi, không phải do số của bạn. Hãy đợi vài phút rồi thử lại chính số đó." - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "Lừa đảo, gian lận, liên kết độc hại hoặc thông tin sai lệch có khả năng gây hại trong thế giới thực." -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "Điện thoại" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "Số điện thoại" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "Cần có số điện thoại" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "Đã xác minh số điện thoại" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "Yêu cầu xác minh lại số điện thoại" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "Bước điện thoại" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "Xác minh số điện thoại không khả dụng cho tài khoản này. Hãy dùng phương thức khác hoặc liên hệ bộ phận hỗ trợ." - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "Yêu cầu xác minh số điện thoại" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "Chọn 4 chữ số sau tên người dùng của bạn" msgid "Pick the appearance this administrator account should start with." msgstr "Chọn giao diện ban đầu cho tài khoản quản trị viên này." -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "Chọn phương thức bạn có thể hoàn tất ngay." - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "Ảnh trong ảnh" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "Ghim" @@ -25471,7 +25176,7 @@ msgstr "Ghim tin nhắn nhóm" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "Ghim hoặc bỏ ghim bất kỳ tin nhắn nào." #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "Ghim tin nhắn này lên kênh để mọi người cùng xem." @@ -26227,18 +25932,18 @@ msgstr "Màu sắc hồ sơ" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "Tùy chỉnh hồ sơ" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "Tùy chỉnh hồ sơ cho {selectedGuildName}" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "Biểu mẫu tùy chỉnh hồ sơ" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "Loại hồ sơ" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "Đã cập nhật hồ sơ" @@ -26340,7 +26045,7 @@ msgstr "Hỏi khi phát hiện thiết bị âm thanh mới" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "Phối hợp tấn công" msgid "Rate" msgstr "Tốc độ" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "Bị giới hạn tốc độ" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "JSON thô của nội dung nhúng" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "Xóa {userName} khỏi danh sách bạn bè?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "Xóa tất cả" @@ -27290,7 +26990,7 @@ msgstr "Xóa tất cả cảm xúc {emojiNameWithColons} khỏi tin nhắn này? #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "Xóa tất cả cảm xúc" @@ -27899,20 +27599,10 @@ msgstr "Thẻ người dùng bị báo cáo (tùy chọn)" msgid "Reposts: <0>{countLabel}" msgstr "Lượt đăng lại: <0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "Yêu cầu mã mới trước." - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "Yêu cầu liên kết đặt lại mới" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "Yêu cầu mã xác minh trước." - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "Yêu cầu" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "Yêu cầu 2FA cho hành động kiểm duyệt" @@ -27958,7 +27648,7 @@ msgstr "Yêu cầu cấp quyền OAuth2" msgid "Require passkey" msgstr "Yêu cầu khóa truy cập" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "Yêu cầu xác thực hai yếu tố cho người kiểm duyệt trước khi họ có thể cấm, đuổi, tạm dừng hoặc xóa tin nhắn." @@ -27972,46 +27662,6 @@ msgstr "Bắt buộc" msgid "Required 2FA for moderation actions" msgstr "Đã yêu cầu bật 2FA để thực hiện hành động kiểm duyệt" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "Tab mặc định của hành động bắt buộc" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "Luồng hành động bắt buộc" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "Bước điện thoại của hành động bắt buộc" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "Trạng thái tải khi gửi lại hành động bắt buộc" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "Kết quả gửi lại hành động bắt buộc" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "Văn bản xác minh lại hành động bắt buộc" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "Biến thể hành động bắt buộc" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "Lớp phủ hành động bắt buộc" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "Yêu cầu URI chuyển hướng và mã ủy quyền khi mời bot này." #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "Yêu cầu địa chỉ email đã xác minh và tài khoản đã được tạo ít nhất 5 phút trước." #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "Yêu cầu địa chỉ email đã xác minh." -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "Yêu cầu số điện thoại đã được xác minh." - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "Yêu cầu mọi điều kiện của mức trung bình và phải là thành viên của cộng đồng ít nhất 10 phút." #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "Gửi lại ({resendSecondsRemaining}s)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "Gửi lại ({secondsRemaining}s)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "Trạng thái tải của nút gửi lại" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "Gửi lại mã" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "Gửi lại email" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "Kết quả gửi lại" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "Đã gửi lại" @@ -28518,21 +28152,6 @@ msgstr "Hiện" msgid "Reveal spoiler" msgstr "Hiện nội dung ẩn" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "Xác minh lại email hoặc xác minh số điện thoại của bạn để tiếp tục sử dụng {productName}." - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "Xác minh lại email của bạn để tiếp tục sử dụng {productName}." - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "Xác minh lại số điện thoại của bạn để tiếp tục sử dụng {productName}." - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "Độ bão hòa" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "Xem trước khi tua" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "Tìm kênh" msgid "Search communities" msgstr "Tìm cộng đồng" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "Tìm kiếm quốc gia..." - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "Tìm kiếm quốc gia…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "Chọn quốc gia bạn đang sinh sống." #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "Chọn…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "Gửi" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "Gửi ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "Gửi báo cáo khác" msgid "Send button" msgstr "Nút gửi" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "Gửi mã" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "Gửi tin nhắn" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "Đã tắt gửi tin nhắn" @@ -30151,32 +29759,11 @@ msgstr "Gửi media đã lưu {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "Gửi tin nhắn chuyển văn bản thành giọng nói bằng lệnh /tts. Thành viên đã bật tính năng chuyển văn bản thành giọng nói sẽ nghe thấy tin nhắn được đọc to." -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "Gửi mã <0>{0} đến <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "Gửi mã đến số điện thoại bên dưới." - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "Gửi mã này" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "Gửi ghim này về quá khứ?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "Gửi đến" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "Gửi tin nhắn thoại" msgid "Send:" msgstr "Gửi:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "Việc gửi SMS đến số điện thoại này quá tốn kém đối với {PRODUCT_NAME}, vì vậy bạn cần gửi SMS cho chúng tôi. Chúng tôi biết điều này không lý tưởng. Bạn cũng có thể nhờ quản trị viên của máy chủ này gỡ bỏ yêu cầu này khỏi tài khoản của bạn." - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "Việc gửi SMS đến số điện thoại này quá tốn kém đối với {PRODUCT_NAME}, vì vậy bạn cần gửi SMS cho chúng tôi. Chúng tôi biết điều này không lý tưởng. Bạn cũng có thể liên hệ <0>{SUPPORT_EMAIL} để chúng tôi gỡ bỏ yêu cầu này khỏi tài khoản của bạn." - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "Gửi nối tiếp" msgid "Serve the token file" msgstr "Cung cấp tệp token" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "Lỗi dịch vụ" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "Đặt phím tắt tùy chỉnh cho \"{label}\"" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "Đặt trạng thái tùy chỉnh" @@ -30486,18 +30060,6 @@ msgstr "Đã đặt khu vực thoại thành {region}" msgid "Set the voice region to automatic" msgstr "Đã đặt khu vực thoại thành tự động" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "Tạm gác lại việc kiểm tra này" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "Tạm gác lại việc kiểm tra này?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "Đặt đại từ của bạn" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "Đặt trạng thái của bạn" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "Các phím tắt tạm ngừng hoạt động trong khi ghi lại tổ hợp phím." #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "Rút gọn tin nhắn và thử lại." @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "Hiển thị biểu tượng {productName} trong khay hệ thống hoặc thanh menu" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "Hiển thị cảnh báo nội dung" @@ -31672,7 +31234,7 @@ msgstr "Chế độ chậm · chờ {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "Chế độ chậm đang bật" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "Chế độ chậm được đặt thành {durationLabel}. Hãy đợi trước khi gửi tin nhắn khác." #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "Chế độ chậm còn lại" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "Mô phỏng chế độ chậm" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "Thời gian còn lại của chế độ chậm" @@ -31807,11 +31369,6 @@ msgstr "Cuộn mượt" msgid "Smoother video" msgstr "Video mượt hơn" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "Xác minh SMS hiện không khả dụng. Vui lòng thử lại sau hoặc liên hệ với bộ phận hỗ trợ." - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "Đã xảy ra lỗi khi chuẩn bị nhãn dán này. Hãy thử một tệp khác hoặc thử lại sau giây lát." #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "Đã xảy ra lỗi khi đăng. Vui lòng thử lại sau." @@ -32009,11 +31566,9 @@ msgstr "Đã xảy ra lỗi. Vui lòng tải lại trang hoặc đăng nhập l msgid "Something went wrong. Try again later." msgstr "Đã xảy ra lỗi. Vui lòng thử lại sau." -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "Đã xảy ra lỗi. Vui lòng thử lại." @@ -32352,11 +31907,6 @@ msgstr "Đăng nhập SSO đã hết thời gian. Vui lòng thử lại." msgid "Staff controls" msgstr "Điều khiển dành cho nhân viên" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "Có thể áp dụng cước phí nhắn tin tiêu chuẩn từ nhà mạng của bạn." - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "Hiệu ứng ngôi sao" msgid "Starred channels" msgstr "Các kênh đã đánh dấu sao" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "Phương tiện truyền tải của người đăng ký:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "Gói đăng ký" @@ -33051,14 +32599,12 @@ msgstr "Các trường hợp đăng ký" msgid "Subtext" msgstr "Văn bản phụ" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "Thành công" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "Được đề xuất cho hầu hết các cộng đồng" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "Hệ thống & chào mừng" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "Thông báo hệ thống từ đội ngũ {productName}. Bạn không thể trả lời tại đây." @@ -33765,11 +33311,6 @@ msgstr "Chọn văn bản" msgid "Text size" msgstr "Cỡ chữ" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "Nhắn tin cho chúng tôi từ điện thoại của bạn" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "Tiếng Thái" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "Cảm ơn bạn đã giúp giữ cho {productName} an toàn. Chúng tôi sẽ xem xét báo cáo của bạn sớm nhất có thể." -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "Mã đó không đúng. Hãy kiểm tra lại và thử lại." - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "Mã đó đã hết hạn. Hãy yêu cầu mã mới." - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "Thao tác này chưa hoàn tất. Có thể bạn đã rời khỏi một số cộng đồng và tài khoản của bạn vẫn bị khóa. Nhấn Để mục này sang một bên lần nữa để hoàn tất." - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "Đã xảy ra lỗi. Không có gì thay đổi. Thử lại." - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "Màu này không hợp lệ. Hãy thử dùng mã hex, rgb(), hsl() ho msgid "That doesn't look like a valid URL." msgstr "Đây không phải là một URL hợp lệ." -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "Email này đã được sử dụng." - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "Quyền ghi đè đã từ chối {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "Trang bạn tìm không tồn tại hoặc đã được di chuyển." -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "Đã bỏ qua kiểm tra điện thoại. Còn một bước email." - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "Không có kênh nào khả dụng để tạo lời mời." msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "Hiện tại không có vai trò nào để gán trong cộng đồng này, nhưng bạn có thể tạo vai trò mới trong <0>{rolesSettingsPath}." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "Kênh này chưa được thiết lập webhook nào. Hãy tạo một webhook để cho phép các ứng dụng bên ngoài đăng tin nhắn." @@ -34273,7 +33784,7 @@ msgstr "Đã xảy ra lỗi khi tải lời mời. Vui lòng thử lại." msgid "There was an error loading the stickers. Try again." msgstr "Đã xảy ra lỗi khi tải nhãn dán. Vui lòng thử lại." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "Đã xảy ra lỗi khi tải webhook cho kênh này. Vui lòng thử lại." @@ -34417,7 +33928,7 @@ msgstr "Kênh này có thể đăng 10 tin nhắn liên tiếp, sau đó thêm 1 msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "Kênh này có thể đăng 10 tin nhắn liên tiếp, sau đó thêm 1 tin nhắn sau mỗi 6 phút. Vui lòng thử lại sau vài phút." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "Kênh này không hỗ trợ webhook." @@ -34550,12 +34061,12 @@ msgstr "Kết nối này chưa được xác minh." #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "Phần này có chứa nội dung nhạy cảm." -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "Cuộc trò chuyện này không còn khả dụng." @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "Nhóm này có quá nhiều người" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "Nhóm này đã đầy. Hãy xóa bớt một người trước khi thêm người khác." @@ -34715,11 +34226,6 @@ msgstr "Đây là một nhãn dán tùy chỉnh từ một cộng đồng." msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "Đây là kênh giới hạn độ tuổi. Các cập nhật chỉ có thể được gửi đến các kênh giới hạn độ tuổi." -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "Đây là bước kiểm tra chống spam. Số điện thoại của bạn không được liên kết với tài khoản." - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "Đã vô hiệu hóa" msgid "This is how messages appear" msgstr "Đây là cách tin nhắn hiển thị" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "Tính năng này hiện không khả dụng cho tài khoản của bạn. Hãy nhờ quản trị viên của máy chủ này xem xét." - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "Tính năng này hiện không khả dụng cho tài khoản của bạn. Hãy gửi email tới {supportEmail} và một nhân viên sẽ xem xét." - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "Đây không phải kênh bạn tìm." @@ -34792,11 +34288,6 @@ msgstr "Đây là khóa truy cập cuối cùng của bạn và khóa truy cập msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "Đây là khóa truy cập cuối cùng của bạn. Khi khóa này bị xóa, bạn sẽ không thể sử dụng khóa truy cập làm yếu tố thứ hai nữa." -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "Đây không phải là số di động nên không nhận được tin nhắn của chúng tôi. Hãy thử một số di động, hoặc liên hệ bộ phận hỗ trợ nếu bạn cho rằng có nhầm lẫn." - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "Tin nhắn này đã bị xóa." #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "Tin nhắn này đã được đăng rồi" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "Tin nhắn này không còn tồn tại." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "Biệt danh này sẽ chỉ hiển thị trong cộng đồng này" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "Số này phải được xác minh bằng cách nhắn tin cho chúng tôi. Hãy quay lại và bắt đầu lại phần xác minh số điện thoại để nhận mã và số cần nhắn tin đến." - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "Số này cần được xác minh bằng cách bạn nhắn tin đến cho chúng tôi, thay vì nhận SMS từ chúng tôi." - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "Người tham gia này đang tắt tiếng nghe" msgid "This participant was deafened by moderators" msgstr "Người tham gia này đã bị người điều hành tắt tiếng nghe" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "Không thể sử dụng số điện thoại này. Hãy thử số di động khác hoặc liên hệ bộ phận hỗ trợ." - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "Số điện thoại này đã được sử dụng. Hãy thử số khác hoặc liên hệ bộ phận hỗ trợ." - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "Người dùng này không có vai trò nào trong cộng đồng này." msgid "This user is already banned from the community." msgstr "Người dùng này đã bị cấm khỏi cộng đồng." -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "Người dùng này không còn khả dụng." @@ -35065,11 +34536,6 @@ msgstr "Người dùng này đã bị quản trị viên nền tảng thêm vào msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "Phiên xác minh này đã hết hạn. Quay lại {productName} và bắt đầu thanh toán lại." -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "Phiên xác minh này đã hết hạn. Vui lòng thử lại." - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "Thao tác này sẽ đăng xuất bạn, xóa các tệp đã lưu trong msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "Thao tác này sẽ tin cậy tất cả các liên kết bên ngoài và bỏ qua cảnh báo cho mọi miền. Các miền đáng tin cậy hiện có của bạn sẽ bị thay thế. Điều này kém an toàn hơn." -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "Cửa sổ này sẽ tự động cập nhật sau khi chúng tôi nhận được tin nhắn của bạn." - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "Thanh tiêu đề" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "Nền tảng thanh tiêu đề" @@ -35470,18 +34931,11 @@ msgstr "Tông màu" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "Ánh xạ tông màu ảnh HDR về dải tiêu chuẩn, giảm độ sáng tối đa." -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "Đã thử quá nhiều lần. Vui lòng đợi một lát rồi thử lại." - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "Quá nhiều cộng đồng" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "Quá nhiều yêu cầu. Vui lòng thử lại sau." @@ -36151,8 +35605,10 @@ msgstr "Không thể chuẩn bị biểu tượng cảm xúc để tải lên. #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "Không khả dụng" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "Chưa phân loại" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "Tài khoản chưa xác nhận" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "Danh sách không thứ tự" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "Bỏ ghim" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "Bỏ ghim tin nhắn" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "Bỏ ghim tin nhắn này?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "Thay đổi chưa lưu" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "Tệp âm thanh không được hỗ trợ." @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "Cho đến khi tôi bật lại" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "Email chưa xác minh" @@ -36958,12 +36414,7 @@ msgstr "Cập nhật {productName} để xem tin nhắn này." msgid "Update app" msgstr "Cập nhật ứng dụng" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "Cập nhật email" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "Cập nhật trạng thái của tôi" @@ -37306,18 +36757,13 @@ msgstr "Sử dụng {url} tại vị trí cần chèn URL hình ảnh." msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "Dùng một cửa sổ riêng để đặt ngày giới hạn lịch sử tin nhắn cho những thành viên không có quyền {readMessageHistoryPermissionLabel}." -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "Sử dụng một địa chỉ email khác và xác minh bằng mã." - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "Dùng trạng thái thực tế" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "Dùng loại premium thực tế" @@ -37335,16 +36781,6 @@ msgstr "Dùng phương thức khác" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "Dùng ứng dụng xác thực để tạo mã cho xác thực hai yếu tố" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "Dùng địa chỉ email mà bạn truy cập được. Chúng tôi sẽ gửi mã đến đó." - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "Sử dụng email khác với email hiện tại của bạn." - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "Dùng giao diện tối cho toàn ứng dụng" msgid "Use default" msgstr "Dùng mặc định" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "Dùng email khác" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "Dùng email" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "Sử dụng khóa truy cập để xác thực hai yếu tố?" msgid "Use passkeys to sign in without a password" msgstr "Sử dụng khóa truy cập để đăng nhập không cần mật khẩu" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "Dùng số điện thoại" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "Dùng văn bản xác minh lại" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "Người dùng chuyển kênh" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "Không tìm thấy người dùng" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "Xác minh" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "Rào cản xác minh & thành viên" @@ -37970,15 +37387,8 @@ msgstr "Mã xác minh" msgid "Verification code sent" msgstr "Đã gửi mã xác minh" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "Mã xác minh đã được gửi. Kiểm tra hộp thư đến email mới của bạn." - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "Đã gửi email xác minh. Kiểm tra hộp thư đến của bạn." @@ -38038,23 +37448,6 @@ msgstr "Biểu mẫu xác minh danh tính" msgid "Verify it's you" msgstr "Xác minh đó là bạn" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "Xác minh số điện thoại" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "Xác minh số điện thoại" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "Biểu mẫu xác minh số điện thoại" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "Xác minh email của bạn trước khi thêm ứng dụng xác thực." #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "Xác minh email của bạn trước khi thay đổi biệt danh cộng đồng, ảnh đại diện, ảnh bìa, tiểu sử, đại từ hoặc màu nhấn." #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "Xác minh email của bạn trước khi thay đổi tên người dùng, tên hiển thị, ảnh đại diện, ảnh bìa, tiểu sử, đại từ, múi giờ hoặc quyền riêng tư huy hiệu {premiumProductName} của bạn." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "Xác minh email của bạn trước khi chỉnh sửa hồ sơ cộng đồng này. Bạn vẫn có thể xem trước tại đây." #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "Xác minh email trước khi chỉnh sửa hồ sơ. Bạn vẫn có thể xem trước tại đây." @@ -38113,11 +37506,6 @@ msgstr "Xác minh email của bạn trước khi gửi lời mời kết bạn." msgid "Verify your email first" msgstr "Xác minh email của bạn trước" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "Xác minh email hoặc số điện thoại của bạn để tiếp tục sử dụng {productName}." - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "Xác minh email của bạn để mua quà tặng." msgid "Verify your email to change your username" msgstr "Xác minh email để đổi tên người dùng" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "Xác minh email của bạn để tiếp tục sử dụng {productName}." - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "Xác minh email để chỉnh sửa hồ sơ cộng đồng này" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "Xác minh email để chỉnh sửa hồ sơ" @@ -38181,13 +37564,6 @@ msgstr "Vermont" msgid "Version" msgstr "Phiên bản" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "Rất cao" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "Tăng âm lượng" msgid "Wait a moment before deleting more messages." msgstr "Đợi một lát trước khi xóa thêm tin nhắn." -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "Đợi một chút. Cửa sổ này sẽ tự động đóng khi chúng tôi nhận được tin nhắn của bạn." - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "Chờ giữa các tin nhắn. Thành viên có quyền \"{bypassSlowmodePermissionLabel}\" có thể bỏ qua giới hạn này." -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "Đợi ở đây" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "Đang chờ khóa truy cập…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "Đang chờ chế độ chậm trong {forwardChannelDisplayName} hết hạn." #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "Đang chờ chế độ chậm trong một hoặc nhiều kênh đã chọn hết hạn." @@ -39115,16 +38482,6 @@ msgstr "Không đọc được chủ đề này. Có thể chủ đề bị lỗ msgid "We couldn't remove that account. Try again." msgstr "Chúng tôi không thể xóa tài khoản đó. Vui lòng thử lại." -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "Chúng tôi không thể xác minh số này một cách tự động. Hãy liên hệ bộ phận hỗ trợ, sẽ có người xem xét tài khoản của bạn." - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "Chúng tôi không gửi tin nhắn xác minh đến quốc gia này. Vui lòng thử số di động từ quốc gia khác hoặc liên hệ bộ phận hỗ trợ." - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "Chúng tôi đã tìm thấy gói đăng ký {premiumProductFullName} hi msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "Chúng tôi đã giảm giá {premiumProductName} tại Brazil. Giá hiện tại là {monthlyPrice}/tháng hoặc {yearlyPrice}/năm." -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "Chúng tôi cần một bước xác minh trước khi bạn tiếp tục. Điều này giúp bảo vệ tài khoản và ngăn spam trên {productName}." - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "Chúng tôi cần hai bước xác minh trước khi bạn tiếp tục. Chúng tôi sẽ hiển thị từng bước một." - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "Chúng tôi khuyên bạn nên lưu các mã này ngay bây giờ để không bị khóa tài khoản." @@ -39167,11 +38514,6 @@ msgstr "Chúng tôi đã gửi mã đến {email}." msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "Chúng tôi sẽ điền sẵn {prefillEmail} khi trình duyệt mở trang đăng nhập." -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "Chúng tôi sẽ gửi mã SMS khi có thể." - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "Chúng tôi rất muốn tặng bạn nhiều hơn cả trọn đời {PREMIUM_PRODUCT_NAME}, nhưng như vậy sẽ phá vỡ dòng chảy không-thời gian. Hay là gửi món quà này cho một người bạn nhé?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "Chúng tôi sẽ xử lý yêu cầu này sớm nhất có thể. Bạn sẽ nhận được email khi bản lưu trữ của bạn đã sẵn sàng." #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "Chúng tôi sẽ khôi phục email trước đó của bạn, đăng xuất các phiên cũ, xóa số điện thoại, tắt xác thực đa yếu tố và bảo mật tài khoản của bạn bằng mật khẩu mới." +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "Chúng tôi sẽ khôi phục email trước đây của bạn, đăng xuất các phiên cũ, tắt xác thực đa yếu tố và bảo mật tài khoản của bạn bằng mật khẩu mới." #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "Chúng tôi sẽ gửi mã xác minh đến email của bạn trước k msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "Chúng tôi sẽ gửi một mã xác minh đến email của bạn trước khi bạn có thể xem mã dự phòng của mình." -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Chúng tôi sẽ gửi mã SMS khi có sẵn. Số của bạn không được liên kết với tài khoản của bạn. Chúng tôi chỉ lưu giữ một mã đánh dấu được mã hóa, không có ID người dùng, trong một thời gian giới hạn." - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "Chúng tôi sẽ xác minh email hiện tại của bạn, sau đó là email mới của bạn bằng mã dùng một lần." @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Đã tạo webhook" @@ -39331,7 +38669,7 @@ msgstr "Đã cập nhật webhook" msgid "Webhook URL" msgstr "URL webhook" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhook" @@ -39486,8 +38824,8 @@ msgstr "Nội dung bạn đang chia sẻ không cập nhật" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "Bạn đang làm gì?" @@ -39967,21 +39305,11 @@ msgstr "Bạn có thể xóa quyền <0>{readMessageHistoryPermissionLabel} msgid "You can sign back in at any time." msgstr "Bạn có thể đăng nhập lại bất cứ lúc nào." -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "Bạn vẫn có thể nhờ quản trị viên của máy chủ này xem xét thủ công bất cứ lúc nào." - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "Bạn vẫn có thể tạo tài khoản hoặc đăng nhập. Nếu lời mời được bật lại sau, bạn có thể dùng lại liên kết này để tham gia." -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "Bạn vẫn có thể gửi email cho {supportEmail} để được xem xét thủ công bất cứ lúc nào." - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "Bạn có thể dùng liên kết, biểu tượng cảm xúc và Markdown." @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "Bạn không thể thêm biểu cảm ở đó" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "Bạn không thể thêm cảm xúc mới khi đang bị tạm dừng." @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "Bạn không thể kết bạn với chính mình" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "Bạn không thể thay đổi biệt danh của mình tại đây" @@ -40094,7 +39422,7 @@ msgstr "Bạn không thể tự gửi lời mời kết bạn cho chính mình." msgid "You can't send messages in this channel." msgstr "Bạn không thể gửi tin nhắn trong kênh này." -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "Bạn không thể gửi tin nhắn trong cộng đồng này." @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "Bạn không có quyền thực hiện thao tác này với thành viên này." #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "Bạn không có quyền tham gia kênh thoại này" @@ -40243,7 +39571,7 @@ msgstr "Bạn không có quyền đổi tên biểu tượng cảm xúc này. T msgid "You have been banned from this community." msgstr "Bạn đã bị cấm khỏi cộng đồng này." -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "Bạn đã chặn {username}. Bỏ chặn để gửi tin nhắn." @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "Bạn có thay đổi chưa lưu." #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "Bạn có thay đổi chưa lưu. Hãy lưu hoặc đặt lại trước khi rời đi." @@ -40270,7 +39598,7 @@ msgstr "Bạn có thay đổi chưa lưu. Hãy lưu hoặc đặt lại trước msgid "You haven't authorized any applications to access your account." msgstr "Bạn chưa cấp quyền cho ứng dụng nào truy cập tài khoản của mình." -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "Bạn chưa phải là thành viên đủ lâu để gửi tin nhắn trong cộng đồng này." @@ -40326,11 +39654,6 @@ msgstr "Bạn phải đồng ý với các điều khoản dịch vụ để t msgid "You must verify your email before sending a report." msgstr "Bạn phải xác minh email trước khi gửi báo cáo." -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "Bạn cần truy cập email hiện tại để thay đổi email từ đây. Hãy dùng xác minh qua điện thoại (nếu có) hoặc liên hệ bộ phận hỗ trợ." - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "Bạn cần có quyền \"{manageRolesPermissionLabel}\" để chỉnh s msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "Bạn cần quyền \"{manageRolesPermissionLabel}\" để chỉnh sửa các quyền này." -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "Bạn cần quyền \"{manageWebhooksPermissionLabel}\" để xem và chỉnh sửa webhook cho kênh này." @@ -40384,18 +39707,14 @@ msgstr "Bạn cần xác nhận tài khoản trước khi tạo cộng đồng." msgid "You need to claim your account before you can start a direct message." msgstr "Bạn cần xác nhận tài khoản trước khi có thể bắt đầu tin nhắn trực tiếp." -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "Bạn cần xác nhận tài khoản để gửi tin nhắn trực tiếp." -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "Bạn cần xác nhận tài khoản để gửi tin nhắn trong cộng đồng này." -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "Bạn cần xác minh số điện thoại để gửi tin nhắn trong cộng đồng này." - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "Bạn cần xác minh địa chỉ email trước khi có thể bắt đ msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "Bạn cần xác minh email trước khi có thể mua {premiumProductFullName}." -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "Bạn cần xác minh email để gửi tin nhắn trong cộng đồng này." @@ -40424,11 +39743,6 @@ msgstr "Bạn cần xác minh email để gửi tin nhắn trong cộng đồng msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "Bạn hoặc người mà bạn đang thêm đã mở số lượng tin nhắn nhóm tối đa. Hãy rời khỏi một nhóm rồi thử lại." -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "Bạn vẫn ở trong {ownedNames}. Chủ sở hữu không thể rời cộng đồng của chính mình." - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "Bạn đã bị người điều hành tắt tiếng nghe" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "Bạn sẽ được đưa đến {redirectHostname} sau khi ủy quyền." -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "Bạn sẽ rời khỏi {count, plural, one {# cộng đồng} other {# cộng đồng}} mà quy trình kiểm tra này áp dụng, và tài khoản của bạn sẽ hoạt động bình thường trở lại." - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "Bạn sẽ rời khỏi {guildNames}. Không có bài đăng nào của bạn bị xóa và bạn có thể tham gia lại sau." - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "Bạn vẫn cần hoàn thành bước email." - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "Bạn đang thao tác quá nhanh" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "Bạn đang thao tác quá nhanh. Vui lòng đợi một lát rồi thử lại." @@ -40636,7 +39935,7 @@ msgstr "Bạn đang gửi tin nhắn quá nhanh" msgid "You're streaming!" msgstr "Bạn đang phát trực tiếp!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "Bạn đang bị tạm dừng. Bạn không thể nhắn tin, bày tỏ cảm xúc hay dùng thoại cho đến khi hết thời gian tạm dừng." @@ -40764,25 +40063,25 @@ msgstr "Thanh toán gia hạn qua {storeName} của bạn không thành công nh msgid "Your account" msgstr "Tài khoản của bạn" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "Tài khoản của bạn sẽ trở lại bình thường ngay lập tức và bạn sẽ không cần số điện thoại nữa. Đây không phải là miễn trừ vĩnh viễn và chúng tôi có thể yêu cầu kiểm tra lại sau." - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "Tài khoản của bạn đã được liên kết thành công. Bây giờ bạn có thể đóng tab này và quay lại ứng dụng." -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "Tài khoản của bạn đã hoạt động bình thường trở lại." +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "Tài khoản của bạn bị giới hạn" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "Tài khoản của bạn bị giới hạn. Kiểm tra email để biết cách gỡ bỏ giới hạn." #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "Tài khoản của bạn chưa được xác nhận. Nếu không có email và mật khẩu, bạn sẽ không thể đăng nhập từ các thiết bị khác và có thể mất quyền truy cập vào tài khoản của mình. Hãy xác nhận tài khoản ngay để bảo vệ tài khoản." -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "Tài khoản của bạn còn quá mới để gửi tin nhắn trong cộng đồng này." @@ -40800,11 +40099,6 @@ msgstr "Tài khoản của bạn yêu cầu xác thực đa yếu tố, nhưng c msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "Tài khoản của bạn sẽ không còn được bảo vệ bằng xác thực hai yếu tố khi đăng nhập bằng mật khẩu. Bạn cũng sẽ mất các quyền nâng cao trong các cộng đồng yêu cầu xác thực hai yếu tố." -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "Tài khoản của bạn hoạt động bình thường trở lại ngay lập tức và không có gì bị xóa. Chúng tôi có thể yêu cầu lại bước kiểm tra này sau." - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "Đang kiểm tra thẻ của bạn để áp dụng giá theo khu vực. msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "Thẻ của bạn đủ điều kiện. Đang chuyển bạn đến trang thanh toán." -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "Nhà mạng cho biết số này không còn được sử dụng. Vui lòng kiểm tra lại rồi thử lại, hoặc liên hệ bộ phận hỗ trợ nếu số này là chính xác." - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "Thay đổi của bạn sẽ được áp dụng cho mọi cộng đồng theo dõi kênh này và có thể mất một phút. Mỗi tin nhắn đã đăng cho phép chỉnh sửa nhanh 3 lần, sau đó là 1 lần mỗi 20 phút." @@ -40869,21 +40158,6 @@ msgstr "Thiết bị của bạn sẽ yêu cầu bạn lưu một khóa truy c msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "Thiết bị của bạn sẽ yêu cầu bạn lưu một khóa truy cập đã cập nhật cho {name}. Hãy sử dụng cùng điện thoại hoặc khóa bảo mật mà bạn vừa dùng." -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "Địa chỉ email của bạn đã được cập nhật." - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "Email của bạn không nhận được thư. Hãy thêm một email đang hoạt động để chúng tôi vẫn liên hệ được với bạn." - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "Email của bạn không nhận được thư. Cập nhật email để tiếp tục sử dụng {productName}." - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "Email của bạn đã được xác minh. Bây giờ bạn có thể đăng nhập vào tài khoản của mình." @@ -41000,21 +40274,11 @@ msgstr "Tin nhắn của bạn chưa được cập nhật" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "Giao dịch mua gần đây nhất của bạn đã quá thời gian hoàn tiền. Vui lòng liên hệ bộ phận hỗ trợ nếu có vấn đề về thanh toán." -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "email mới của bạn" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "Biệt danh mới của bạn, hoặc để trống để đặt lại." -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "Số của bạn không được liên kết với tài khoản của bạn. Chúng tôi chỉ lưu giữ một mã hóa được mã hóa, không có ID người dùng, trong một thời gian giới hạn." - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "Thanh toán của bạn đã bị hủy. Bây giờ bạn có thể đóng tab này và quay lại ứng dụng." @@ -41054,11 +40318,6 @@ msgstr "Quà bạn đã mua" msgid "your region" msgstr "khu vực của bạn" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "Đăng ký của bạn cần một bước kiểm tra chống spam bổ sung trước khi tiếp tục." - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/zh-CN/messages.po b/fluxer_app/src/features/i18n/locales/zh-CN/messages.po index 2ce7eb691..f723acae2 100644 --- a/fluxer_app/src/features/i18n/locales/zh-CN/messages.po +++ b/fluxer_app/src/features/i18n/locales/zh-CN/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, other {# 条回应}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, other {# 位回应者}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, other {# 秒}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, other {你的邀请链接将在 # 秒后过期。}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "已选择 {selectedCount} 项" @@ -2252,7 +2252,7 @@ msgstr "1 分钟" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 小时" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 个月(1 年)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "双重认证备份" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "双重认证要求" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 位成员(正在输入)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 个月" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 小时" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 个月" @@ -2575,11 +2575,6 @@ msgstr "1 分钟" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "一个新版本的桌面应用已发布。下载安装程序,然后运行它以更新 {productName}。" -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "新的验证码已发送。" - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "账号数据" msgid "Account exists to spam, scam, or abuse the platform." msgstr "此账号用于发送垃圾信息、诈骗或滥用平台。" +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "账户受限" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "账号状态" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "账号太新" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "需要验证账号" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "将机器人添加到社区并授予其请求的权限" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "添加评论(可选)" @@ -3054,8 +3052,10 @@ msgstr "为此频道添加话题" msgid "Add a word…" msgstr "添加字词…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "添加有效的邮箱地址" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "添加账号以继续。" #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "请先为你的账号添加邮箱和密码。" @@ -3424,11 +3424,6 @@ msgstr "添加日期:{createdDate} • 最后使用:{lastUsedDate}" msgid "Additional comments (optional)" msgstr "补充说明(可选)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "需要额外验证" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "所有语言" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "已安排取消" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "同时将此消息举报给 {productName} 安全团队" @@ -4713,11 +4708,6 @@ msgstr "发起通话前先确认" msgid "Ask for a passkey after your password when you sign in" msgstr "登录时在输入密码后还需验证通行密钥" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "请让此实例的管理员审核你的账号。此实例由其管理员独立运营,只有他们可以更改你的账号。" - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "自动移除你发送的消息中网址里的跟踪参数(例如 utm_s msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "自动移除你发送的消息中网址里的跟踪参数" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "在未标记为成人内容的频道中,自动筛查消息中的露骨内容。" @@ -5359,8 +5349,6 @@ msgstr "当前离开" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "返回" @@ -6506,11 +6494,6 @@ msgstr "摄像头和虚拟捕获设备在 {productName} 中选择,而不是在 msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "参与人数超过 {voiceChannelCameraUserLimit} 时,摄像头将关闭" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "无法访问该邮箱?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "无法在此上传文件" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "无法在此上传文件" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "更改邮箱" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "更改表情" @@ -7201,7 +7184,7 @@ msgstr "将用户上限从 {oldCount} 更改为 {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "已将自定义邀请链接从 {oldCode} 更改为 {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "已将验证级别从 {oldLevel} 更改为 {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "频道或类别" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "频道权限覆盖" @@ -7509,8 +7492,6 @@ msgstr "请检查你的网络连接,然后重试。" msgid "Check your connection, then try again." msgstr "请检查你的网络连接,然后重试。" -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "在系统选择器中选择一个显示器" msgid "Choose a GIF" msgstr "选择 GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "选择验证方式" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "选择新密码。" @@ -7680,8 +7656,8 @@ msgstr "选择一个操作。" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "选择表情" @@ -7749,11 +7725,6 @@ msgstr "选择实例的工作方式" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "选择以下任一方式来验证域名所有权。你只需完成其中一项。" -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "请选择一种验证方式。任一方式均可完成验证。" - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "选择 {clientLabel} 在你的社区中可以执行的操作。取消勾 msgid "Choose what friends see in their active now panel" msgstr "选择好友在“正在活跃”面板中看到的内容" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "选择成员在发帖或私信社区成员前必须满足的条件。" @@ -8030,8 +8001,8 @@ msgstr "优化麦克风收音,让语音更清晰。" msgid "Clear" msgstr "清除" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "清除时间" @@ -8053,7 +8024,7 @@ msgstr "清除所有附件模拟数据" msgid "Clear all token overrides" msgstr "清除所有令牌覆盖" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "清除附件模拟数据" @@ -8066,14 +8037,14 @@ msgstr "清除命令" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "清除自定义状态" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "要清除此消息的所有反应吗?" @@ -8124,7 +8095,7 @@ msgstr "清除搜索输入" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "煤炭主题" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "命令" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "评论已禁用,因为你选择的一个或多个频道开启了慢速模式。转发后,评论会立即被慢速模式拦截。" #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "由于“{forwardChannelDisplayName}”中开启了慢速模式,评论已禁用。转发后,评论会立即被慢速模式拦截。" #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "慢速模式开启时无法评论。" @@ -8670,11 +8639,11 @@ msgstr "社区" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "无法管理入站 webhook 的社群和频道已隐藏。" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "列入社区发现的社区必须扫描所有成员的消息。启用社区发现后,无法更改此设置。" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "列入社区发现的社区至少需要邮箱验证。启用社区发现后,无法选择“无”。" @@ -8827,7 +8796,7 @@ msgstr "社区名称" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "社区昵称" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "社区资料" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "社区资料已更新" @@ -8907,7 +8876,7 @@ msgstr "社区未读标记级别" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "社区已更新" @@ -8952,11 +8921,6 @@ msgstr "比较" msgid "Complete mature content check" msgstr "完成成人内容验证" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "请完成以下任一验证路径,以继续使用 {productName}。" - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "完成支付" msgid "Complete the mature content check to unlock mature media." msgstr "完成成人内容验证即可解锁成人媒体。" -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "请完成以下所需的邮箱和手机验证步骤,以继续使用 {productName}。" - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "请完成必要的验证,以继续使用 {productName}。" - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "配置你的个人资料徽章" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "连接已重新排序" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "需要同意" @@ -9349,16 +9304,6 @@ msgstr "使用权限范围和权限构建授权网址。" msgid "Contact" msgstr "联系方式" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "联系支持团队" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "如需帮助,请联系此实例的管理员。" - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "内容创作者" msgid "Content filter" msgstr "内容过滤" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "内容过滤" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "内容提示" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "内容安全拦截" @@ -9416,12 +9361,10 @@ msgstr "左键点击(按钮)或右键点击(其他元素)可打开上下 #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "控制频道列表中已静音频道的未读标记行为。" msgid "Control which chat updates are announced by assistive technology." msgstr "控制辅助技术播报哪些聊天更新。" -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "未找到对话" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "无法添加标签" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "无法将该好友添加到群聊。请重试。" #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "无法添加到群聊" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "无法创建主题链接" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "无法创建邀请链接" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "无法结束宽限期" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "无法生成邀请链接。请重试。" @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "无法处理图片" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "无法发布此消息" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "无法重新加入 Visionary 社区" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "无法移除入场音效" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "无法保存频道设置" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "无法保存入场音效" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "无法撤回申请" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "倒计时" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "国家/地区" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "创建管理员账号" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "要创建包含其余 {addableCount, plural, other {# 位收件人}}的群聊,并跳过其他人吗?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "创建 Webhook" @@ -10948,7 +10884,7 @@ msgstr "来自社区的自定义表情 {emojiName}" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "此实例未启用自定义入场音效。" @@ -11108,7 +11044,7 @@ msgstr "自定义语音处理" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "自定义警告文本" @@ -11530,11 +11466,6 @@ msgstr "默认搜索引擎" msgid "Default shortcuts" msgstr "默认快捷键" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "默认标签页" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "特拉华州" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "删除此消息" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "删除这条消息?此操作无法撤销。" #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "删除此消息?无法撤销。此消息也将从关注此频道的每个社群中移除。" @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "开发者模式" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "开发者选项" @@ -12299,7 +12230,7 @@ msgstr "直接输入" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "显示模式" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "显示名称" @@ -12858,7 +12789,7 @@ msgstr "您想加入 {communityName} 吗?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "博士,我来自未来。我乘坐你发明的时光机来到这里。现在,我需要你的帮助才能回到 1985 年。" @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "编辑个人资料中的当地时间" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "编辑已发布的帖子?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "编辑上方或下方的消息" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "编辑个人资料外观并实时预览" @@ -13590,10 +13521,8 @@ msgstr "在 {windowEndsOn} 之前可申请退款。此操作还会立即取消 msgid "Email" msgstr "邮箱" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "需要填写邮箱地址。" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "邮箱已更改" @@ -13616,49 +13547,17 @@ msgstr "邮箱已更改" msgid "Email delivery" msgstr "邮件发送" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "邮箱或手机号" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "需要重新验证邮箱或手机号" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "需要重新验证邮箱" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "邮箱不可用" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "暂时无法更新邮箱。请稍后重试或联系支持团队。" - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "需要更新邮箱" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "给我们发邮件,会有专人审核你的账号。告诉我们你无法通过短信验证,后续由我们处理。回复通过邮件发送,因此不会即时收到。" - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "邮箱验证提醒栏" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "需要验证邮箱" @@ -13675,6 +13574,10 @@ msgstr "邮箱验证状态覆盖" msgid "Email verified successfully" msgstr "邮箱验证成功" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "发送到您当前地址的电子邮件未送达。请输入新电子邮件,我们将向那里发送验证码。" + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "嵌入内容" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "已隐藏嵌入内容" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "已显示嵌入内容" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "启用 /tts 语音播放" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "请先在你的账号上启用双重认证,才能更改此设置" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "请输入有效的 {theOtherPlatform} 模板网址或代码。" #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "请输入有效的电子邮件地址。" @@ -14298,33 +14199,11 @@ msgstr "请输入有效的电子邮件地址。" msgid "Enter a valid message link." msgstr "请输入有效的消息链接。" -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "请输入有效的手机号码。" - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "请输入有效的电话号码" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "请输入有效的用户名({exampleFluxerTagFull})。" -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "请输入一个你能正常访问的邮箱。我们会向该邮箱发送验证码。" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "输入代码" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "进入全屏" msgid "Enter gift code…" msgstr "输入礼物码…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "输入新邮箱" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "如果你无法使用通行密钥,请输入其中一个备用码。" msgid "Enter one of your backup codes." msgstr "输入其中一个备用码。" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "输入手机号" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "输入身份验证器应用中的 {digitCount} 位验证码,或其中 msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "输入身份验证器应用中的 {digitCount} 位验证码。" -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "输入发送到 {phoneNumber} 的 {digitCount} 位验证码。" - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "输入发送至 {0} 的 {MFA_CODE_DIGIT_COUNT} 位验证码。" - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "输入验证码" @@ -14408,11 +14267,6 @@ msgstr "请输入验证码以继续。" msgid "Enter the code from your authenticator app." msgstr "输入身份验证器应用中的验证码。" -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "输入发送到 {emailAddress} 的验证码。" - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "输入发送至你当前邮箱的验证码。" @@ -14426,6 +14280,7 @@ msgstr "输入发送到你邮箱的验证码。" msgid "Enter the code shown in the app to continue." msgstr "请输入应用中显示的验证码以继续。" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "请输入我们发送到你新邮箱的验证码。" @@ -14434,11 +14289,6 @@ msgstr "请输入我们发送到你新邮箱的验证码。" msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "请输入我们发送到你邮箱的验证码以验证邮箱。验证码确认后,即可设置你的密码。" -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "输入邮箱验证码" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "输入邀请链接,加入社区。" @@ -14452,11 +14302,6 @@ msgstr "请输入你要使用的新邮箱。稍后我们会向该邮箱发送验 msgid "Enter the PIN for your security key to continue." msgstr "输入你的安全密钥 PIN 码以继续。" -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "输入短信验证码" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "在浏览器中输入此代码以完成登录。" @@ -14492,11 +14337,6 @@ msgstr "输入你的名字" msgid "Enter your password." msgstr "请输入你的密码。" -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "输入你的电话号码" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "入场音效" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "入场音效文件不得超过 {limit}。" #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "入场音效库已满" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "入场音效已移除" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "入场音效已保存" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "入场音效" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "入场音效不可用" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "过期时间:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "露骨内容过滤设置" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "复制到剪贴板失败" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "创建 Webhook 失败" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "加载自定义邀请链接失败。请重试。" #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "加载 Webhook 失败" @@ -15190,11 +15030,6 @@ msgstr "移除自定义邀请链接失败。请重试。" msgid "Failed to resend code. Try again." msgstr "重新发送验证码失败。请重试。" -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "重新发送验证码失败。请稍后重试。" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "消息发送失败。长按可查看选项。" msgid "Failed to send report. Try again." msgstr "发送举报失败。请重试。" -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "发送验证邮件失败。请稍后重试。" - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "启动失败" @@ -15551,15 +15381,15 @@ msgstr "按用户筛选" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "过滤所有人" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "过滤无身份组成员" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "关注此频道" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "关注以在您选择的频道中接收这些公告。" @@ -15773,7 +15603,7 @@ msgstr "已关注频道 {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "关注的频道" @@ -15857,11 +15687,6 @@ msgstr "英国用户专属…" msgid "For me" msgstr "为自己" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "本次验证,你需要向我们发送短信,而不是接收我们发来的短信。" - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "为保障你的账号安全,请先验证身份。" @@ -15905,7 +15730,7 @@ msgstr "强制显示加载骨架屏" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "强制成人媒体" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "强制移至 AFK 频道" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "强制无 {permissionName} 权限" @@ -15948,7 +15773,7 @@ msgstr "强制显示自定义邀请链接免责声明" msgid "Force show voice connection" msgstr "强制显示语音连接" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "强制慢速模式开启" @@ -16020,7 +15845,7 @@ msgstr "转发媒体" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "转发消息" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "地理封锁叠加层" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "地理限制" @@ -16490,12 +16315,6 @@ msgstr "获取动画头像和横幅、订阅者徽章、你想要的用户名后 msgid "Get monthly" msgstr "获取月度订阅" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "获取新验证码" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "礼品码" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "礼物时长" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "礼物库存" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "礼物库存流程" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "未找到礼物" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "礼物已兑换" @@ -17030,7 +16849,7 @@ msgstr "群聊" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "嘿,{displayName},请认领你的账号,以免失去访问权限。" #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "嘿,{displayName},请验证你的邮箱地址。" +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "嘿 {displayName},我们无法将邮件发送到您的地址。请添加一个有效的邮箱来验证您的账户。" + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "隐藏自己的屏幕共享?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "高" @@ -17755,11 +17579,6 @@ msgstr "我是一个工具提示" msgid "I changed my mind" msgstr "我改变主意了" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "我需要其他方式" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "如果举报内容是针对某条消息,请改为举报该消息。举 msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "如果举报涉及特定消息,请改为举报最相关的消息。举报消息能为我们的安全团队提供最清晰的上下文,在评论中添加详细信息有助于我们更快地审核。仅当举报消息无法涵盖更广泛的问题时,才继续举报整个用户。" -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "如果你无法通过短信验证" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "如果你无法使用任何验证方式,请联系客服寻求帮助。" - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "界面大小" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "音频文件无效" @@ -18674,8 +18483,10 @@ msgstr "JSON 无效。请粘贴上方网址的完整响应。" #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "加入语音通话" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "加入语音频道" @@ -19613,16 +19424,6 @@ msgstr "了解更多关于 Visionary" msgid "Leave" msgstr "退出" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "退出 {count, plural, other {# 个社区}}并暂缓此验证?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "退出并暂缓" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "让屏幕阅读器朗读当前打开频道中新收到的消息。通知提示音不受影响。" #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "让社区成员自行管理" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "主题库" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "库已满(最多可添加 {max} 个声音)。请删除一个后再添加。" @@ -19812,7 +19613,7 @@ msgstr "库:{count}/{max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "永久" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "正在加载…" #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "加载中…" @@ -20261,7 +20062,7 @@ msgstr "路易斯安那州" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "低" @@ -20416,7 +20217,7 @@ msgstr "管理社区功能" msgid "Manage emoji & stickers" msgstr "管理表情和贴纸" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "管理可在此频道中发布消息的传入 Webhook。" @@ -20514,7 +20315,7 @@ msgstr "立即将所有未读收件箱频道标为已读,无需确认" msgid "Mark as read" msgstr "标为已读" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "标记为已兑换" @@ -20676,14 +20477,14 @@ msgstr "成人社区" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "成人内容" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "成人内容和内容警告" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "最大保留天数" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "为家庭友好空间提供最高等级保护" @@ -20924,7 +20725,7 @@ msgstr "停止播放" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "成员已解除封禁" msgid "Member updated" msgstr "成员已更新" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "成员验证" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "成员验证等级" @@ -21048,7 +20849,7 @@ msgstr "成员离线时会被移除,除非为其分配了身份组。" msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "拥有“{pinMessagesPermissionLabel}”权限的成员可以为所有人置顶消息。" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "拥有身份组的成员可以绕过这些检查。对于公共空间,我们建议启用验证。" @@ -21153,7 +20954,7 @@ msgstr "提及你的消息会在这里显示 {retentionDays} 天。" #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "仅提及我的消息" @@ -21292,7 +21093,7 @@ msgstr "消息显示设置仅在桌面端可用。" msgid "Message editing" msgstr "编辑消息" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "消息已转发" @@ -21341,7 +21142,7 @@ msgstr "消息输入按钮" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "消息太长" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "私信列表中的消息预览" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "消息已发布" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "发布在 #{sourceName} 中的消息将显示在 #{targetName} 中。" #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "发布在这些公告频道中的消息会在此处复制。" @@ -21504,7 +21305,7 @@ msgstr "发布在这些公告频道中的消息将被复制到你的频道中。 msgid "Messages you can bookmark" msgstr "可收藏的消息" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "此社区的消息功能已临时暂停。" @@ -21733,30 +21534,30 @@ msgstr "模拟将在 1 天后过期" msgid "Mock expires in 7 days" msgstr "模拟将在 7 天后过期" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "模拟地理封锁叠加层" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "模拟礼物库存" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "模拟来电" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "模拟成人内容频道门控原因" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "模拟成人内容媒体门控原因" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "模拟英国地理位置" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "不同尺寸和状态组合的模拟用户头像。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "模拟变体" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "模拟产品流程" @@ -22698,14 +22494,16 @@ msgstr "新社区已静音" msgid "New direct message" msgstr "新私信" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "新邮箱" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "新邮箱表单" @@ -22816,9 +22614,7 @@ msgstr "最新优先" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "下一步" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "否" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "无 {attachFilesPermission} 权限" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "无 {sendMessagesPermission} 权限" @@ -23005,7 +22801,7 @@ msgstr "没有要保存的更改" msgid "No channels available" msgstr "没有可用频道" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "未找到频道" @@ -23233,11 +23029,6 @@ msgstr "未找到权限" msgid "No personal words yet." msgstr "暂无个人词条。" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "无电话号码" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "无结果" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "未找到结果" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "未找到用户" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "无需验证。" @@ -23452,7 +23243,7 @@ msgstr "无需验证。" msgid "No verification methods available" msgstr "没有可用的验证方式" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "无 Webhook" @@ -23504,7 +23295,7 @@ msgstr "无转换" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "无" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "无(正常行为)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "挪威语" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "成员时长不足" @@ -23798,9 +23589,9 @@ msgstr "物品" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "关" @@ -23848,7 +23639,7 @@ msgstr "最早优先" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "开" @@ -23884,11 +23675,6 @@ msgstr "一个或多个附件无法读取或上传。文件可能已被移动或 msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "你要上传的一个或多个文件超过了每个文件 {maxSizeFormatted} 的大小上限。" -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "快速验证一下" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "仅扬声器" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "只有社区所有者才能更改此设置" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "在浏览器中打开表情" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "打开表情选择器" @@ -24382,12 +24168,8 @@ msgstr "打开菜单图标" msgid "Open message history threshold" msgstr "打开消息历史记录阈值" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "打开浮层" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "打开弹出窗口" @@ -24485,11 +24267,6 @@ msgstr "打开新应用。你已登录。" msgid "Open the shortcuts list for quick actions." msgstr "打开快捷键列表即可快速操作。" -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "打开验证邮件并使用其中的链接。打开链接后,此窗口将自动更新。" - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "打开语音和视频设置" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "打开浏览器,登录后输入以下代码以关联你的账号。" -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "打开短信应用" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "打开你的旧版 {PRODUCT_NAME} 应用,选择“关联新设备”,然后输入下方的验证码。" -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "打开手机短信应用,创建一条新短信。" - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "打开手机短信应用,然后开始一条新短信。" - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "其他反应…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "我们的电话号码验证服务暂时不可用。这是我们的问题,与你的号码无关。请等几分钟后用同一个号码重试。" - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "上翻页" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "网络钓鱼、欺诈、恶意链接或可能造成实际危害的虚假信息。" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "手机" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "手机号" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "需要手机号" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "手机号已验证" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "需要重新验证手机号" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "手机步骤" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "此账号无法进行手机验证。请使用其他方式或联系支持团队。" - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "需要验证手机号" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "选择你用户名后的四位数字" msgid "Pick the appearance this administrator account should start with." msgstr "选择此管理员账号的初始外观。" -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "选择你现在可以完成的方式。" - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "画中画" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "置顶" @@ -25471,7 +25176,7 @@ msgstr "置顶群聊" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "置顶或取消置顶任何消息。" #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "将这条消息置顶到频道,让大家都能看到。" @@ -26227,18 +25932,18 @@ msgstr "个人资料颜色" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "个人资料自定义" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "“{selectedGuildName}”的个人资料自定义" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "个人资料自定义表单" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "个人资料类型" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "个人资料已更新" @@ -26340,7 +26045,7 @@ msgstr "连接新音频设备时提示" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "组织突袭" msgid "Rate" msgstr "语速" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "已限流" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "原始嵌入 JSON" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "将 {userName} 从好友中移除?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "全部移除" @@ -27290,7 +26990,7 @@ msgstr "要移除此消息的所有 {emojiNameWithColons} 反应吗?" #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "移除所有反应" @@ -27899,20 +27599,10 @@ msgstr "被举报用户标签(可选)" msgid "Reposts: <0>{countLabel}" msgstr "转发:<0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "请先请求新验证码。" - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "请求新的重置链接" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "请先请求验证码。" - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "请求" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "要求双重认证才能执行管理操作" @@ -27958,7 +27648,7 @@ msgstr "需要 OAuth2 授权码" msgid "Require passkey" msgstr "要求通行密钥" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "要求管理员启用双重认证后,才能封禁、踢出、禁言或删除消息。" @@ -27972,46 +27662,6 @@ msgstr "必需" msgid "Required 2FA for moderation actions" msgstr "开启了对管理操作的 2FA 要求" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "必需操作默认标签页" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "必需操作流程" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "必需操作电话步骤" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "必需操作重新发送加载中" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "必需操作重新发送结果" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "必需操作重新验证文本" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "必需操作变体" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "必需操作浮层" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "邀请此机器人时,需要重定向 URI 和授权码。" #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "需要已验证的邮箱地址,且账号创建至少满 5 分钟。" #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "需要已验证的邮箱地址。" -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "需要已验证的电话号码。" - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "需满足中等安全等级的所有要求,并且加入社区至少 10 分钟。" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "重新发送({resendSecondsRemaining} 秒)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "重新发送({secondsRemaining} 秒)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "重新发送按钮加载中" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "重新发送验证码" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "重新发送邮件" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "重新发送结果" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "已重新发送" @@ -28518,21 +28152,6 @@ msgstr "显示" msgid "Reveal spoiler" msgstr "显示剧透" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "请重新验证你的邮箱或验证手机,以继续使用 {productName}。" - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "请重新验证你的邮箱,以继续使用 {productName}。" - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "请重新验证你的电话号码,以继续使用 {productName}。" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "饱和度" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "拖动预览" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "搜索频道" msgid "Search communities" msgstr "搜索社区" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "搜索国家/地区…" - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "搜索国家/地区…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "选择你居住的国家/地区。" #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "选择…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "发送" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "发送({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "再发送一份举报" msgid "Send button" msgstr "发送按钮" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "发送验证码" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "发送消息" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "已禁用发送消息" @@ -30151,32 +29759,11 @@ msgstr "发送已保存媒体 {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "使用 /tts 发送文本转语音消息。开启了文本转语音的成员会听到朗读内容。" -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "将验证码 <0>{0} 发送到 <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "将验证码发送到以下手机号。" - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "发送此验证码" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "要把这条置顶消息送回过去吗?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "发送至" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "发送语音消息" msgid "Send:" msgstr "发送:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "向此手机号发送短信对 {PRODUCT_NAME} 来说费用太高,因此需要你改为向我们发送短信。我们知道这不太理想。你也可以请此实例的管理员为你的账号取消此项要求。" - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "向此手机号发送短信对 {PRODUCT_NAME} 来说费用太高,因此需要你改为向我们发送短信。我们知道这不太理想。你也可以联系 <0>{SUPPORT_EMAIL},让我们为你的账号取消此项要求。" - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "依次发送" msgid "Serve the token file" msgstr "提供令牌文件" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "服务错误" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "为“{label}”设置自定义快捷键" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "设置自定义状态" @@ -30486,18 +30060,6 @@ msgstr "将语音区域设置为 {region}" msgid "Set the voice region to automatic" msgstr "将语音区域设置为自动" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "暂缓此检查" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "暂缓此检查?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "设置你的代词" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "设置状态" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "录制快捷键时,快捷键会暂停生效。" #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "请缩短消息后重试。" @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "在系统托盘或菜单栏中显示 {productName} 图标" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "显示内容警告" @@ -31672,7 +31234,7 @@ msgstr "慢速模式 · 等待 {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "慢速模式已开启" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "慢速模式已设置为 {durationLabel}。请等待后再发送下一条消息。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "慢速模式剩余时间" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "慢速模式模拟" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "慢速模式剩余时间" @@ -31807,11 +31369,6 @@ msgstr "平滑滚动" msgid "Smoother video" msgstr "更流畅的视频" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "短信验证暂时不可用。请稍后重试或联系支持团队。" - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "准备此贴纸时出错了。请尝试其他文件或稍后重试。" #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "发布时出现问题。请稍后重试。" @@ -32009,11 +31566,9 @@ msgstr "出错了。请重新加载页面或重新登录。" msgid "Something went wrong. Try again later." msgstr "出错了。请稍后重试。" -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "出错了。请重试。" @@ -32352,11 +31907,6 @@ msgstr "SSO 登录超时。请重试。" msgid "Staff controls" msgstr "员工工具" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "你的运营商可能会收取标准短信费用。" - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "星标动图" msgid "Starred channels" msgstr "星标频道" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "订阅者传输:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "订阅" @@ -33051,14 +32599,12 @@ msgstr "订阅场景" msgid "Subtext" msgstr "副文本" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "成功" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "推荐给大多数社区" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "系统与欢迎" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "来自 {productName} 员工的系统公告。你无法在此回复。" @@ -33765,11 +33311,6 @@ msgstr "文本选择" msgid "Text size" msgstr "文字大小" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "用你的手机给我们发短信" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "泰语" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "感谢你帮助维护 {productName} 的安全。我们会尽快审核你的举报。" -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "验证码无效。请检查后重试。" - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "验证码已过期。请申请新验证码。" - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "操作未完成。部分社区可能已经退出,你的账号仍处于锁定状态。请再次点击“暂缓此验证”以完成。" - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "操作未成功。没有任何更改。请重试。" - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "这看起来不是有效的颜色。请尝试使用十六进制、rgb() msgid "That doesn't look like a valid URL." msgstr "网址格式不正确。" -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "该邮箱已被占用。" - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "该覆盖设置拒绝了 {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "你要找的页面不存在或已被移动。" -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "手机验证已暂缓。还剩一个邮箱验证步骤。" - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "没有可创建邀请的频道。" msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "此社区暂无身份组可分配,但你可以在 <0>{rolesSettingsPath} 中创建新身份组。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "此频道未配置任何 Webhook。请创建一个 Webhook,以允许外部应用发布消息。" @@ -34273,7 +33784,7 @@ msgstr "加载邀请时出错。请重试。" msgid "There was an error loading the stickers. Try again." msgstr "加载贴纸时出错。请重试。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "加载此频道 Webhook 时出错。请重试。" @@ -34417,7 +33928,7 @@ msgstr "该频道一次最多可发布 10 条消息,之后每隔 6 分钟可 msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "该频道一次最多可发布 10 条消息,之后每隔 6 分钟可发布一条。请稍后再试。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "此频道不支持 Webhook。" @@ -34550,12 +34061,12 @@ msgstr "此连接尚未验证。" #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "此处包含敏感内容。" -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "此对话已不可用。" @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "群聊人数过多" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "群聊已满。请先移除一些成员,再添加其他人。" @@ -34715,11 +34226,6 @@ msgstr "这是来自某个社群的自定义表情。" msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "这是一个年龄限制频道。更新只能发送到年龄限制频道。" -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "这是一项反垃圾信息检查。你的手机号不会关联到你的账号。" - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "已禁用" msgid "This is how messages appear" msgstr "消息显示效果" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "你的账号目前无法使用此功能。请让此实例的管理员进行审核。" - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "此功能目前无法在你的账号上使用。请发邮件至 {supportEmail},会有工作人员进行审核。" - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "这不是你要找的频道。" @@ -34792,11 +34288,6 @@ msgstr "这是你的最后一个通行密钥,而通行密钥是你的第二重 msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "这是你的最后一个通行密钥。删除后,你将无法再使用通行密钥作为第二重验证。" -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "这不是手机号码,无法接收我们的短信。请改用手机号码。如果你认为这是误判,请联系支持团队。" - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "此消息已删除。" #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "此消息已发布" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "此消息已不存在。" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "此昵称仅在此社区内可见" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "此号码需要改为由你发短信给我们来验证。请返回并重新开始手机验证,以获取验证码和接收短信的号码。" - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "此号码需要由你主动发短信来验证,而不是接收我们发送的短信。" - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "该参与者已拒听" msgid "This participant was deafened by moderators" msgstr "该参与者已被管理员设为拒听" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "此电话号码无法使用。请尝试其他手机号码或联系支持团队。" - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "此电话号码已被使用。请尝试其他号码或联系支持团队。" - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "该用户在此社区中没有身份组。" msgid "This user is already banned from the community." msgstr "该用户已被此社区封禁。" -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "该用户已不可用。" @@ -35065,11 +34536,6 @@ msgstr "该用户已被平台管理员强制添加到此社区。" msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "验证会话已过期。请返回 {productName} 重新开始结账。" -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "此验证会话已过期。请重新开始。" - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "此操作将使你退出登录,清除缓存文件和已存储的会话 msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "这将信任所有外部链接,并跳过所有域名的警告。你现有的受信任域名将被替换。这样安全性较低。" -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "收到你的消息后,此窗口会自动更新。" - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "标题栏" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "标题栏平台" @@ -35470,18 +34931,11 @@ msgstr "色调" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "将 HDR 图像色调映射到标准范围,降低峰值亮度。" -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "尝试次数过多。请稍等片刻,然后重试。" - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "社区数量过多" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "请求过多,请稍后重试。" @@ -36151,8 +35605,10 @@ msgstr "无法准备任何要上传的表情。出现以下错误:" #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "不可用" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "未分类" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "未认领账号" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "无序列表" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "取消置顶" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "取消置顶消息" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "取消置顶这条消息?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "未保存的更改" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "不支持的音频文件。" @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "直到我重新开启" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "邮箱未验证" @@ -36958,12 +36414,7 @@ msgstr "更新 {productName} 即可查看此消息。" msgid "Update app" msgstr "更新应用" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "更新邮箱" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "更新我的状态" @@ -37306,18 +36757,13 @@ msgstr "在需要插入图片网址的地方使用 {url}。" msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "使用专用弹窗,为没有 {readMessageHistoryPermissionLabel} 权限的成员设置消息历史记录截止日期。" -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "使用其他邮箱地址,并通过验证码验证。" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "使用实际值" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "使用实际会员类型" @@ -37335,16 +36781,6 @@ msgstr "使用其他方式" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "使用身份验证器应用生成双重认证验证码" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "请使用你可以正常接收邮件的邮箱。我们会向该邮箱发送验证码。" - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "请使用与当前邮箱不同的地址。" - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "在整个应用中使用深色主题" msgid "Use default" msgstr "使用默认值" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "使用其他邮箱" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "使用邮箱" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "将通行密钥用于双重认证?" msgid "Use passkeys to sign in without a password" msgstr "使用通行密钥,无需密码即可登录" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "使用手机号" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "使用重新验证文本" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "用户被移至其他频道" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "用户不存在" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "验证" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "验证与成员门槛" @@ -37970,15 +37387,8 @@ msgstr "验证码" msgid "Verification code sent" msgstr "验证码已发送" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "验证码已发送。请检查你的新邮箱收件箱。" - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "验证邮件已发送。请检查你的收件箱。" @@ -38038,23 +37448,6 @@ msgstr "验证身份表单" msgid "Verify it's you" msgstr "验证你的身份" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "验证手机号" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "验证手机号" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "验证手机号表单" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "请先验证你的邮箱,然后再添加身份验证器应用。" #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "请先验证邮箱,再修改社区昵称、头像、横幅、个人简介、代词或主题色。" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "请先验证你的邮箱,然后才能更改用户名、显示名称、头像、横幅、个人简介、代词、时区或 {premiumProductName} 徽章隐私设置。" #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "请先验证邮箱,再编辑此社区资料。你仍可在此预览。" #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "请先验证邮箱,再编辑个人资料。你仍可在此预览。" @@ -38113,11 +37506,6 @@ msgstr "请先验证你的邮箱,然后才能发送好友请求。" msgid "Verify your email first" msgstr "请先验证你的邮箱" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "请验证你的邮箱或手机号,以继续使用 {productName}。" - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "验证您的电子邮件即可购买礼物。" msgid "Verify your email to change your username" msgstr "验证邮箱后才能修改用户名" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "请验证你的邮箱,以便继续使用 {productName}。" - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "验证邮箱后才能编辑此社区资料" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "验证邮箱后才能编辑个人资料" @@ -38181,13 +37564,6 @@ msgstr "佛蒙特州" msgid "Version" msgstr "版本" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "非常高" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "提高音量" msgid "Wait a moment before deleting more messages." msgstr "请稍后再删除其他消息。" -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "请稍候。收到你的消息后,此窗口将自动关闭。" - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "消息之间的等待时间。拥有“{bypassSlowmodePermissionLabel}”权限的成员可以绕过此限制。" -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "请稍候" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "正在等待通行密钥…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "正在等待 {forwardChannelDisplayName} 的慢速模式结束。" #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "正在等待一个或多个所选频道的慢速模式结束。" @@ -39115,16 +38482,6 @@ msgstr "无法读取此主题。它可能已损坏或无效。" msgid "We couldn't remove that account. Try again." msgstr "无法移除该账号。请重试。" -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "我们无法自动验证此号码。请联系支持团队,我们会安排专人审核你的账号。" - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "我们不向该国家发送验证短信。请尝试使用其他国家的手机号码,或联系支持团队。" - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "我们发现此账号已有一个 {premiumProductFullName} 订阅。请 msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "我们在巴西下调了 {premiumProductName} 的价格。现在每月 {monthlyPrice},每年 {yearlyPrice}。" -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "在你继续操作前,我们需要完成一步验证。这有助于保护账号安全,并防止垃圾信息出现在 {productName} 上。" - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "在你继续操作前,我们需要完成两步验证。我们会逐一显示验证步骤。" - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "建议你现在保存这些备用码,以防日后无法登录账号。" @@ -39167,11 +38514,6 @@ msgstr "验证码已发送至 {email}。" msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "浏览器登录页面打开后,我们将预填 {prefillEmail}。" -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "可用时,我们会发送短信验证码。" - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "我们很想送你超过终身时长的 {PREMIUM_PRODUCT_NAME},但那会打破时空连续体。不如把礼物送给好友?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "我们会尽快处理。存档准备就绪后,你会收到一封邮件。" #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "我们将恢复你之前的邮箱,退出旧会话,移除手机号码,禁用 MFA,并用新密码保护你的账号。" +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "我们将恢复您的旧邮箱,退出其他登录会话,禁用多重身份验证,并使用新密码保护您的账户。" #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "修改密码前,我们会向你的邮箱发送验证码。" msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "查看备用码前,我们会向你的邮箱发送验证码。" -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "代码将在可用时通过短信发送。您的号码不会与您的账户关联。我们仅在有限时间内保留一个加密标记,不包含用户 ID。" - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "我们将通过一次性验证码验证你的当前邮箱和新邮箱。" @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook 已创建" @@ -39331,7 +38669,7 @@ msgstr "Webhook 已更新" msgid "Webhook URL" msgstr "Webhook 网址" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhook" @@ -39486,8 +38824,8 @@ msgstr "你分享的内容没有更新" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "在忙些什么?" @@ -39967,21 +39305,11 @@ msgstr "你可以从<1>{EVERYONE_MENTION}身份组中移除<0>{readMessageHi msgid "You can sign back in at any time." msgstr "你可以随时重新登录。" -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "你仍可随时请此实例的管理员进行人工审核。" - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "你仍然可以创建账号或登录。如果稍后重新启用邀请,你可以使用同一个链接加入。" -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "你仍可随时发送邮件至 {supportEmail} 请求人工审核。" - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "你可以使用链接、表情和 Markdown。" @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "你无法在此处添加表情" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "禁言期间你无法添加新的反应。" @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "你不能加自己为好友" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "你无法在此处更改昵称" @@ -40094,7 +39422,7 @@ msgstr "你不能给自己发送好友请求。" msgid "You can't send messages in this channel." msgstr "你无法在此频道发送消息。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "你无法在此社区中发送消息。" @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "你没有权限对该成员执行此操作。" #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "你没有加入此语音频道的权限" @@ -40243,7 +39571,7 @@ msgstr "你没有重命名此表情的权限。名称已恢复为之前的名称 msgid "You have been banned from this community." msgstr "你已被此社区封禁。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "你已屏蔽 {username}。取消屏蔽后才能发送消息。" @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "你有未保存的更改。" #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "你有未保存的更改。请先保存或重置,然后再离开。" @@ -40270,7 +39598,7 @@ msgstr "你有未保存的更改。请先保存或重置,然后再离开。" msgid "You haven't authorized any applications to access your account." msgstr "你还没有授权任何应用访问你的账号。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "你加入此社区的时间还不够长,暂时无法发送消息。" @@ -40326,11 +39654,6 @@ msgstr "你必须同意服务条款才能创建账号" msgid "You must verify your email before sending a report." msgstr "发送举报前,请先验证你的邮箱。" -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "你需要能访问当前邮箱才能在此更改。如果可用,请使用手机验证,或联系支持团队。" - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "你需要“{manageRolesPermissionLabel}”权限才能编辑这些权 msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "你需要“{manageRolesPermissionLabel}”权限才能编辑这些权限。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "你需要“{manageWebhooksPermissionLabel}”权限才能查看和编辑此频道的 Webhook。" @@ -40384,18 +39707,14 @@ msgstr "你需要先认领账号,才能创建社区。" msgid "You need to claim your account before you can start a direct message." msgstr "你需要先认领账号,才能发起私信。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "你需要先认领账号才能发送私信。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "你需要先认领账号,才能在此社区中发送消息。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "你需要验证手机号才能在此社区中发送消息。" - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "你需要先验证邮箱地址,才能发起私信。" msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "你需要先验证邮箱,才能购买 {premiumProductFullName}。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "你需要验证邮箱才能在此社区中发送消息。" @@ -40424,11 +39743,6 @@ msgstr "你需要验证邮箱才能在此社区中发送消息。" msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "你或你正在添加的人已达到群聊数量上限。请先退出一个群聊,然后再试。" -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "你会留在 {ownedNames}。所有者无法离开自己的社区。" - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "你已被管理员设为拒听" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "授权后,你将跳转到 {redirectHostname}。" -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "你将离开此检查适用的 {count, plural, other {# 个社区}},你的账号将恢复正常。" - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "你将离开 {guildNames}。你发布的内容不会被删除,你之后可以重新加入。" - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "你仍需完成邮箱验证步骤。" - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "你的操作过于频繁" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "你的操作过于频繁。请稍候片刻,然后重试。" @@ -40636,7 +39935,7 @@ msgstr "你发送消息的速度太快了" msgid "You're streaming!" msgstr "你正在直播!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "你已被禁言。在禁言结束前,你无法发送消息、使用反应或加入语音。" @@ -40764,25 +40063,25 @@ msgstr "你的 {storeName} 续订付款失败,但<0/>在 <1>{graceDate} msgid "Your account" msgstr "你的账号" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "您的账号会立即恢复正常,届时您将不再需要手机号。这不是永久豁免,我们之后仍可能要求进行此验证。" - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "你的账号已成功关联。现在可以关闭此标签页并返回应用。" -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "你的账号已恢复正常。" +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "您的账户受限" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "您的账号已被限制。请检查您的电子邮件,了解如何解除限制。" #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "你的账号尚未认领。如果没有邮箱和密码,你将无法在其他设备上登录,并可能失去账号访问权限。请立即认领账号以保障安全。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "你的账号注册时间太短,无法在此社区中发送消息。" @@ -40800,11 +40099,6 @@ msgstr "你的账号需要多重身份验证,但此设备上未设置任何受 msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "使用密码登录时,你的账号将不再受双重认证保护。你还会失去在要求双重认证的社区中的高级权限。" -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "你的账号会立即恢复正常,不会移除任何内容。我们之后可能会再次要求进行此检查。" - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "正在检查你的银行卡,以确定本地价格。这通常需要一 msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "你的银行卡符合条件。正在将你跳转到付款页面。" -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "你的运营商称此号码未开通。请检查后重试,如果号码无误,请联系支持团队。" - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "你的更改将触达关注此频道的所有社群,这可能需要一分钟时间。每条已发布的动态允许快速编辑 3 次,之后每 20 分钟可编辑 1 次。" @@ -40869,21 +40158,6 @@ msgstr "你的设备将要求你为 {name} 保存更新的通行密钥。它将 msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "你的设备将要求你为 {name} 保存更新的通行密钥。请使用你刚才使用的同一部手机或安全密钥。" -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "你的邮箱地址已更新。" - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "你的邮箱无法接收邮件。请添加一个可用的邮箱,以便我们能联系到你。" - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "你的邮箱无法接收邮件。请更新邮箱以继续使用 {productName}。" - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "你的邮箱已验证。现在你可以登录账号了。" @@ -41000,21 +40274,11 @@ msgstr "消息更新失败" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "你最近一次购买已超出退款期限。如有账单问题,请联系支持团队。" -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "你的新邮箱" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "你的新昵称,留空则重置。" -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "您的号码未关联到您的账号。我们仅在有限时间内保留一个加密标记,不包含用户 ID。" - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "你的付款已取消。现在可以关闭此标签页并返回应用。" @@ -41054,11 +40318,6 @@ msgstr "你已购买的礼物" msgid "your region" msgstr "你的地区" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "你的注册需要先完成一项额外的反垃圾信息检查,然后才能继续。" - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/i18n/locales/zh-TW/messages.po b/fluxer_app/src/features/i18n/locales/zh-TW/messages.po index 9d82648aa..0c36f2f73 100644 --- a/fluxer_app/src/features/i18n/locales/zh-TW/messages.po +++ b/fluxer_app/src/features/i18n/locales/zh-TW/messages.po @@ -1059,7 +1059,7 @@ msgstr "{count, plural, one {# 個反應} other {# 個反應}}" msgid "{count, plural, one {# reactor} other {# reactors}}" msgstr "{count, plural, one {# 位反應者} other {# 位反應者}}" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:183 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:157 msgid "{count, plural, one {# second} other {# seconds}}" msgstr "{count, plural, one {# 秒} other {# 秒}}" @@ -1223,7 +1223,7 @@ msgid "{currentAttachmentNumber}/{totalAttachments}" msgstr "{currentAttachmentNumber}/{totalAttachments}" #. Custom status clear-time label. dayLabel is a relative day such as "today" or a formatted date; timeString is the localized time. -#: src/features/user/components/modals/CustomStatusModal.tsx:95 +#: src/features/user/components/modals/CustomStatusModal.tsx:96 msgid "{dayLabel} at {timeString}" msgstr "{dayLabel} {timeString}" @@ -1972,7 +1972,7 @@ msgid "{seconds, plural, one {Your invite link expires in # second.} other {Your msgstr "{seconds, plural, one {您的邀請連結將於 # 秒後過期。} other {您的邀請連結將於 # 秒後過期。}}" #. Generic multi-select summary label. selectedCount is the number of selected options. -#: src/features/ui/components/form/FormCombobox.tsx:79 +#: src/features/ui/components/form/FormCombobox.tsx:80 msgid "{selectedCount} selected" msgstr "已選取 {selectedCount} 個" @@ -2252,7 +2252,7 @@ msgstr "1 分鐘" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Fixed duration label for a one-month interval. Used as a standalone label in duration text or option lists. #. Gift purchase dialog option for a one-month gift. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:98 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:69 #: src/features/i18n/utils/CommonMessageDescriptors.ts:40 #: src/features/premium/components/modals/GiftPlutoniumModal.tsx:31 msgid "1 month" @@ -2335,7 +2335,7 @@ msgid "12 hours" msgstr "12 小時" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:110 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:81 msgid "12 months (1 year)" msgstr "12 個月(1 年)" @@ -2399,7 +2399,7 @@ msgstr "2FA" msgid "2FA backup" msgstr "雙重驗證備份" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:469 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:446 msgid "2FA requirement" msgstr "雙重驗證要求" @@ -2417,7 +2417,7 @@ msgid "3 members (typing)" msgstr "3 位成員(正在輸入)" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:102 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:73 msgid "3 months" msgstr "3 個月" @@ -2464,7 +2464,7 @@ msgid "6 hours" msgstr "6 小時" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:106 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:77 msgid "6 months" msgstr "6 個月" @@ -2575,11 +2575,6 @@ msgstr "1 分鐘" msgid "A new desktop version is available. Download the installer, then run it to update {productName}." msgstr "有新的桌面版本可用。請下載安裝程式並執行,以更新 {productName}。" -#. Toast confirmation shown after resending a verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:146 -msgid "A new verification code has been sent." -msgstr "新的驗證碼已寄出。" - #. Description for has:poll. Sentence case, no trailing punctuation. #: src/features/search/utils/SearchUtils.ts:53 msgid "a poll" @@ -2792,6 +2787,11 @@ msgstr "帳號資料" msgid "Account exists to spam, scam, or abuse the platform." msgstr "此帳號用於發送垃圾訊息、詐騙或濫用平台。" +#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:49 +msgid "Account limited" +msgstr "帳號受限" + #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccountSecuritySections.ts:124 msgid "Account removal" @@ -2803,14 +2803,12 @@ msgid "Account state" msgstr "帳號狀態" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:42 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:41 msgid "Account too new" msgstr "帳號太新" -#. Required-action modal title shown when an account-level verification step is required to proceed. #. Title of the error modal shown when an unclaimed (guest) account tries to accept a community or group DM invite. Auth-related; keep tone plain. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:8 -#: src/features/invite/commands/InviteCommands.tsx:34 +#: src/features/invite/commands/InviteCommands.tsx:35 msgid "Account verification required" msgstr "需要驗證帳號" @@ -3004,7 +3002,7 @@ msgid "Add a bot to a community with requested permissions" msgstr "將機器人新增至社群並授予要求的權限" #. Placeholder text in the optional comment field of the forward modal. -#: src/features/messaging/components/modals/ForwardModal.tsx:96 +#: src/features/messaging/components/modals/ForwardModal.tsx:98 msgid "Add a comment (optional)" msgstr "新增留言(選填)" @@ -3054,8 +3052,10 @@ msgstr "新增頻道主題" msgid "Add a word…" msgstr "新增字詞…" -#. Required-action modal carousel step title for replacing a bounced email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:388 +#. Nagbar button that opens the flow to replace an email address that bounced. Keep it concise. +#. Title of the modal that replaces an email address that bounced. Keep it concise. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:28 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:23 msgid "Add a working email" msgstr "新增可用的電子郵件" @@ -3087,7 +3087,7 @@ msgid "Add an account to continue." msgstr "新增帳號以繼續。" #. Body of the error modal shown when an unclaimed (guest) account tries to accept a community invite. Tells the user to complete sign-up first. -#: src/features/invite/commands/InviteCommands.tsx:39 +#: src/features/invite/commands/InviteCommands.tsx:40 msgid "Add an email and password to your account first." msgstr "請先為您的帳號新增電子郵件和密碼。" @@ -3424,11 +3424,6 @@ msgstr "新增日期:{createdDate} • 上次使用:{lastUsedDate}" msgid "Additional comments (optional)" msgstr "其他意見(選填)" -#. Required-action modal title for a generic additional verification step (e.g. anti-spam). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:36 -msgid "Additional verification required" -msgstr "需要額外驗證" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:22 @@ -3670,7 +3665,7 @@ msgstr "所有語言" #. Short label in the default notifications section. Keep it concise. #. Short label in the visual tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:20 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:86 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 #: src/features/i18n/utils/CommonMessageDescriptors.ts:348 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:21 msgid "All messages" @@ -3921,7 +3916,7 @@ msgid "Already set to cancel" msgstr "已排定取消" #. Toggle-switch label in the moderator delete-message confirmation dialog. When enabled, the message is reported (category: other) before being deleted. {productName} is the product name (e.g., Fluxer). -#: src/features/messaging/commands/MessageCommands.tsx:87 +#: src/features/messaging/commands/MessageCommands.tsx:88 msgid "Also report this message to the {productName} Safety Team" msgstr "同時將此訊息檢舉給 {productName} 安全團隊" @@ -4713,11 +4708,6 @@ msgstr "開始通話前詢問" msgid "Ask for a passkey after your password when you sign in" msgstr "登入時,在輸入密碼後要求使用通行金鑰" -#. Body of the human-review option in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:284 -msgid "Ask the administrators of this instance to review your account. This instance is run independently, and only its administrators can change your account." -msgstr "請向此實例的管理員申請審查您的帳號。此實例由其管理員獨立營運,只有他們能變更您的帳號。" - #. Short label in the theme studio. Keep it concise. #: src/features/theme_studio/ThemeStudio.tsx:56 msgid "Assets" @@ -5214,7 +5204,7 @@ msgstr "自動移除您傳送訊息中網址的追蹤參數(例如 utm_source msgid "Automatically remove tracking parameters from URLs in messages you send" msgstr "自動移除您傳送訊息中網址的追蹤參數" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:355 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:332 msgid "Automatically screen messages for explicit content in channels not marked for mature content." msgstr "自動篩選未標示為成人內容的頻道中,含有露骨內容的訊息。" @@ -5359,8 +5349,6 @@ msgstr "目前離開中" #: src/features/moderation/components/report_modal/IARModal.tsx:86 #: src/features/moderation/components/report/ReportStepDetails.tsx:312 #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:251 -#: src/features/user/components/modals/PhoneAddModal.tsx:417 -#: src/features/user/components/modals/PhoneAddModal.tsx:436 msgid "Back" msgstr "返回" @@ -6506,11 +6494,6 @@ msgstr "相機和虛擬擷取裝置要在 {productName} 中選取,而不是在 msgid "Cameras are off above {voiceChannelCameraUserLimit} participants" msgstr "參與者超過 {voiceChannelCameraUserLimit} 人時,相機會關閉" -#. Required-action modal carousel step title for email recovery options. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:252 -msgid "Can't access that email?" -msgstr "無法存取該電子郵件信箱?" - #. Title of the native dialog shown when the desktop app has repeatedly failed to load because it cannot reach the servers. #: src/features/platform/utils/DesktopLocaleBridge.ts:303 msgid "Can't connect" @@ -6575,13 +6558,14 @@ msgstr "無法在這裡上傳檔案" #: src/features/messaging/components/modals/AttachmentEditModal.tsx:133 #: src/features/messaging/components/modals/EditAltTextModal.tsx:190 #: src/features/messaging/components/modals/ExternalLinkWarningModal.tsx:111 -#: src/features/messaging/components/modals/ForwardModal.tsx:591 +#: src/features/messaging/components/modals/ForwardModal.tsx:597 #: src/features/messaging/components/modals/ImageCropModal.tsx:1025 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:107 #: src/features/moderation/components/modals/BanMemberModal.tsx:262 #: src/features/moderation/components/modals/RemoveTimeoutModal.tsx:70 #: src/features/moderation/components/modals/TimeoutMemberModal.tsx:126 #: src/features/theme/components/modals/ThemeAcceptModal.tsx:173 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:188 #: src/features/user/components/modals/EmailChangeModal.tsx:278 #: src/features/user/components/modals/EmailChangeModal.tsx:289 #: src/features/user/components/modals/EmailChangeModal.tsx:311 @@ -6590,7 +6574,6 @@ msgstr "無法在這裡上傳檔案" #: src/features/user/components/modals/PasswordChangeModal.tsx:226 #: src/features/user/components/modals/PasswordChangeModal.tsx:237 #: src/features/user/components/modals/PasswordChangeModal.tsx:255 -#: src/features/user/components/modals/PhoneAddModal.tsx:398 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:174 #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:33 #: src/features/voice/components/modals/CameraPreviewModal.tsx:846 @@ -6857,8 +6840,8 @@ msgstr "變更電子郵件" #. Short label in the custom status bottom sheet. Keep it concise. #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:44 -#: src/features/user/components/modals/CustomStatusModal.tsx:54 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:45 +#: src/features/user/components/modals/CustomStatusModal.tsx:55 msgid "Change emoji" msgstr "變更表情符號" @@ -7201,7 +7184,7 @@ msgstr "已將使用者上限從 {oldCount} 變更為 {newCount}" msgid "Changed the vanity URL from {oldCode} to {newCode}" msgstr "已將自訂網址從 {oldCode} 變更為 {newCode}" -#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium, High or Very high. +#. Activity log detail line under a community settings update, shown when the member verification level changed. It continues the entry summary, so it has no subject. It is a past tense record of a change the actor in the summary already made, never an instruction to the reader. Do not write it as a command, a button label or in first or second person. {oldLevel} is the previous level and {newLevel} is the new level, each shown as None, Low, Medium or High. #: src/features/guild/utils/guild_tabs/audit_log/AuditLogGuildMessages.ts:241 msgid "Changed the verification level from {oldLevel} to {newLevel}" msgstr "已將驗證等級從 {oldLevel} 變更為 {newLevel}" @@ -7373,7 +7356,7 @@ msgid "Channel or category" msgstr "頻道或類別" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:48 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:42 msgid "Channel permission overrides" msgstr "頻道權限覆寫" @@ -7509,8 +7492,6 @@ msgstr "請檢查您的連線,然後再試一次。" msgid "Check your connection, then try again." msgstr "請檢查您的連線,然後再試一次。" -#. Required-action modal carousel step title for existing-email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:240 #: src/features/auth/components/pages/ForgotPasswordPage.tsx:55 #: src/features/auth/flow/IpAuthorizationScreen.tsx:120 msgid "Check your email" @@ -7632,11 +7613,6 @@ msgstr "在系統選取器中選擇一個顯示器" msgid "Choose a GIF" msgstr "選擇 GIF" -#. Required-action modal carousel step title for choosing email or phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:232 -msgid "Choose a method" -msgstr "選擇方式" - #: src/features/user/components/modals/PasswordChangeModal.tsx:179 msgid "Choose a new password." msgstr "請選擇新密碼。" @@ -7680,8 +7656,8 @@ msgstr "選擇一個動作。" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:48 -#: src/features/user/components/modals/CustomStatusModal.tsx:58 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:49 +#: src/features/user/components/modals/CustomStatusModal.tsx:59 msgid "Choose an emoji" msgstr "選擇表情符號" @@ -7749,11 +7725,6 @@ msgstr "選擇您的實例運作方式" msgid "Choose one of the methods below to prove domain ownership. You only need to complete one." msgstr "請選擇以下其中一種方式來驗證網域所有權。您只需完成其中一種即可。" -#. Required-action modal intro text when email or phone verification can satisfy the requirement. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:220 -msgid "Choose one verification method. Either method can clear this check." -msgstr "請選擇一種驗證方式。任一種方式皆可通過此檢查。" - #. Modal title for the payment method picker (local card vs alternative method). #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:212 msgid "Choose payment method" @@ -7797,7 +7768,7 @@ msgstr "選擇「{clientLabel}」可以在您的社群中執行哪些操作。 msgid "Choose what friends see in their active now panel" msgstr "選擇好友在「目前在線上」面板中會看到什麼" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:311 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:292 msgid "Choose what members must have before they can post or DM community members." msgstr "選擇成員發文或傳送私訊給社群成員前,必須具備的條件。" @@ -8030,8 +8001,8 @@ msgstr "讓您的麥克風更清晰地收音。" msgid "Clear" msgstr "清除" -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:274 -#: src/features/user/components/modals/CustomStatusModal.tsx:397 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:277 +#: src/features/user/components/modals/CustomStatusModal.tsx:400 msgid "Clear after" msgstr "清除時間" @@ -8053,7 +8024,7 @@ msgstr "清除所有附件模擬" msgid "Clear all token overrides" msgstr "清除所有主題變數覆寫" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:380 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:277 msgid "Clear attachment mocks" msgstr "清除附件模擬資料" @@ -8066,14 +8037,14 @@ msgstr "清除指令" #. Button or menu action label in the custom status bottom sheet. Keep it concise. #. Button or menu action label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:52 -#: src/features/user/components/modals/CustomStatusModal.tsx:62 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:53 +#: src/features/user/components/modals/CustomStatusModal.tsx:63 #: src/features/user/components/modals/StatusChangeBottomSheet.tsx:236 msgid "Clear custom status" msgstr "清除自訂狀態" #. Body of the confirmation alert shown when clearing every reaction on a message. -#: src/features/channel/components/MessageActionUtils.tsx:76 +#: src/features/channel/components/MessageActionUtils.tsx:77 msgid "Clear every reaction from this message?" msgstr "要清除此訊息的所有反應嗎?" @@ -8124,7 +8095,7 @@ msgstr "清除搜尋輸入" #. Accessible label for the combobox clear button. #. Button or menu action label in the authorized apps tab. Keep it concise. #. Button or menu action label in the devices tab. Keep it concise. -#: src/features/ui/components/form/FormCombobox.tsx:91 +#: src/features/ui/components/form/FormCombobox.tsx:92 #: src/features/user/components/modals/tabs/AuthorizedAppsTab.tsx:46 #: src/features/user/components/modals/tabs/DevicesTab.tsx:61 msgid "Clear selection" @@ -8435,10 +8406,8 @@ msgstr "煤炭主題" #. Input label for a one-time authenticator app verification code. #. Input label for a one-time authenticator or backup code. -#. Label for an inbound phone verification code shown in the required-action modal. #: src/features/auth/components/modals/MfaTotpDisableModal.tsx:26 #: src/features/auth/components/modals/MfaTotpEnableModal.tsx:36 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:462 #: src/features/invite/components/InviteListItem.tsx:77 #: src/features/moderation/components/report/ReportBreadcrumbs.tsx:29 msgid "Code" @@ -8629,17 +8598,17 @@ msgid "Commands" msgstr "指令" #. Helper text in the forward modal explaining why the optional comment field is disabled when at least one selected target has slowmode active. -#: src/features/messaging/components/modals/ForwardModal.tsx:68 +#: src/features/messaging/components/modals/ForwardModal.tsx:70 msgid "Comments are disabled because one or more selected channels have slowmode on. The comment would be blocked by slowmode right after the forward." msgstr "由於所選頻道中至少有一個已開啟慢速模式,留言功能已停用。轉傳後,留言會立即被慢速模式阻擋。" #. Helper text in the forward modal explaining why the optional comment field is disabled for a single selected channel with slowmode. -#: src/features/messaging/components/modals/ForwardModal.tsx:62 +#: src/features/messaging/components/modals/ForwardModal.tsx:64 msgid "Comments are disabled because slowmode is on in {forwardChannelDisplayName}. The comment would be blocked by slowmode right after the forward." msgstr "由於「{forwardChannelDisplayName}」已開啟慢速模式,留言功能已停用。轉傳後,留言會立即被慢速模式阻擋。" #. Tooltip on the disabled comment field in the forward modal when slowmode blocks comments. -#: src/features/messaging/components/modals/ForwardModal.tsx:92 +#: src/features/messaging/components/modals/ForwardModal.tsx:94 msgid "Comments are unavailable while slowmode is on." msgstr "慢速模式開啟時無法留言。" @@ -8670,11 +8639,11 @@ msgstr "社群" msgid "Communities and channels where you can't manage webhooks are hidden." msgstr "無法管理網頁掛鉤的社群和頻道將會隱藏。" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:365 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:342 msgid "Communities listed in Discovery are required to scan messages from all members. This setting cannot be changed while Discovery is enabled." msgstr "在探索中列出的社群必須掃描所有成員的訊息。啟用探索時無法變更此設定。" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:320 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:301 msgid "Communities listed in Discovery require at least email verification. None cannot be selected while Discovery is enabled." msgstr "在探索中列出的社群至少需要驗證電子郵件。啟用探索時,無法選擇「無」。" @@ -8827,7 +8796,7 @@ msgstr "社群名稱" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:125 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:126 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:113 msgid "Community nickname" msgstr "社群暱稱" @@ -8880,7 +8849,7 @@ msgid "Community profile" msgstr "社群個人檔案" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:72 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:73 msgid "Community profile updated" msgstr "社群個人檔案已更新" @@ -8907,7 +8876,7 @@ msgstr "社群未讀標記等級" #. Audit log entry label. Past-tense action describing that the community settings were changed. #. Short label in the guild overview tab utils helper. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:8 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:215 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:204 #: src/features/guild/utils/guild_tabs/GuildOverviewTabUtils.tsx:35 msgid "Community updated" msgstr "社群已更新" @@ -8952,11 +8921,6 @@ msgstr "比較" msgid "Complete mature content check" msgstr "完成成人內容檢查" -#. Required-action modal body when either of two verification paths is acceptable. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:74 -msgid "Complete one of the verification paths below to continue using {productName}." -msgstr "請完成以下其中一個驗證路徑,以繼續使用 {productName}。" - #. Modal title for the mobile checkout confirmation when opening the payment provider in a browser. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:194 msgid "Complete payment" @@ -8966,16 +8930,6 @@ msgstr "完成付款" msgid "Complete the mature content check to unlock mature media." msgstr "完成成人內容檢查以解鎖成人媒體。" -#. Required-action modal body when both email and phone verification are required. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:79 -msgid "Complete the required email and phone verification steps below to continue using {productName}." -msgstr "請完成下方所需的電子郵件和電話驗證步驟,以繼續使用 {productName}。" - -#. Required-action modal body. Generic instructions to complete verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:40 -msgid "Complete the required verification to continue using {productName}." -msgstr "請完成必要的驗證,以繼續使用 {productName}。" - #. Label in the premium badge settings. Preserve {premiumProductName}; it is inserted by code. Keep the tone plain and specific. #: src/features/user/components/modals/tabs/my_profile_tab/PremiumBadgeSettings.tsx:16 msgid "Completely hide your {premiumProductName} badge from other users" @@ -9098,6 +9052,7 @@ msgstr "設定您的個人檔案徽章" #. Action label for confirming a mass mention that may notify many people. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/MentionEveryonePopout.tsx:185 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:212 #: src/features/user/components/modals/EmailChangeModal.tsx:340 #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:471 msgid "Confirm" @@ -9334,7 +9289,7 @@ msgid "Connections reordered" msgstr "連結已重新排序" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:94 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:65 msgid "Consent required" msgstr "需要同意" @@ -9349,16 +9304,6 @@ msgstr "使用範圍和權限建構授權網址。" msgid "Contact" msgstr "聯絡方式" -#. Link label in the required-action modal. Opens an email to Fluxer support. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:264 -msgid "Contact support" -msgstr "聯絡客服" - -#. Shown in the required-action modal on a self-hosted instance in place of the Contact support link. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:268 -msgid "Contact the administrators of this instance for help." -msgstr "如需協助,請聯絡此實例的管理員。" - #. Short label in the authentication content blocked handler. Keep the tone plain and specific. #: src/features/auth/components/ContentBlockedHandler.tsx:10 msgid "Content blocked" @@ -9374,7 +9319,7 @@ msgstr "內容創作者" msgid "Content filter" msgstr "內容篩選" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:349 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:326 msgid "Content filtering" msgstr "內容篩選" @@ -9384,7 +9329,7 @@ msgid "Content hint" msgstr "內容提示" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:84 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:58 msgid "Content safety gates" msgstr "內容安全閘門" @@ -9416,12 +9361,10 @@ msgstr "按一下左鍵(在按鈕上)或按一下右鍵(在其他元素上 #. Button that confirms signing out selected saved devices. #. Generic primary button label that advances a multi-step flow. #. OAuth authorization primary button. Advances to the next step after choosing an account. -#. Primary button in the required-action modal. Continues the current verification path. #: src/features/auth/components/modals/BackupCodesRegenerateModal.tsx:107 #: src/features/auth/components/modals/BackupCodesViewModal.tsx:181 #: src/features/auth/components/modals/DeviceRevokeModal.tsx:75 #: src/features/auth/components/modals/PasskeyPinModal.tsx:111 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:162 #: src/features/auth/components/pages/oauth_authorize_page/OAuthAccountStep.tsx:34 #: src/features/auth/flow/HandoffApprovalFlow.tsx:109 #: src/features/connection/components/modals/AddConnectionModal.tsx:384 @@ -9507,7 +9450,7 @@ msgstr "控制頻道列表中已靜音頻道的未讀指示行為。" msgid "Control which chat updates are announced by assistive technology." msgstr "控制輔助技術會播報哪些聊天更新。" -#: src/features/channel/components/channel_view/DMChannelView.tsx:260 +#: src/features/channel/components/channel_view/DMChannelView.tsx:262 msgid "Conversation not found" msgstr "找不到對話" @@ -9955,12 +9898,12 @@ msgid "Couldn't add tag" msgstr "無法新增標籤" #. Body of the generic fallback error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:23 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:24 msgid "Couldn't add this friend to the group. Please try again." msgstr "無法將這位好友新增到群組。請再試一次。" #. Title of the error modal shown when adding a friend to a group DM fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:11 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:12 msgid "Couldn't add to group" msgstr "無法新增至群組" @@ -10055,7 +9998,7 @@ msgid "Couldn't create a theme link" msgstr "無法建立主題連結" #. Title of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:28 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:29 msgid "Couldn't create invite link" msgstr "無法建立邀請連結" @@ -10132,7 +10075,7 @@ msgid "Couldn't end your grace period" msgstr "無法結束寬限期" #. Body of the error modal shown when generating a group DM invite link fails. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:32 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:33 msgid "Couldn't generate an invite link. Please try again." msgstr "無法產生邀請連結。請再試一次。" @@ -10229,7 +10172,7 @@ msgid "Couldn't process image" msgstr "無法處理圖片" #. Title of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:119 +#: src/features/messaging/commands/MessageCommands.tsx:120 msgid "Couldn't publish this message" msgstr "無法發布此訊息" @@ -10264,7 +10207,7 @@ msgid "Couldn't rejoin the Visionary community" msgstr "無法重新加入 Visionary 社群" #. Error message in the use entrance sound. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:55 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:56 msgid "Couldn't remove entrance sound" msgstr "無法移除進場音效" @@ -10324,7 +10267,7 @@ msgid "Couldn't save channel settings" msgstr "無法儲存頻道設定" #. Error message in the use entrance sound. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:47 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:48 msgid "Couldn't save entrance sound" msgstr "無法儲存進場音效" @@ -10501,17 +10444,10 @@ msgid "Couldn't withdraw application" msgstr "無法撤回申請" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:40 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:34 msgid "Countdown timer" msgstr "倒數計時器" -#. Form field label for the country selector in the phone verification step. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:92 -#: src/features/user/components/modals/PhoneAddModal.tsx:57 -msgid "Country" -msgstr "國家/地區" - #. Field label on the details step of the DSA report form. The country where the reporter resides, used for the legal declaration. #: src/features/moderation/components/report/ReportStepDetails.tsx:62 msgid "Country of residence" @@ -10687,8 +10623,8 @@ msgstr "建立管理員帳號" msgid "Create the group DM with the remaining {addableCount, plural, one {# recipient} other {# recipients}} and skip the others?" msgstr "要建立包含{addableCount, plural, one {其餘 # 位收件者} other {其餘 # 位收件者}}的群組私訊,並略過其他收件者嗎?" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:145 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:202 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:147 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:204 msgid "Create webhook" msgstr "建立 Webhook" @@ -10948,7 +10884,7 @@ msgstr "來自社群的自訂表情符號 {emojiName}" #. Error modal body shown when custom entrance sounds are disabled on the instance. #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:471 -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:71 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:72 msgid "Custom entrance sounds are not enabled on this instance." msgstr "此實例未啟用自訂入場音效。" @@ -11108,7 +11044,7 @@ msgstr "自訂語音處理" #. Channel overview settings tab label, control, or validation message (name, topic, slowmode, voice region, mature content gate). #. Textarea label in the community moderation settings tab for the custom content warning shown to members. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:45 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:149 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:139 msgid "Custom warning text" msgstr "自訂警告文字" @@ -11530,11 +11466,6 @@ msgstr "預設搜尋引擎" msgid "Default shortcuts" msgstr "預設快速鍵" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:72 -msgid "Default tab" -msgstr "預設分頁" - #. Short label in the search engines tab. Keep it concise. #: src/features/user/components/modals/tabs/chat_settings_tab/SearchEnginesTab.tsx:77 msgid "Default translator" @@ -11580,7 +11511,7 @@ msgstr "德拉瓦州" #: src/features/emoji/components/emojis/EmojiListItem.tsx:204 #: src/features/emoji/components/emojis/EmojiListItem.tsx:216 #: src/features/emoji/components/stickers/StickerGridItem.tsx:35 -#: src/features/messaging/commands/MessageCommands.tsx:83 +#: src/features/messaging/commands/MessageCommands.tsx:84 #: src/features/moderation/components/report_modal/IARModalCopy.ts:109 #: src/features/platform/utils/DesktopLocaleBridge.ts:77 #: src/features/theme_studio/sections/LibrarySection.tsx:645 @@ -11829,12 +11760,12 @@ msgid "Delete this message" msgstr "刪除此訊息" #. Error message in the messaging commands. Keep the tone plain and specific. -#: src/features/messaging/commands/MessageCommands.tsx:79 +#: src/features/messaging/commands/MessageCommands.tsx:80 msgid "Delete this message? Can't be undone." msgstr "要刪除這則訊息嗎?此動作無法復原。" #. Body of the delete confirmation for a message that was published from an announcement channel to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:92 +#: src/features/messaging/commands/MessageCommands.tsx:93 msgid "Delete this message? Can't be undone. This message is also removed from every community that follows this channel." msgstr "刪除此訊息?無法復原。此訊息也會從所有追蹤此頻道的社群中移除。" @@ -12164,7 +12095,7 @@ msgid "Developer mode" msgstr "開發人員模式" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:284 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 msgid "Developer option" msgstr "開發人員選項" @@ -12299,7 +12230,7 @@ msgstr "直接輸入" #. Generic singular label for a direct message conversation (distinct from the plural DIRECT_MESSAGES section heading). #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/channel/components/bottomsheets/channel_details_bottom_sheet/ChannelDetailsBottomSheetShared.ts:14 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:398 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:295 #: src/features/i18n/utils/CommonMessageDescriptors.ts:572 #: src/features/user/components/settings_utils/section_registry/SharedDescriptors.ts:94 msgid "Direct message" @@ -12712,7 +12643,7 @@ msgstr "顯示模式" #. Short label in the inputs tab. Keep it concise. #. Short label in the my profile tab. Keep it concise. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:22 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:137 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:138 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:61 msgid "Display name" msgstr "顯示名稱" @@ -12858,7 +12789,7 @@ msgstr "你想加入 {communityName} 嗎?" #. Label in the accessibility tab. #. Label in the my profile tab. #: src/features/user/components/modals/tabs/AccessibilityTab.tsx:54 -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:145 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:146 msgid "Doc, I'm from the future. I came here in a time machine that you invented. Now, I need your help to get back to the year 1985." msgstr "博士,我來自未來。我搭乘您發明的時光機來到這裡。現在,我需要您的幫助才能回到 1985 年。" @@ -13471,7 +13402,7 @@ msgid "Edit profile local time" msgstr "編輯個人檔案當地時間" #. Title of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:98 +#: src/features/messaging/commands/MessageCommands.tsx:99 msgid "Edit published message?" msgstr "編輯已發布的訊息?" @@ -13539,7 +13470,7 @@ msgid "Edit your messages above or below" msgstr "編輯上方或下方的訊息" #. Button or menu action label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:92 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:93 msgid "Edit your profile appearance and see a live preview" msgstr "編輯個人檔案外觀並查看即時預覽" @@ -13590,10 +13521,8 @@ msgstr "在 {windowEndsOn} 前可申請退款。這也會立即取消您的訂 msgid "Email" msgstr "電子郵件" -#. Label for the current account email shown in the required-action modal. #. Short label in the inputs tab. Keep it concise. #. Short label in the moderation report step email. Keep it concise. Keep the tone plain and specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:248 #: src/features/moderation/components/report/ReportStepEmail.tsx:11 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:55 #: src/features/user/components/modals/tabs/account_security_tab/AccountTab.tsx:110 @@ -13607,6 +13536,8 @@ msgid "Email address required." msgstr "必須填寫電子郵件地址。" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:43 #: src/features/user/components/modals/EmailChangeModal.tsx:35 msgid "Email changed" msgstr "電子郵件已變更" @@ -13616,49 +13547,17 @@ msgstr "電子郵件已變更" msgid "Email delivery" msgstr "電子郵件遞送" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:62 -msgid "Email or phone" -msgstr "電子郵件或電話號碼" - -#. Required-action modal title shown when either email or phone needs reverification (user chooses). -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:32 -msgid "Email or phone re-verification required" -msgstr "需要重新驗證電子郵件或電話號碼" - -#. Required-action modal title shown when the email address must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:16 -msgid "Email re-verification required" -msgstr "需要重新驗證電子郵件" - #. Account switcher fallback when an account's email is unknown. #: src/features/auth/components/accounts/AccountListItem.tsx:16 msgid "Email unavailable" msgstr "無法取得電子郵件" -#. Required-action error shown when email update cannot continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:518 -msgid "Email update is unavailable right now. Try again later or contact support." -msgstr "目前無法更新電子郵件。請稍後再試,或聯絡客服。" - -#. Required-action modal title shown when the user must update their email address to continue. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:12 -msgid "Email update required" -msgstr "需要更新電子郵件" - -#. Body of the human-review option in the required-action modal, rendered directly above the Contact support link. Sets the expectation that a reply takes time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:278 -msgid "Email us and a person will review your account. Tell us you cannot verify by SMS and we will take it from there. Replies come by email, so this is not instant." -msgstr "請透過電子郵件與我們聯繫,將由專人審核您的帳號。請告知我們您無法透過 SMS 驗證,後續事宜將由我們處理。我們將透過電子郵件回覆,因此處理過程並非即時。" - #. Developer control label for the email-verification banner. #: src/features/devtools/components/NagbarControls.ts:36 msgid "Email verification nagbar" msgstr "電子郵件驗證提示列" -#. Required-action modal title shown when the email address must be verified for the first time. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:83 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:20 msgid "Email verification required" msgstr "需要驗證電子郵件" @@ -13675,6 +13574,10 @@ msgstr "覆寫電子郵件驗證" msgid "Email verified successfully" msgstr "電子郵件驗證成功" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:133 +msgid "Emails to your current address are not being delivered. Enter a new email and we'll send a code there." +msgstr "目前地址的電子郵件無法送達。請輸入新電子郵件,我們會將驗證碼寄到那裡。" + #. Screen-reader fragment listing one embed on a message. Lowercase because it appears inside a longer sentence. #: src/features/channel/components/ChannelMessage.tsx:61 msgid "embed" @@ -13728,12 +13631,12 @@ msgid "Embeds" msgstr "嵌入內容" #. Toast confirmation after hiding link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:88 +#: src/features/channel/components/MessageActionUtils.tsx:89 msgid "Embeds suppressed" msgstr "已隱藏嵌入內容" #. Toast confirmation after re-enabling link previews and embeds on a message. -#: src/features/channel/components/MessageActionUtils.tsx:84 +#: src/features/channel/components/MessageActionUtils.tsx:85 msgid "Embeds unsuppressed" msgstr "已取消隱藏嵌入內容" @@ -13883,7 +13786,7 @@ msgid "Enable /tts speech playback" msgstr "啟用 /tts 語音播放" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the owner has not enabled 2FA on their own account. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:43 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:42 msgid "Enable 2FA on your account to change this setting" msgstr "請先為您的帳號啟用雙重驗證,才能變更此設定" @@ -14287,8 +14190,6 @@ msgid "Enter a valid {theOtherPlatform} template URL or code." msgstr "請輸入有效的 {theOtherPlatform} 範本網址或代碼。" #. Inline validation error on the email step of the DSA report flow when the email is malformed. -#. Required-action form error for an invalid email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:506 #: src/features/moderation/components/pages/ReportPage.tsx:59 msgid "Enter a valid email address." msgstr "請輸入有效的電子郵件地址。" @@ -14298,33 +14199,11 @@ msgstr "請輸入有效的電子郵件地址。" msgid "Enter a valid message link." msgstr "請輸入有效的訊息連結。" -#. Required-action form error for an invalid phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:522 -msgid "Enter a valid mobile phone number." -msgstr "請輸入有效的行動電話號碼。" - -#. Form validation error shown when the entered phone number cannot be parsed. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:108 -#: src/features/user/components/modals/PhoneAddModal.tsx:45 -msgid "Enter a valid phone number" -msgstr "請輸入有效的電話號碼" - #. Description text in the channel and chat add friend form. Preserve {exampleFluxerTagFull}; it is inserted by code. #: src/features/channel/components/direct_message/AddFriendForm.tsx:32 msgid "Enter a valid username ({exampleFluxerTagFull})." msgstr "請輸入有效的使用者名稱({exampleFluxerTagFull})。" -#. Required-action modal body for entering a replacement email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:392 -msgid "Enter an email address you can access. We will send a code there." -msgstr "請輸入您能收信的電子郵件地址。我們會將驗證碼傳送到該地址。" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:70 -msgid "Enter code" -msgstr "輸入代碼" - #. Tooltip / aria label on the fullscreen toggle in the compact voice call tile (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the media player (not in fullscreen). #. Tooltip / aria label on the fullscreen toggle in the voice call view (not in fullscreen). @@ -14339,11 +14218,6 @@ msgstr "進入全螢幕" msgid "Enter gift code…" msgstr "輸入禮物代碼…" -#. Required-action modal carousel step title for changing to a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:396 -msgid "Enter new email" -msgstr "輸入新電子郵件" - #. MFA code entry instructions shown when the account uses passkeys as its second factor. #: src/features/auth/flow/MfaScreen.tsx:42 msgid "Enter one of your backup codes if you can't use your passkey." @@ -14354,11 +14228,6 @@ msgstr "如果您無法使用通行金鑰,請輸入其中一組備用碼。" msgid "Enter one of your backup codes." msgstr "請輸入其中一組備用碼。" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:66 -msgid "Enter phone" -msgstr "輸入電話號碼" - #. Tooltip / aria label on the picture-in-picture toggle in the media player (not in PiP). #: src/features/voice/components/media_player/components/MediaPipButton.tsx:17 msgid "Enter picture-in-picture" @@ -14384,16 +14253,6 @@ msgstr "請輸入驗證器應用程式中的 {digitCount} 位數驗證碼,或 msgid "Enter the {digitCount}-digit code from your authenticator app." msgstr "請輸入驗證器應用程式中的 {digitCount} 位數驗證碼。" -#. Required-action modal body for entering an SMS code. digitCount and phoneNumber are inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:430 -msgid "Enter the {digitCount}-digit code sent to {phoneNumber}." -msgstr "請輸入傳送至 {phoneNumber} 的 {digitCount} 位數驗證碼。" - -#. placeholder {0}: getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone -#: src/features/user/components/modals/PhoneAddModal.tsx:373 -msgid "Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to {0}." -msgstr "請輸入傳送到 {0} 的 {MFA_CODE_DIGIT_COUNT} 位數驗證碼。" - #: src/features/auth/flow/HandoffApprovalFlow.tsx:118 msgid "Enter the code" msgstr "輸入驗證碼" @@ -14408,11 +14267,6 @@ msgstr "請先輸入驗證碼再繼續。" msgid "Enter the code from your authenticator app." msgstr "請輸入驗證器應用程式中的代碼。" -#. Required-action modal body for entering a code sent to a new email address. emailAddress is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:408 -msgid "Enter the code sent to {emailAddress}." -msgstr "輸入傳送至 {emailAddress} 的驗證碼。" - #: src/features/user/components/modals/EmailChangeModal.tsx:198 msgid "Enter the code sent to your current email." msgstr "請輸入傳送到您目前電子郵件的驗證碼。" @@ -14426,6 +14280,7 @@ msgstr "請輸入寄到您電子郵件地址的驗證碼。" msgid "Enter the code shown in the app to continue." msgstr "請輸入應用程式中顯示的代碼以繼續。" +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:157 #: src/features/user/components/modals/EmailChangeModal.tsx:244 msgid "Enter the code we emailed to your new address." msgstr "請輸入我們寄到您新信箱的驗證碼。" @@ -14434,11 +14289,6 @@ msgstr "請輸入我們寄到您新信箱的驗證碼。" msgid "Enter the code we sent to your email to verify it. Your password will be set once the code is confirmed." msgstr "請輸入我們寄到您電子郵件的驗證碼。驗證碼確認後,您的密碼就會設定完成。" -#. Required-action modal carousel step title for entering an email verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:404 -msgid "Enter the email code" -msgstr "輸入電子郵件驗證碼" - #: src/features/guild/components/modals/add_guild_modal/GuildJoinForm.tsx:76 msgid "Enter the invite link to join a community." msgstr "輸入邀請連結以加入社群。" @@ -14452,11 +14302,6 @@ msgstr "請輸入您想使用的新電子郵件。我們稍後會將驗證碼傳 msgid "Enter the PIN for your security key to continue." msgstr "請輸入安全金鑰的 PIN 以繼續。" -#. Required-action modal carousel step title for entering a phone SMS verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:426 -msgid "Enter the SMS code" -msgstr "輸入簡訊驗證碼" - #: src/features/auth/flow/HandoffCodeDisplay.tsx:132 msgid "Enter this code in your browser to complete sign-in." msgstr "請在瀏覽器中輸入此代碼以完成登入。" @@ -14492,11 +14337,6 @@ msgstr "輸入您的名字" msgid "Enter your password." msgstr "請輸入您的密碼。" -#. Required-action modal carousel step title for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:413 -msgid "Enter your phone number" -msgstr "輸入您的電話號碼" - #. Discovery category dropdown option in the community Discovery settings tab. #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:84 msgid "Entertainment" @@ -14528,22 +14368,22 @@ msgid "Entrance sound" msgstr "進場音效" #. Error modal body shown when an entrance sound upload exceeds the client-side size limit. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:35 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:36 msgid "Entrance sound files must be {limit} or less." msgstr "進場音效檔案大小必須為 {limit} 或更小。" #. Title of the error modal shown when the entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:59 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:60 msgid "Entrance sound library full" msgstr "進場音效庫已滿" #. Short label in the use entrance sound. Keep it concise. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:51 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:52 msgid "Entrance sound removed" msgstr "已移除進場音效" #. Short label in the use entrance sound. Keep it concise. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:43 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:44 msgid "Entrance sound saved" msgstr "已儲存進場音效" @@ -14560,7 +14400,7 @@ msgid "Entrance sounds" msgstr "進場音效" #. Title of the error modal shown when custom entrance sounds are disabled on the instance. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:67 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:68 msgid "Entrance sounds unavailable" msgstr "無法使用進場音效" @@ -14870,7 +14710,7 @@ msgid "Expires:" msgstr "到期時間:" #. Accessible label for the explicit content filter radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:128 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 msgid "Explicit content filter setting" msgstr "露骨內容篩選設定" @@ -15016,7 +14856,7 @@ msgid "Failed to copy to clipboard" msgstr "無法複製到剪貼簿" #. Error message in the channel webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:37 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:38 msgid "Failed to create webhook" msgstr "建立 Webhook 失敗" @@ -15117,7 +14957,7 @@ msgid "Failed to load vanity URL. Try again." msgstr "載入自訂網址失敗。請再試一次。" #. Error message in the guild webhooks tab. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:157 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:159 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:26 msgid "Failed to load webhooks" msgstr "載入 Webhook 失敗" @@ -15190,11 +15030,6 @@ msgstr "無法移除自訂網址。請再試一次。" msgid "Failed to resend code. Try again." msgstr "無法重新傳送驗證碼。請再試一次。" -#. Toast error shown when resending the verification code fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:150 -msgid "Failed to resend verification code. Try again later." -msgstr "無法重新傳送驗證碼。請稍後再試。" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/ToolsMenu.tsx:74 msgid "Failed to reset premium state." @@ -15220,11 +15055,6 @@ msgstr "訊息傳送失敗。長按可顯示選項。" msgid "Failed to send report. Try again." msgstr "無法傳送檢舉。請再試一次。" -#. Toast error shown when sending the verification email fails. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:142 -msgid "Failed to send verification email. Try again later." -msgstr "傳送驗證電子郵件失敗。請稍後再試。" - #: src/features/app/components/BootstrapErrorScreen.tsx:43 msgid "Failed to start" msgstr "啟動失敗" @@ -15551,15 +15381,15 @@ msgstr "依使用者篩選" #. Activity log value for the explicit content filter setting that filters messages from every member. #. Explicit content filter option in the community moderation settings tab. Filters messages from every member regardless of role. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:118 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:82 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:78 msgid "Filter everyone" msgstr "篩選所有人" #. Activity log value for the explicit content filter setting that filters messages from members who have no roles. #. Explicit content filter option in the community moderation settings tab. Filters messages from members who have no roles assigned. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:108 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:77 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 msgid "Filter members without roles" msgstr "篩選沒有身分組的成員" @@ -15757,7 +15587,7 @@ msgid "Follow this channel" msgstr "追蹤此頻道" #. Shown instead of the message composer in an announcement channel where the user cannot send messages. -#: src/features/channel/components/barriers/BarrierComponents.tsx:323 +#: src/features/channel/components/barriers/BarrierComponents.tsx:315 msgid "Follow to get these announcements in a channel you choose." msgstr "追蹤以在您選擇的頻道中接收這些公告。" @@ -15773,7 +15603,7 @@ msgstr "已關注頻道 {currentName}" #. Section heading in the channel webhook settings that lists announcement channels this channel follows. #. Section heading in the community webhook settings that lists announcement channels followed into this community. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:220 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:222 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:189 msgid "Followed channels" msgstr "追蹤的頻道" @@ -15857,11 +15687,6 @@ msgstr "限英國地區觀看…" msgid "For me" msgstr "自己使用" -#. Required-action modal body for starting an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:438 -msgid "For this check, you send us a text message instead of receiving one from us." -msgstr "這次驗證,您需要傳送簡訊給我們,而不是接收我們的簡訊。" - #: src/features/auth/components/modals/SudoVerificationModal.tsx:268 msgid "For your security, please confirm it's you to continue." msgstr "為了您的帳戶安全,請驗證是您本人操作,才能繼續。" @@ -15905,7 +15730,7 @@ msgstr "強制顯示載入骨架" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:212 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:281 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:190 msgid "Force mature media" msgstr "強制成人媒體" @@ -15914,7 +15739,7 @@ msgid "Force move to AFK channel" msgstr "強制移至閒置頻道" #. Developer tools checkbox label. permissionName is a permission constant display name. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:44 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:38 msgid "Force no {permissionName} permission" msgstr "強制不授予「{permissionName}」權限" @@ -15948,7 +15773,7 @@ msgstr "強制顯示自訂網址免責聲明" msgid "Force show voice connection" msgstr "強制顯示語音連線" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:174 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:148 msgid "Force slowmode active" msgstr "強制啟用慢速模式" @@ -16020,7 +15845,7 @@ msgstr "轉傳媒體" #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the forward message modal. #: src/features/input/state/input_keybind/shared.ts:33 -#: src/features/messaging/components/modals/ForwardModal.tsx:83 +#: src/features/messaging/components/modals/ForwardModal.tsx:85 msgid "Forward message" msgstr "轉傳訊息" @@ -16440,7 +16265,7 @@ msgid "Geo block overlay" msgstr "地理封鎖重疊畫面" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:86 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:57 msgid "Geo restricted" msgstr "受地理區域限制" @@ -16490,12 +16315,6 @@ msgstr "取得動畫頭像和橫幅、訂閱者徽章、您想要的四位數標 msgid "Get monthly" msgstr "每月訂閱" -#. Button in the required-action modal. Requests a new inbound SMS challenge code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:202 -#: src/features/user/components/modals/PhoneAddModal.tsx:424 -msgid "Get new code" -msgstr "取得新驗證碼" - #. Label in the notifications. #: src/features/user/components/modals/tabs/notifications_tab/Notifications.tsx:43 msgid "Get notified when you receive messages. You may need to allow notifications for {productName} in your device settings. For per-channel/per-community controls, open notification settings from a community's menu." @@ -16634,20 +16453,20 @@ msgstr "禮物代碼" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:272 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:100 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:74 msgid "Gift duration" msgstr "禮物期限" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:268 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 #: src/features/user/components/settings_utils/search_index/GiftInventoryIndex.ts:42 msgid "Gift inventory" msgstr "禮物庫存" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:96 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:70 msgid "Gift inventory flow" msgstr "禮物庫存流程" @@ -16674,7 +16493,7 @@ msgid "Gift not found" msgstr "找不到禮物" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:276 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 msgid "Gift redeemed" msgstr "禮物已兌換" @@ -17030,7 +16849,7 @@ msgstr "群組私訊" #: src/features/app/components/dialogs/shared/RecipientList.tsx:29 #: src/features/auth/components/pages/oauth_authorize_page/hooks/useBotGuilds.ts:33 #: src/features/auth/components/pages/oauth_authorize_page/OAuthCommunityStep.tsx:52 -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:411 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:308 #: src/features/ui/state/Notification.ts:57 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:116 msgid "Group DM" @@ -17349,10 +17168,15 @@ msgid "Hey {displayName}, claim your account to prevent losing access." msgstr "嗨,{displayName},請認領您的帳號,以免失去存取權限。" #. Nagbar warning shown when the current user still needs to verify email. displayName is the user display name. -#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:17 +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:18 msgid "Hey {displayName}, please verify your email address." msgstr "嗨,{displayName},請驗證您的電子郵件地址。" +#. Nagbar warning shown when emails to the current user address bounce, so the address cannot be verified. displayName is the user display name. +#: src/features/app/components/layout/app_layout/nagbars/EmailVerificationNagbar.tsx:23 +msgid "Hey {displayName}, we can't deliver email to your address. Add a working email to verify your account." +msgstr "哈囉 {displayName},我們無法將郵件寄送到您的電子郵件地址。請新增一個有效的電子郵件地址來驗證您的帳號。" + #. Randomly selected welcome message that appears as a system message when a user joins a community. Plural placeholder is the new member username. Tone is friendly and warm; keep variety across these strings. #: src/features/messaging/utils/SystemMessageUtils.tsx:31 msgid "Hey {username}, great to see you here!" @@ -17550,7 +17374,7 @@ msgstr "要隱藏自己的螢幕分享嗎?" #. Activity log value naming the high member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:75 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:74 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:65 msgid "High" msgstr "高" @@ -17755,11 +17579,6 @@ msgstr "這是一個工具提示" msgid "I changed my mind" msgstr "我改變心意了" -#. Secondary button in the required-action modal. Opens recovery options for the current verification step. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:166 -msgid "I need another way" -msgstr "我需要其他方式" - #. Short label in the voice tab. Keep it concise. #: src/features/channel/components/MatureContentChannelGate.tsx:207 #: src/features/user/components/modals/tabs/UserVoiceTab.tsx:111 @@ -17862,16 +17681,6 @@ msgstr "如果這則檢舉是關於特定訊息,請改為檢舉該訊息。訊 msgid "If this report is about specific messages, report the most relevant message instead. Message reports give our safety team the clearest context, and adding details in the comments can help us review it faster. Only continue with reporting the user as a whole if reporting a message would not capture the broader issue." msgstr "如果此檢舉是關於多則特定訊息,請改為檢舉最相關的那一則。訊息檢舉能讓我們的安全團隊掌握最清楚的脈絡,在意見中新增詳細資訊也能幫助我們更快審查。只有在檢舉訊息無法涵蓋更廣泛的問題時,才繼續檢舉這位使用者整體。" -#. Heading of the alternative-routes block in the required-action modal. Introduces human review and the option to set the phone check aside. Must read as a real supported route, not fine print. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:273 -msgid "If you can't verify by SMS" -msgstr "如果您無法透過簡訊驗證" - -#. Required-action modal body when the user must contact support for account recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:260 -msgid "If you cannot use any verification method, contact support for help." -msgstr "如果您無法使用任何驗證方式,請聯絡客服以取得協助。" - #. Confirmation modal body shown before dismissing the desktop-notification nagbar. {notificationSettingsPath} is the localized settings path. #: src/features/app/components/layout/app_layout/nagbars/DesktopNotificationNagbar.tsx:39 msgid "If you dismiss this, you can always enable desktop notifications later under {notificationSettingsPath}." @@ -18635,7 +18444,7 @@ msgstr "介面大小" #. Error message in the use entrance sound. #. Error message in the use sound settings. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:31 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:32 #: src/features/user/components/modals/tabs/notifications_tab/useSoundSettings.ts:17 msgid "Invalid audio file" msgstr "音訊檔無效" @@ -18674,8 +18483,10 @@ msgstr "JSON 無效。請貼上來自上方網址的完整回應。" #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:27 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:35 #: src/features/user/components/modals/EmailChangeModal.tsx:27 #: src/features/user/components/modals/PasswordChangeModal.tsx:26 msgid "Invalid or expired code" @@ -19158,7 +18969,7 @@ msgstr "加入語音通話" #. Button in the unjoined voice channel call surface. Joins the current voice channel. #. Confirm dialog title shown before joining a voice channel from a context where confirmation is required. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:65 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:66 #: src/features/voice/hooks/usePendingVoiceConnection.tsx:12 msgid "Join voice channel" msgstr "加入語音頻道" @@ -19613,16 +19424,6 @@ msgstr "進一步了解 Visionary" msgid "Leave" msgstr "離開" -#. Confirmation dialog title in the required-action modal when communities will be left. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:311 -msgid "Leave {count, plural, one {# community} other {# communities}} and set this check aside?" -msgstr "離開 {count, plural, one {# 個社群} other {# 個社群}} 並暫停此檢查?" - -#. Primary button of the set-aside confirmation in the required-action modal when communities will be left. Uses the destructive button style. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:352 -msgid "Leave and set aside" -msgstr "離開並暫停" - #. Short label in the authentication auth register form core. Keep the tone plain and specific. #: src/features/auth/flow/AuthRegisterFormCore.tsx:63 msgid "Leave blank for a random username" @@ -19772,7 +19573,7 @@ msgid "Let screen readers announce new messages as they arrive in the open chann msgstr "讓螢幕閱讀器在開啟的頻道中收到新訊息時,即時朗讀訊息內容。通知音效不受影響。" #. Helper text for the "Off" explicit content filter option in the community moderation settings tab. Means leave moderation to members. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:93 msgid "Let the community self-moderate" msgstr "讓社群自行管理" @@ -19800,7 +19601,7 @@ msgid "Library" msgstr "主題庫" #. Error modal body shown when entrance sound library quota is reached. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:63 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:64 msgid "Library full ({max} sounds max). Delete one before adding another." msgstr "音效庫已滿(最多 {max} 個音效)。請先刪除一個,再新增其他音效。" @@ -19812,7 +19613,7 @@ msgstr "音效庫:{count} / {max}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Subscription status badge meaning permanent premium access. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:448 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:22 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:21 msgid "Lifetime" msgstr "終身" @@ -20147,7 +19948,7 @@ msgid "Loading..." msgstr "正在載入…" #. Combobox popup status shown while options are loading. -#: src/features/ui/components/form/FormCombobox.tsx:87 +#: src/features/ui/components/form/FormCombobox.tsx:88 #: src/features/ui/components/Spinner.tsx:22 msgid "Loading…" msgstr "載入中…" @@ -20261,7 +20062,7 @@ msgstr "路易斯安那州" #. Activity log value naming the low member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:57 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:56 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:57 msgid "Low" msgstr "低" @@ -20416,7 +20217,7 @@ msgstr "管理社群功能" msgid "Manage emoji & stickers" msgstr "管理表情符號和貼圖" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:96 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:97 msgid "Manage incoming webhooks that can post messages into this channel." msgstr "管理可將訊息發佈到此頻道的傳入 Webhook。" @@ -20514,7 +20315,7 @@ msgstr "立即將所有未讀的收件匣頻道標示為已讀,不需確認" msgid "Mark as read" msgstr "標示為已讀" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:337 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:246 msgid "Mark as redeemed" msgstr "標示為已兌換" @@ -20676,14 +20477,14 @@ msgstr "成人社群" #. Generic title or label for content marked for mature audiences. #. Select label in the community moderation settings tab. Sensitive setting; keep neutral tone. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:90 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:132 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:61 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:122 #: src/features/i18n/utils/CommonMessageDescriptors.ts:296 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:180 msgid "Mature content" msgstr "成人內容" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:408 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:385 msgid "Mature content & content warnings" msgstr "成人內容與內容警告" @@ -20794,7 +20595,7 @@ msgid "Maximum lifetime (days)" msgstr "附件最長保留期限(天)" #. Helper text under the "Filter everyone" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:123 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 msgid "Maximum protection for family-friendly spaces" msgstr "為闔家適宜的空間提供最高等級的保護" @@ -20924,7 +20725,7 @@ msgstr "停止播放" #. Activity log value naming the medium member verification level of a community. #. Member verification level option in the community moderation settings tab. Short standalone severity label. #. Short label in the selections tab. Keep it concise. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:66 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:65 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:61 #: src/features/user/components/modals/tabs/component_gallery_tab/SelectionsTab.tsx:49 msgid "Medium" @@ -21009,12 +20810,12 @@ msgstr "成員已解除停權" msgid "Member updated" msgstr "成員已更新" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:304 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:285 msgid "Member verification" msgstr "成員驗證" #. Accessible label for the member verification level radio group in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:94 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:84 msgid "Member verification level" msgstr "成員驗證等級" @@ -21048,7 +20849,7 @@ msgstr "除非獲得身分組,否則成員離線時就會被移除。" msgid "Members with \"{pinMessagesPermissionLabel}\" can pin messages for everyone." msgstr "擁有「{pinMessagesPermissionLabel}」權限的成員可以為所有人釘選訊息。" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:314 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:295 msgid "Members with roles can bypass these checks. For public spaces, we recommend enabling verification." msgstr "擁有身分組的成員可以略過這些檢查。對於公開空間,我們建議啟用驗證。" @@ -21153,7 +20954,7 @@ msgstr "提及您的訊息會在這裡顯示 {retentionDays} 天。" #. Activity log value for the default notification setting of a community where members are notified only when mentioned. #. Short label in the default notifications section. Keep it concise. #: src/features/guild/components/modals/guild_tabs/guild_overview_tab/sections/DefaultNotificationsSection.tsx:24 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:91 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:87 msgid "Mentions only" msgstr "只接收提及通知" @@ -21292,7 +21093,7 @@ msgstr "訊息顯示設定僅供桌面版使用。" msgid "Message editing" msgstr "編輯訊息" -#: src/features/messaging/components/modals/ForwardModal.tsx:309 +#: src/features/messaging/components/modals/ForwardModal.tsx:315 msgid "Message forwarded" msgstr "訊息已轉傳" @@ -21341,7 +21142,7 @@ msgstr "訊息輸入按鈕" #. Error modal title in the forward modal when the optional comment exceeds the message length limit. #. Form validation error indicating the message exceeds the allowed length. -#: src/features/messaging/components/modals/ForwardModal.tsx:54 +#: src/features/messaging/components/modals/ForwardModal.tsx:56 #: src/features/ui/character_counter/CharacterCountMessages.ts:16 msgid "Message is too long" msgstr "訊息過長" @@ -21396,7 +21197,7 @@ msgid "Message previews in the DM list" msgstr "私訊列表中的訊息預覽" #. Toast shown after a message in an announcement channel was published to the channels that follow it. -#: src/features/messaging/commands/MessageCommands.tsx:111 +#: src/features/messaging/commands/MessageCommands.tsx:112 msgid "Message published" msgstr "訊息已發布" @@ -21490,7 +21291,7 @@ msgid "Messages published in #{sourceName} will now appear in #{targetName}." msgstr "發佈到 #{sourceName} 的訊息現在會顯示在 #{targetName}。" #. Description of the followed channels section in the channel webhook settings. -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:228 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:230 msgid "Messages published in these announcement channels are copied here." msgstr "在此公告頻道中發布的訊息會在此處複製。" @@ -21504,7 +21305,7 @@ msgstr "發佈於這些公告頻道的訊息會被複製到你的頻道。" msgid "Messages you can bookmark" msgstr "可收藏的訊息" -#: src/features/channel/components/barriers/BarrierComponents.tsx:282 +#: src/features/channel/components/barriers/BarrierComponents.tsx:274 msgid "Messaging is temporarily paused in this community." msgstr "此社群的訊息功能已暫時停用。" @@ -21733,30 +21534,30 @@ msgstr "模擬將於 1 天後到期" msgid "Mock expires in 7 days" msgstr "模擬將於 7 天後到期" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:293 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:202 msgid "Mock geo block overlay" msgstr "模擬地理封鎖覆疊" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:320 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:229 msgid "Mock gift inventory" msgstr "模擬禮物庫存" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:68 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:54 msgid "Mock incoming call" msgstr "模擬來電" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:88 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:62 msgid "Mock mature content channel gate reason" msgstr "模擬成人內容頻道閘門原因" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:92 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:66 msgid "Mock mature content media gate reason" msgstr "模擬成人內容媒體閘門原因" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:287 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:196 msgid "Mock UK geo" msgstr "模擬英國地理位置" @@ -21765,12 +21566,7 @@ msgid "Mock user avatars in various sizes and all status permutations." msgstr "各種尺寸和所有狀態排列的模擬使用者頭像。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:64 -msgid "Mock variant" -msgstr "模擬變體" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:104 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:78 msgid "Mocked product flows" msgstr "模擬產品流程" @@ -22698,14 +22494,16 @@ msgstr "新社群已靜音" msgid "New direct message" msgstr "新的私訊" -#. Form field label for the new email address input in the email update flow. #. Short label in the email change modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:84 +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:31 #: src/features/user/components/modals/EmailChangeModal.tsx:47 msgid "New email" msgstr "新電子郵件" #. Short label in the email change modal. Keep it concise. +#. Short label in the email change modal. Keep it concise. +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:27 #: src/features/user/components/modals/EmailChangeModal.tsx:43 msgid "New email form" msgstr "新電子郵件表單" @@ -22816,9 +22614,7 @@ msgstr "最新優先" #. Button that moves to the next setup wizard step. #. Generic primary or pagination action label that advances to the next step, page, or item. -#. Primary button in the required-action modal. Moves to the next carousel step. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:82 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:154 #: src/features/i18n/utils/CommonMessageDescriptors.ts:726 msgid "Next" msgstr "下一步" @@ -22860,12 +22656,12 @@ msgid "No" msgstr "否" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:256 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 msgid "No {attachFilesPermission} permission" msgstr "沒有 {attachFilesPermission} 權限" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 msgid "No {sendMessagesPermission} permission" msgstr "沒有 {sendMessagesPermission} 權限" @@ -23005,7 +22801,7 @@ msgstr "沒有要儲存的變更" msgid "No channels available" msgstr "沒有可用的頻道" -#: src/features/messaging/components/modals/ForwardModal.tsx:383 +#: src/features/messaging/components/modals/ForwardModal.tsx:389 #: src/features/search/components/search/ChannelFilterSheet.tsx:120 msgid "No channels found" msgstr "找不到任何頻道" @@ -23233,11 +23029,6 @@ msgstr "找不到權限" msgid "No personal words yet." msgstr "還沒有任何個人詞彙。" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:50 -msgid "No phone number" -msgstr "沒有電話號碼" - #. Short label in the shared app channel pins content. #: src/features/app/components/shared/ChannelPinsContent.tsx:55 msgid "No pinned messages" @@ -23290,7 +23081,7 @@ msgstr "沒有結果" #. Empty state shown when a combobox search returns no matches. #. Empty state shown when a combobox search returns no matches. #: src/features/channel/components/embeds/attachments/TextualAttachmentLanguageCombobox.tsx:30 -#: src/features/ui/components/form/FormCombobox.tsx:83 +#: src/features/ui/components/form/FormCombobox.tsx:84 msgid "No results found" msgstr "沒有結果" @@ -23444,7 +23235,7 @@ msgid "No users found" msgstr "找不到使用者" #. Helper text for the "None" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:53 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:52 msgid "No verification is required." msgstr "不需要驗證。" @@ -23452,7 +23243,7 @@ msgstr "不需要驗證。" msgid "No verification methods available" msgstr "沒有可用的驗證方式" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:191 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:175 msgid "No webhooks" msgstr "沒有 Webhook" @@ -23504,7 +23295,7 @@ msgstr "無轉換" #. Short label in the visual tab. Keep it concise. #. Summary row value on the confirm step when no items in the category were selected. #: src/features/channel/components/channel_header_components/developer_tools/DeveloperToolsShared.ts:41 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:48 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:47 #: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:52 #: src/features/user/components/modals/tabs/accessibility_tab/VisualTab.tsx:37 #: src/features/user/components/modals/tabs/components/EntranceSoundSection.tsx:146 @@ -23520,7 +23311,7 @@ msgid "None" msgstr "無" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:30 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:29 msgid "None (normal behavior)" msgstr "無(正常行為)" @@ -23542,7 +23333,7 @@ msgid "Norwegian" msgstr "挪威文" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:46 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:45 msgid "Not a member long enough" msgstr "成為成員的時間不夠久" @@ -23798,9 +23589,9 @@ msgstr "物品" #: src/features/channel/components/ChannelReplyBar.tsx:62 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:26 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:24 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:98 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:140 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:73 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:88 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:130 +#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 msgid "Off" msgstr "關閉" @@ -23848,7 +23639,7 @@ msgstr "最舊優先" #. On state suffix appended to the reply bar mention toggle label. #: src/features/channel/components/ChannelReplyBar.tsx:58 #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:22 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:136 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:126 msgid "On" msgstr "開啟" @@ -23884,11 +23675,6 @@ msgstr "有一個或多個附件無法讀取或上傳。檔案可能已移動或 msgid "One or more files you're trying to upload exceed the maximum size limit of {maxSizeFormatted} per file." msgstr "您嘗試上傳的一個或多個檔案,超出每個檔案 {maxSizeFormatted} 的大小上限。" -#. Required-action modal carousel step title. Introduces why account verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:206 -msgid "One quick check" -msgstr "快速檢查一下" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/AccountSecurityIndex.ts:66 msgid "One-time password" @@ -23985,7 +23771,7 @@ msgid "Only speakers" msgstr "僅限揚聲器" #. Tooltip on the 2FA-for-moderation switch in the community moderation settings tab when the viewer is not the owner. Plain explanatory tone. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:38 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:37 msgid "Only the community owner can change this setting" msgstr "只有社群擁有者可以變更此設定" @@ -24275,7 +24061,7 @@ msgid "Open emoji in browser" msgstr "在瀏覽器中開啟表情符號" #. Accessible label for the emoji picker trigger button in the forward modal comment field. -#: src/features/messaging/components/modals/ForwardModal.tsx:100 +#: src/features/messaging/components/modals/ForwardModal.tsx:102 #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:27 msgid "Open emoji picker" msgstr "開啟表情符號選取器" @@ -24382,12 +24168,8 @@ msgstr "開啟選單圖示" msgid "Open message history threshold" msgstr "開啟訊息歷史記錄門檻" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:216 -msgid "Open overlay" -msgstr "開啟浮層" - #. Accessible label for the combobox popup trigger button. -#: src/features/ui/components/form/FormCombobox.tsx:95 +#: src/features/ui/components/form/FormCombobox.tsx:96 msgid "Open popup" msgstr "開啟彈出式視窗" @@ -24485,11 +24267,6 @@ msgstr "開啟新版應用程式。您已登入。" msgid "Open the shortcuts list for quick actions." msgstr "開啟快速鍵清單以快速執行動作。" -#. Required-action modal body explaining how to finish email verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:244 -msgid "Open the verification email and use the link inside. This window updates after the link opens." -msgstr "開啟驗證電子郵件並使用裡面的連結。連結開啟後,此視窗會更新。" - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:257 msgid "Open theme studio popout" @@ -24534,24 +24311,10 @@ msgstr "開啟語音與視訊設定" msgid "Open your browser, sign in, then enter the code below to link your account." msgstr "開啟您的瀏覽器,登入後輸入以下代碼,即可連結您的帳號。" -#. Required-action modal carousel step title for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:446 -msgid "Open your messages" -msgstr "開啟您的訊息" - #: src/features/auth/flow/BrowserLoginHandoffModal.tsx:129 msgid "Open your old {PRODUCT_NAME} app and choose Link a new device, then enter the code below." msgstr "開啟您的舊版 {PRODUCT_NAME} 應用程式,選擇「連結新裝置」,然後輸入下方的代碼。" -#: src/features/user/components/modals/PhoneAddModal.tsx:324 -msgid "Open your phone's messaging app and create a new text message." -msgstr "開啟手機的訊息應用程式,然後建立新簡訊。" - -#. Required-action modal body for the first inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:450 -msgid "Open your phone's messaging app and start a new text message." -msgstr "開啟手機訊息應用程式,然後開始新的簡訊。" - #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #: src/features/input/state/input_keybind/shared.ts:253 msgid "Open your settings" @@ -24720,11 +24483,6 @@ msgstr "其他反應…" msgid "OTP" msgstr "OTP" -#. Required-action form error when our own phone lookup provider is unavailable and we fail closed. Must blame us, not the number, and must invite retrying the same number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:554 -msgid "Our phone number check is down right now. This is on us, not your number. Wait a few minutes and try the same number again." -msgstr "我們的電話號碼驗證目前無法使用。這是我們的問題,不是您的號碼有問題。請稍等幾分鐘,再用同一個號碼試一次。" - #. IAR modal: body copy on the success step shown after a platform report is submitted. Reassures the user about follow-up. #: src/features/moderation/components/report_modal/IARModalCopy.ts:96 msgid "Our safety team is reviewing it. We'll send you a DM and email once we've reached a verdict." @@ -25313,54 +25071,6 @@ msgstr "PgUp" msgid "Phishing, fraud, malicious links, or false claims likely to cause real-world harm." msgstr "網路釣魚、詐騙、惡意連結或可能造成實際危害的虛假聲明。" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#. Tab label for the phone verification path in the required-action modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:104 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:58 -msgid "Phone" -msgstr "電話" - -#. Form field label for the phone number input. -#. Short label in the phone add modal. Keep it concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:100 -#: src/features/user/components/modals/PhoneAddModal.tsx:65 -msgid "Phone number" -msgstr "電話號碼" - -#. Form validation error shown when the phone number field is empty. -#. Label in the phone add modal. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:116 -#: src/features/user/components/modals/PhoneAddModal.tsx:41 -msgid "Phone number is required" -msgstr "請輸入電話號碼" - -#. Toast shown after phone verification succeeds. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:482 -#: src/features/user/components/modals/PhoneAddModal.tsx:178 -#: src/features/user/components/modals/PhoneAddModal.tsx:183 -msgid "Phone number verified" -msgstr "電話號碼已驗證" - -#. Required-action modal title shown when the phone number must be reverified. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:24 -msgid "Phone re-verification required" -msgstr "需要重新驗證電話號碼" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:76 -msgid "Phone step" -msgstr "電話步驟" - -#. Required-action error when the account is not eligible to add phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:538 -msgid "Phone verification is not available for this account. Use another method or contact support." -msgstr "此帳號無法使用電話驗證。請使用其他方式或聯絡客服。" - -#. Required-action modal title shown when the phone number must be verified for the first time. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:28 -msgid "Phone verification required" -msgstr "需要驗證電話號碼" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:21 msgid "Photo" @@ -25416,11 +25126,6 @@ msgstr "選擇您名稱後面的 4 位數字" msgid "Pick the appearance this administrator account should start with." msgstr "選擇此管理員帳號的初始外觀。" -#. Required-action modal body for choosing a verification method. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:236 -msgid "Pick the method you can complete now." -msgstr "選擇您現在可以完成的方法。" - #. Validation hint in the IAR modal on the rule selection step. #: src/features/moderation/components/report_modal/IARModal.tsx:74 msgid "Pick the rule to review." @@ -25453,7 +25158,7 @@ msgstr "子母畫面" #. Confirm button label on the pin message alert. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/MessageActionUtils.tsx:68 +#: src/features/channel/components/MessageActionUtils.tsx:69 #: src/features/user/components/settings_utils/search_index/KeybindsIndex.ts:70 msgid "Pin" msgstr "釘選" @@ -25471,7 +25176,7 @@ msgstr "釘選群組私訊" #. Generic action label that pins a message to the channel pins. #. Keyboard shortcut action label shown in the shortcuts list and keybind editor. Keep short, sentence case. #. Title of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:60 +#: src/features/channel/components/MessageActionUtils.tsx:61 #: src/features/i18n/utils/CommonMessageDescriptors.ts:544 #: src/features/input/state/input_keybind/shared.ts:17 msgid "Pin message" @@ -25498,7 +25203,7 @@ msgid "Pin or unpin any message." msgstr "釘選或取消釘選任何訊息。" #. Body of the confirmation alert shown when pinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:64 +#: src/features/channel/components/MessageActionUtils.tsx:65 msgid "Pin this message to the channel for everyone to see." msgstr "將此訊息釘選到頻道,讓所有人都能看到。" @@ -26227,18 +25932,18 @@ msgstr "個人檔案顏色" #. Settings section label for editing profile appearance and identity. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:104 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:105 #: src/features/user/components/settings_utils/section_registry/GeneralSettingsSections.ts:6 msgid "Profile customization" msgstr "個人檔案自訂" #. Label in the my profile tab. Preserve {selectedGuildName}; it is inserted by code. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:100 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:101 msgid "Profile customization for {selectedGuildName}" msgstr "{selectedGuildName} 的個人檔案自訂" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:96 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:97 msgid "Profile customization form" msgstr "個人檔案自訂表單" @@ -26303,7 +26008,7 @@ msgid "Profile type" msgstr "個人檔案類型" #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:76 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:77 msgid "Profile updated" msgstr "個人檔案已更新" @@ -26340,7 +26045,7 @@ msgstr "偵測到新音訊裝置時提示" #. Settings search entry label. Also used as a search synonym in the settings search bar. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #. Short label in the my profile tab. Keep it concise. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:141 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:142 #: src/features/user/components/settings_utils/search_index/MyProfileIndex.ts:177 #: src/features/user/components/settings_utils/section_registry/PrivacySafetySections.ts:160 msgid "Pronouns" @@ -26690,11 +26395,6 @@ msgstr "協調突襲" msgid "Rate" msgstr "語速" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:78 -msgid "Rate limited" -msgstr "頻率限制" - #: src/features/user/components/modals/tabs/EmbedDebuggerTab.tsx:292 msgid "Raw embed JSON" msgstr "原始嵌入 JSON" @@ -27277,7 +26977,7 @@ msgid "Remove {userName} from your friends?" msgstr "要將 {userName} 從您的好友中移除嗎?" #. Confirm button label on the remove-all-reactions alert. Destructive. -#: src/features/channel/components/MessageActionUtils.tsx:80 +#: src/features/channel/components/MessageActionUtils.tsx:81 msgid "Remove all" msgstr "全部移除" @@ -27290,7 +26990,7 @@ msgstr "要從此訊息中移除所有 {emojiNameWithColons} 表情符號反應 #. Message action that removes every reaction from the selected message. #. Title of the confirmation alert shown when clearing every reaction on a message. #: src/features/channel/components/MessageActionMenu.tsx:79 -#: src/features/channel/components/MessageActionUtils.tsx:72 +#: src/features/channel/components/MessageActionUtils.tsx:73 #: src/features/ui/action_menu/items/MessageMenuItems.tsx:70 msgid "Remove all reactions" msgstr "移除所有反應" @@ -27899,20 +27599,10 @@ msgstr "被檢舉使用者的標籤(選填)" msgid "Reposts: <0>{countLabel}" msgstr "轉發:<0>{countLabel}" -#. Required-action form error when the user submits before a code exists. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:494 -msgid "Request a new code first." -msgstr "請先要求新驗證碼。" - #: src/features/auth/components/pages/ResetPasswordPage.tsx:136 msgid "Request a new reset link" msgstr "要求新的重設連結" -#. Form validation error shown when the user tries to submit a code before requesting one. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:112 -msgid "Request a verification code first." -msgstr "請先要求驗證碼。" - #. Footer submit button label on the confirm step of the data-export modal. #: src/features/user/components/modals/tabs/privacy_safety_tab/data_request_modal/DataRequestModal.tsx:196 msgid "Request export" @@ -27928,7 +27618,7 @@ msgid "Requests" msgstr "邀請" #. Switch label in the community moderation settings tab. Requires moderators to have two-factor auth enabled before they can ban, kick, time out, or delete messages. Security-sensitive; keep tone plain. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:157 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:147 msgid "Require 2FA for moderation actions" msgstr "管理動作需要雙重驗證" @@ -27958,7 +27648,7 @@ msgstr "需要 OAuth2 授權碼授予" msgid "Require passkey" msgstr "要求通行金鑰" -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:475 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:452 msgid "Require two-factor authentication for moderators before they can ban, kick, time out, or remove messages." msgstr "管理員必須啟用雙重驗證,才能執行停權、踢出、禁言或移除訊息等操作。" @@ -27972,46 +27662,6 @@ msgstr "必要" msgid "Required 2FA for moderation actions" msgstr "已要求執行管理動作前必須啟用 2FA" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 -msgid "Required action default tab" -msgstr "必要動作預設分頁" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:60 -msgid "Required action flow" -msgstr "必要動作流程" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 -msgid "Required action phone step" -msgstr "必要動作電話步驟" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:240 -msgid "Required action resend loading" -msgstr "必要動作重新傳送載入中" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:244 -msgid "Required action resend outcome" -msgstr "重新傳送必要動作的結果" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:248 -msgid "Required action reverification text" -msgstr "必要動作重新驗證文字" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:228 -msgid "Required action variant" -msgstr "必要動作變體" - -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:224 -msgid "Required actions overlay" -msgstr "必要動作重疊畫面" - #. Reason spoken by screen readers when a required slash-command argument in the message box is empty. #: src/features/lexical/composer/nodes/SlashSlotNode.ts:57 msgid "Required value missing" @@ -28023,27 +27673,23 @@ msgid "Requires a redirect URI and an authorization code when inviting this bot. msgstr "邀請此機器人時,需要重新導向 URI 和授權碼。" #. Helper text for the "Medium" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:71 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:70 msgid "Requires a verified email address and an account that's at least 5 minutes old." msgstr "需要驗證電子郵件地址,且帳號建立時間至少滿 5 分鐘。" #. Helper text for the "Low" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:62 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:61 msgid "Requires a verified email address." msgstr "需要驗證電子郵件地址。" -#. Helper text for the "Very high" member verification level option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:90 -msgid "Requires a verified phone number." -msgstr "需要已驗證的電話號碼。" - #. Helper text for the "High" member verification level option in the community moderation settings tab. "Medium" refers to the matching level option. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:80 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:79 msgid "Requires everything in medium, plus being a member of the community for at least 10 minutes." msgstr "除了中等安全等級的所有要求外,還必須成為社群成員至少 10 分鐘。" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 #: src/features/auth/components/modals/ClaimAccountModal.tsx:240 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/EmailChangeModal.tsx:296 #: src/features/user/components/modals/EmailChangeModal.tsx:333 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 @@ -28067,32 +27713,20 @@ msgid "Resend ({resendSecondsRemaining}s)" msgstr "重新傳送({resendSecondsRemaining} 秒)" #: src/features/auth/components/modals/BackupCodesViewModal.tsx:200 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:205 #: src/features/user/components/modals/PasswordChangeModal.tsx:244 msgid "Resend ({secondsRemaining}s)" msgstr "重新傳送({secondsRemaining} 秒)" -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:244 -msgid "Resend button loading" -msgstr "重新傳送按鈕載入中" - -#. Button in the required-action modal. Requests another verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:194 #: src/features/moderation/components/report/ReportStepVerification.tsx:105 msgid "Resend code" msgstr "重新傳送驗證碼" -#. Button in the required-action modal. Sends another verification email. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:93 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:198 #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resend email" msgstr "重寄驗證信" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:80 -msgid "Resend outcome" -msgstr "重新傳送結果" - #: src/features/auth/flow/IpAuthorizationScreen.tsx:145 msgid "Resent" msgstr "已重新傳送" @@ -28518,21 +28152,6 @@ msgstr "顯示" msgid "Reveal spoiler" msgstr "顯示劇透內容" -#. Required-action modal body when user must reverify email or verify phone. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:65 -msgid "Reverify your email or verify your phone to continue using {productName}." -msgstr "請重新驗證您的電子郵件或驗證您的電話號碼,才能繼續使用 {productName}。" - -#. Required-action modal body for email re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:49 -msgid "Reverify your email to continue using {productName}." -msgstr "請重新驗證您的電子郵件,以繼續使用 {productName}。" - -#. Required-action modal body for phone re-verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:57 -msgid "Reverify your phone number to continue using {productName}." -msgstr "請重新驗證您的電話號碼,以繼續使用 {productName}。" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/search_index/ChatSettingsIndex.ts:271 msgid "Reverse image" @@ -28934,12 +28553,12 @@ msgstr "飽和度" #: src/features/guild/components/modals/guild_tabs/GuildDiscoveryTab.tsx:631 #: src/features/guild/components/modals/guild_tabs/GuildVanityURLTab.tsx:279 #: src/features/guild/components/modals/GuildFolderSettingsModal.tsx:91 -#: src/features/messaging/commands/MessageCommands.tsx:107 +#: src/features/messaging/commands/MessageCommands.tsx:108 #: src/features/messaging/components/modals/AttachmentEditModal.tsx:136 #: src/features/messaging/components/modals/EditAltTextModal.tsx:193 #: src/features/messaging/components/modals/MessageHistoryThresholdModal.tsx:115 #: src/features/user/components/modals/BaseChangeNicknameModal.tsx:136 -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:297 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:300 #: src/features/user/components/modals/NoteEditSheet.tsx:48 #: src/features/user/components/modals/tabs/chat_settings_tab/AddCustomSearchEngineModal.tsx:96 msgid "Save" @@ -29337,7 +28956,7 @@ msgstr "拖曳預覽" #: src/features/channel/components/bottomsheets/ChannelSearchBottomSheet.tsx:854 #: src/features/channel/components/channel_header/shared.ts:47 #: src/features/channel/components/shared/PickerSearchInput.tsx:21 -#: src/features/messaging/components/modals/ForwardModal.tsx:87 +#: src/features/messaging/components/modals/ForwardModal.tsx:89 #: src/features/search/components/modals/SearchProviderPickerModal.tsx:43 #: src/features/search/utils/QuickSwitcherModalUtils.tsx:46 #: src/features/theme_studio/ui/StudioSearchInput.tsx:16 @@ -29382,16 +29001,6 @@ msgstr "搜尋頻道" msgid "Search communities" msgstr "搜尋社群" -#. Button or menu action label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:61 -msgid "Search countries..." -msgstr "搜尋國家…" - -#. Placeholder text inside the country search input. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:96 -msgid "Search countries…" -msgstr "搜尋國家…" - #. Button or menu action label in the guild emoji tab. Keep it concise. #: src/features/guild/components/modals/guild_tabs/GuildEmojiTab.tsx:93 msgid "Search emojis" @@ -29908,7 +29517,7 @@ msgid "Select your country of residence." msgstr "請選擇您的居住國家/地區。" #. Generic combobox control placeholder. -#: src/features/ui/components/form/FormCombobox.tsx:75 +#: src/features/ui/components/form/FormCombobox.tsx:76 msgid "Select…" msgstr "選擇…" @@ -29998,7 +29607,7 @@ msgid "Send" msgstr "傳送" #. Primary button label in the forward message modal. selectedCount is the number of selected destinations; selectionLimit is the maximum allowed. -#: src/features/messaging/components/modals/ForwardModal.tsx:104 +#: src/features/messaging/components/modals/ForwardModal.tsx:106 msgid "Send ({selectedCount}/{selectionLimit})" msgstr "傳送 ({selectedCount}/{selectionLimit})" @@ -30053,9 +29662,8 @@ msgstr "再送出一則檢舉" msgid "Send button" msgstr "傳送按鈕" -#. Primary button in the required-action modal. Requests a verification code. #: src/features/auth/components/modals/ClaimAccountModal.tsx:219 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:190 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:196 #: src/features/user/components/modals/EmailChangeModal.tsx:318 msgid "Send code" msgstr "傳送驗證碼" @@ -30113,7 +29721,7 @@ msgid "Send messages" msgstr "傳送訊息" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:54 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:53 msgid "Send messages disabled" msgstr "無法傳送訊息" @@ -30151,32 +29759,11 @@ msgstr "傳送已儲存的媒體 {memeName}" msgid "Send text-to-speech messages with /tts. Members who turned text-to-speech on hear them read aloud." msgstr "使用 /tts 傳送文字轉語音訊息。開啟文字轉語音的成員會聽到朗讀。" -#. placeholder {0}: inboundChallenge.challenge_code -#. placeholder {1}: inboundChallenge.our_number -#: src/features/user/components/modals/PhoneAddModal.tsx:332 -msgid "Send the code <0>{0} to <1>{1}" -msgstr "將驗證碼 <0>{0} 傳送至 <1>{1}" - -#. Required-action modal body for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:458 -msgid "Send the code to the phone number below." -msgstr "將驗證碼傳送至以下電話號碼。" - -#. Required-action modal carousel step title for the second inbound phone verification instruction. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:454 -msgid "Send this code" -msgstr "傳送此驗證碼" - #. Unpin confirmation body. Keep the time-travel quip. #: src/features/app/components/shared/ChannelPinsContent.tsx:39 msgid "Send this pin back in time?" msgstr "將此釘選訊息送回過去?" -#. Label for the destination phone number in an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:466 -msgid "Send to" -msgstr "傳送至" - #. Permission name: allows sending text-to-speech messages. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:406 msgid "Send TTS messages" @@ -30200,14 +29787,6 @@ msgstr "傳送語音訊息" msgid "Send:" msgstr "傳送:" -#: src/features/user/components/modals/PhoneAddModal.tsx:301 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this requirement from your account." -msgstr "由於傳送簡訊到此電話號碼的費用對 {PRODUCT_NAME} 來說太高了,因此我們需要您改為傳送簡訊給我們。我們知道這不太理想。您也可以請此實例的管理員免除您帳號的此項要求。" - -#: src/features/user/components/modals/PhoneAddModal.tsx:307 -msgid "Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an SMS instead. We know this isn't ideal. You can also contact <0>{SUPPORT_EMAIL} to have us lift this requirement from your account." -msgstr "由於傳送簡訊到此電話號碼的費用對 {PRODUCT_NAME} 來說太高了,因此我們需要您改為傳送簡訊給我們。我們知道這不太理想。您也可以聯絡 <0>{SUPPORT_EMAIL},要求我們免除您帳號的此項要求。" - #. IAR modal: rule label. #: src/features/moderation/components/report_modal/IARModalCopy.ts:269 msgid "Sending malware or dangerous links" @@ -30287,11 +29866,6 @@ msgstr "逐一傳送" msgid "Serve the token file" msgstr "提供權杖檔案" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:82 -msgid "Service error" -msgstr "服務錯誤" - #. Developer / debug surface — keep terse and technical. Label in the developer Nagbar controls panel for the service incident banner. #: src/features/devtools/components/NagbarControls.ts:27 msgid "Service incident nagbar" @@ -30343,7 +29917,7 @@ msgid "Set custom shortcut for \"{label}\"" msgstr "為「{label}」設定自訂快速鍵" #. Short label in the custom status bottom sheet. Keep it concise. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:36 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:37 msgid "Set custom status" msgstr "設定自訂狀態" @@ -30486,18 +30060,6 @@ msgstr "已將語音區域設為 {region}" msgid "Set the voice region to automatic" msgstr "將語音區域設為自動" -#. Primary button of the set-aside confirmation in the required-action modal when nothing will be left. Uses the normal button style, not the destructive one. -#. Secondary button in the required-action modal that restores the deferred phone check instead of verifying a number. Must not read as skipping or circumventing, and must not use back or undo wording, which collides with the modal back button. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:290 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:347 -msgid "Set this check aside" -msgstr "暫緩此驗證" - -#. Confirmation dialog title in the required-action modal when nothing will be left. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:307 -msgid "Set this check aside?" -msgstr "暫緩此驗證?" - #. Title for the self-host setup wizard modal. #: src/features/app/components/setup/SelfHostedSetupWizardGate.tsx:74 msgid "Set up {productName}" @@ -30528,7 +30090,7 @@ msgid "Set your pronouns" msgstr "設定您的代名詞" #. Short label in the custom status modal. Keep it concise. -#: src/features/user/components/modals/CustomStatusModal.tsx:46 +#: src/features/user/components/modals/CustomStatusModal.tsx:47 msgid "Set your status" msgstr "設定您的狀態" @@ -30796,7 +30358,7 @@ msgid "Shortcuts are paused while recording." msgstr "錄製期間快速鍵會暫停作用。" #. Body of the error modal shown when the forward modal comment exceeds the message length limit. -#: src/features/messaging/components/modals/ForwardModal.tsx:58 +#: src/features/messaging/components/modals/ForwardModal.tsx:60 msgid "Shorten the message and try again." msgstr "請縮短訊息後再試一次。" @@ -30827,7 +30389,7 @@ msgid "Show a {productName} icon in the system tray or menu bar" msgstr "在系統匣或選單列中顯示 {productName} 圖示" #. Switch label in the community moderation settings tab. Toggles a consent prompt before entering any channel. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:144 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:134 msgid "Show a content warning" msgstr "顯示內容警示" @@ -31672,7 +31234,7 @@ msgstr "慢速模式 · 等待 {remaining}" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Short label in the slowmode rate limited modal. Keep it concise. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:260 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:232 #: src/features/slowmode/components/alerts/SlowmodeRateLimitedModal.tsx:8 msgid "Slowmode active" msgstr "慢速模式進行中" @@ -31718,17 +31280,17 @@ msgid "Slowmode is set to {durationLabel}. Wait before sending another message." msgstr "慢速模式設為 {durationLabel}。請稍候再傳送下一則訊息。" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:264 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:236 msgid "Slowmode remaining" msgstr "慢速模式剩餘時間" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:52 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:46 msgid "Slowmode simulation" msgstr "慢速模式模擬" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:56 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:50 msgid "Slowmode time remaining" msgstr "慢速模式剩餘時間" @@ -31807,11 +31369,6 @@ msgstr "平滑捲動" msgid "Smoother video" msgstr "畫面更流暢" -#. Required-action error when the SMS provider cannot send or verify a code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:534 -msgid "SMS verification is unavailable right now. Try again later or contact support." -msgstr "目前無法進行簡訊驗證。請稍後再試或聯絡客服。" - #. Success message after validating SMTP credentials. #: src/features/app/components/setup/SetupWizardSteps.tsx:1019 msgid "SMTP connection verified." @@ -31943,7 +31500,7 @@ msgid "Something went wrong while preparing this sticker. Try another file or tr msgstr "準備貼圖時發生錯誤。請嘗試其他檔案,或稍後再試一次。" #. Fallback body of the error alert shown when publishing an announcement message fails. -#: src/features/messaging/commands/MessageCommands.tsx:123 +#: src/features/messaging/commands/MessageCommands.tsx:124 msgid "Something went wrong while publishing. Try again in a moment." msgstr "發布時發生了問題。請稍後再試。" @@ -32009,11 +31566,9 @@ msgstr "發生錯誤。請重新載入頁面或重新登入。" msgid "Something went wrong. Try again later." msgstr "發生錯誤。請稍後再試。" -#. Generic required-action error fallback. #. Inline error in the web deep-link prompt when opening the desktop app fails. #. Toast error shown when the mature content check request fails unexpectedly. #: src/features/auth/components/modals/MatureContentCheckModal.tsx:18 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:576 #: src/features/auth/flow/DesktopDeepLinkPrompt.tsx:31 msgid "Something went wrong. Try again." msgstr "發生錯誤。請再試一次。" @@ -32352,11 +31907,6 @@ msgstr "單一登入逾時。請再試一次。" msgid "Staff controls" msgstr "員工控制項" -#. Required-action modal notice for inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:478 -msgid "Standard messaging rates from your carrier may apply." -msgstr "您的電信業者可能會收取標準訊息費率。" - #. Short label in the hdr tab. Keep it concise. #: src/features/user/components/modals/tabs/appearance_tab/AppearanceTabHdrTab.tsx:21 msgid "Standard range" @@ -32386,8 +31936,6 @@ msgstr "收藏動畫" msgid "Starred channels" msgstr "收藏頻道" -#. Primary button in the required-action modal. Starts the selected verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:158 #: src/features/user/components/modals/EmailChangeModal.tsx:281 #: src/features/user/components/modals/PasswordChangeModal.tsx:229 msgid "Start" @@ -33026,7 +32574,7 @@ msgstr "訂閱者傳輸:" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #. Settings search entry label. Also used as a search synonym in the settings search bar. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:18 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:17 #: src/features/user/components/settings_utils/search_index/PlutoniumIndex.ts:11 msgid "Subscription" msgstr "訂閱" @@ -33051,14 +32599,12 @@ msgstr "訂閱情境" msgid "Subtext" msgstr "小字" -#. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:74 #: src/features/user/components/modals/tabs/component_gallery_tab/OverlaysTab.tsx:123 msgid "Success" msgstr "成功" #. Helper text under the "Filter members without roles" explicit content filter option in the community moderation settings tab. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:113 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:103 msgid "Suggested for most communities" msgstr "建議用於大多數社群" @@ -33402,7 +32948,7 @@ msgid "System & welcome" msgstr "系統與歡迎" #. Read-only system DM barrier message. productName is the Fluxer product name. -#: src/features/channel/components/barriers/BarrierComponents.tsx:50 +#: src/features/channel/components/barriers/BarrierComponents.tsx:51 msgid "System announcements from {productName} staff. You can't reply here." msgstr "來自 {productName} 團隊的系統公告。您無法在此回覆。" @@ -33765,11 +33311,6 @@ msgstr "選取文字" msgid "Text size" msgstr "文字大小" -#. Required-action modal carousel step title for starting inbound phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:434 -msgid "Text us from your phone" -msgstr "用您的手機傳送簡訊給我們" - #. Feature label / section heading for the text-to-speech feature. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/i18n/utils/CommonMessageDescriptors.ts:424 @@ -33816,26 +33357,6 @@ msgstr "泰文" msgid "Thank you for helping keep {productName} safe. We'll review your report as soon as possible." msgstr "感謝您協助維護 {productName} 的安全。我們會盡快審核您的檢舉。" -#. Required-action form error for an invalid verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:486 -msgid "That code didn't work. Check it and try again." -msgstr "驗證碼有誤。請檢查後再試一次。" - -#. Required-action form error for an expired verification code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:490 -msgid "That code expired. Request a new code." -msgstr "驗證碼已過期。請取得新的驗證碼。" - -#. Shown in the required-action modal when setting the check aside failed part way through leaving communities. Retrying is safe and continues from where it stopped. Names the button so the reader knows what to press. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:382 -msgid "That did not finish. Some communities may already have been left, and your account is still locked. Press Set this check aside again to finish." -msgstr "這次沒有完成。您可能已經退出部分社群,且您的帳號仍處於鎖定狀態。請再按一次「暫緩此驗證」以完成。" - -#. Shown in the required-action modal when setting the check aside failed and the user was in no community that would have been left, so nothing can have been lost. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:377 -msgid "That did not go through. Nothing changed. Try again." -msgstr "無法完成。沒有任何變更。請再試一次。" - #. Body of the passkey page after the passkey prompt failed or was dismissed. Keep plain. #: src/features/auth/passkey_migration/PasskeyBridgePage.tsx:36 msgid "That didn't work. Try again or cancel." @@ -33849,11 +33370,6 @@ msgstr "這看起來不是有效的顏色。請試試看十六進位、rgb()、h msgid "That doesn't look like a valid URL." msgstr "這看起來不是有效的網址。" -#. Required-action form error when a new email is already used by another account. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:510 -msgid "That email is already in use." -msgstr "該電子郵件已被使用。" - #. Body of the accept-friend-request error modal when the request no longer exists. #: src/features/relationship/components/alerts/RelationshipErrorModalUtils.tsx:54 msgid "That friend request is no longer available. Refresh and try again." @@ -34089,11 +33605,6 @@ msgstr "該覆寫曾拒絕 {permissions}" msgid "The page you're looking for doesn't exist or has been moved." msgstr "您要找的頁面不存在,或可能已移動。" -#. Success toast after the phone check is set aside while an email requirement remains, so the modal stays open on the email step. Never tell someone they are done while a modal is still in front of them. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:362 -msgid "The phone check is set aside. One email step is left." -msgstr "電話驗證已暫緩。剩下一個電子郵件驗證步驟。" - #. OAuth authorize page error shown when the redirect_uri is not registered for this OAuth app. #: src/features/auth/components/pages/oauth_authorize_page/state/useAuthorizeFlow.ts:59 msgid "The provided redirect_uri is not registered for this application." @@ -34251,7 +33762,7 @@ msgstr "沒有可建立邀請的頻道。" msgid "There are no roles to assign in this community at this time, but you can create a new role in <0>{rolesSettingsPath}." msgstr "目前這個社群沒有可指派的身分組,但您可以在<0>{rolesSettingsPath}中建立新的身分組。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:193 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:195 msgid "There are no webhooks configured for this channel. Create a webhook to allow external applications to post messages." msgstr "此頻道尚未設定任何 Webhook。請建立 Webhook,以允許外部應用程式發佈訊息。" @@ -34273,7 +33784,7 @@ msgstr "載入邀請時發生錯誤。請再試一次。" msgid "There was an error loading the stickers. Try again." msgstr "載入貼圖時發生錯誤。請再試一次。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:158 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:160 msgid "There was an error loading the webhooks for this channel. Try again." msgstr "載入此頻道的 Webhook 時發生錯誤。請再試一次。" @@ -34417,7 +33928,7 @@ msgstr "此頻道一次最多可發布 10 則訊息,之後每隔 6 分鐘才 msgid "This channel can publish 10 messages in a row, then one more every 6 minutes. Try again in a few minutes." msgstr "此頻道一次最多可發布 10 則訊息,之後每 6 分鐘可再發布一則。請稍後再試。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:121 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:123 msgid "This channel does not support webhooks." msgstr "此頻道不支援 Webhook。" @@ -34550,12 +34061,12 @@ msgstr "此連結帳號尚未驗證。" #. Label in the content warning utils helper. Keep the tone plain and specific. #. Placeholder example shown in the custom content warning textarea in the community moderation settings tab. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/MatureContentSection.tsx:30 -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:153 +#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:143 #: src/features/messaging/utils/ContentWarningUtils.ts:11 msgid "This contains sensitive content." msgstr "此內容含有敏感資訊。" -#: src/features/channel/components/channel_view/DMChannelView.tsx:263 +#: src/features/channel/components/channel_view/DMChannelView.tsx:265 msgid "This conversation is no longer available." msgstr "此對話已無法使用。" @@ -34658,7 +34169,7 @@ msgid "This group has too many people" msgstr "此群組人數過多" #. Body of the error modal shown when a group DM is already at the maximum number of recipients. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:15 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:16 msgid "This group is full. Remove someone before adding more people." msgstr "此群組已滿。請先移除成員,才能再新增成員。" @@ -34715,11 +34226,6 @@ msgstr "這是來自某個社群的自訂貼圖。" msgid "This is an age-restricted channel. Updates can only go to age-restricted channels." msgstr "這是年齡限制頻道。更新只能發送到年齡限制頻道。" -#. Required-action modal intro text when phone verification is required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:228 -msgid "This is an anti-spam check. Your phone number is not linked to your account." -msgstr "這是反垃圾訊息檢查。您的電話號碼不會連結到您的帳號。" - #. Error message in the inputs tab. #: src/features/user/components/modals/tabs/component_gallery_tab/ComponentGalleryTabInputsTab.tsx:62 msgid "This is an error message" @@ -34735,16 +34241,6 @@ msgstr "此功能已停用" msgid "This is how messages appear" msgstr "訊息顯示方式" -#. Shown in the required-action modal on a self-hosted instance when setting the check aside is refused, and when it reported success but the phone requirement is still in force. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:372 -msgid "This is not available on your account right now. Ask the administrators of this instance to review it." -msgstr "您的帳號目前無法使用此功能。請向此實例的管理員申請審查。" - -#. Shown in the required-action modal when setting the check aside is refused, and when it reported success but the phone requirement is still in force. supportEmail is inserted by code, and the address is named in full because the support link may have scrolled out of view. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:367 -msgid "This is not available on your account right now. Email {supportEmail} and a person will review it." -msgstr "此功能目前在您的帳號上無法使用。請寄信至 {supportEmail},我們將請專人為您處理。" - #: src/features/channel/components/ChannelLayout.tsx:45 msgid "This is not the channel you're looking for." msgstr "這不是您要找的頻道。" @@ -34792,11 +34288,6 @@ msgstr "這是您最後一個通行金鑰,而通行金鑰是您的第二道驗 msgid "This is your last passkey. Once it's gone you won't be able to use a passkey as your second factor." msgstr "這是您最後一個通行金鑰。刪除後,您將無法再以通行金鑰作為第二道驗證。" -#. Required-action form error when the number is not a mobile line. Do not name the line type. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:566 -msgid "This isn't a mobile number, so it can't receive our text. Try a mobile number, or contact support if you think that's wrong." -msgstr "這不是手機號碼,無法接收我們的簡訊。請嘗試輸入手機號碼,或若您認為有誤,請聯絡客服。" - #. Extra file-too-large alert sentence shown when premium upload-limit upgrades are unavailable. #: src/features/messaging/components/alerts/FileSizeTooLargeModal.tsx:39 msgid "This limit is configured by your instance administrator." @@ -34864,7 +34355,7 @@ msgid "This message has already been deleted." msgstr "此訊息已被刪除。" #. Toast shown when someone tries to publish an announcement message that was already published. -#: src/features/messaging/commands/MessageCommands.tsx:115 +#: src/features/messaging/commands/MessageCommands.tsx:116 msgid "This message has already been published" msgstr "此訊息已發佈過" @@ -34874,20 +34365,10 @@ msgid "This message no longer exists." msgstr "此訊息已不存在。" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:129 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:130 msgid "This nickname will only be visible in this community" msgstr "這個暱稱只會在此社群中顯示" -#. Required-action form error when a number must use the inbound text-in challenge and the current step cannot start one. Do not say why the number was routed there. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:548 -msgid "This number is verified by texting us instead. Go back and start phone verification again to get the code and the number to text." -msgstr "這個號碼是透過傳送簡訊驗證的。請返回並重新開始電話驗證,以取得驗證碼和要傳送簡訊的號碼。" - -#. Required-action modal explanation for an inbound phone verification challenge. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:442 -msgid "This number needs text-in verification instead of an SMS from us." -msgstr "此號碼需要透過文字訊息驗證,而非我們傳送的簡訊。" - #. Notice shown in the slash-command parameter bar when a required argument was left empty. #: src/features/channel/components/SlashCommandParamBar.tsx:12 msgid "This option is required. Please provide a value." @@ -34908,16 +34389,6 @@ msgstr "此參與者已耳機靜音" msgid "This participant was deafened by moderators" msgstr "此參與者遭管理員設為耳機靜音" -#. Required-action form error when the backend rejects a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:526 -msgid "This phone number cannot be used. Try another mobile number or contact support." -msgstr "此電話號碼無法使用。請嘗試其他手機號碼或聯絡客服。" - -#. Required-action form error when the backend rejects a reused phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:530 -msgid "This phone number has already been used. Try another number or contact support." -msgstr "此電話號碼已被使用。請嘗試其他號碼或聯絡客服。" - #. Empty state in the screen-share picker shown to web users. Explains that this advanced picker requires the desktop app. #: src/features/voice/components/modals/ScreenSharePickerModal.tsx:137 msgid "This picker is only available in the desktop app." @@ -35041,7 +34512,7 @@ msgstr "此使用者在此社群中沒有任何身分組。" msgid "This user is already banned from the community." msgstr "此使用者已被社群停權。" -#: src/features/channel/components/channel_view/DMChannelView.tsx:280 +#: src/features/channel/components/channel_view/DMChannelView.tsx:282 msgid "This user is no longer available." msgstr "此使用者已無法使用。" @@ -35065,11 +34536,6 @@ msgstr "此使用者是由平台管理員強制加入此社群的。" msgid "This verification session expired. Return to {productName} and start checkout again." msgstr "此驗證工作階段已過期。請返回 {productName} 並重新開始結帳。" -#. Required-action form error when an email-change ticket or proof is invalid or expired. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:498 -msgid "This verification session expired. Start again." -msgstr "此驗證工作階段已過期。請重新開始。" - #. Body of the voice-channel-full modal. #: src/features/voice/components/alerts/VoiceChannelFullModal.tsx:12 msgid "This voice channel has reached its user limit. Try again later or join a different channel." @@ -35163,11 +34629,6 @@ msgstr "這會將您登出、清除快取檔案與已儲存的工作階段,並 msgid "This will trust all external links and skip the warning for every domain. Your existing trusted domains will be replaced. This is less secure." msgstr "這會信任所有外部連結,並略過所有網域的警告。您現有的信任網域將會被取代。此設定較不安全。" -#. Required-action modal body after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:474 -msgid "This window updates automatically after we receive your message." -msgstr "我們收到您的訊息後,此視窗會自動更新。" - #. IAR modal: rule description for a user report. #: src/features/moderation/components/report_modal/IARModalCopy.ts:153 msgid "Threats, following across spaces, or unwanted contact." @@ -35307,7 +34768,7 @@ msgid "Title bar" msgstr "標題列" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:280 +#: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:252 msgid "Title bar platform" msgstr "標題列平台" @@ -35470,18 +34931,11 @@ msgstr "色調" msgid "Tone-map HDR images to standard range, reducing peak brightness." msgstr "將 HDR 影像色調對應至標準範圍,降低峰值亮度。" -#. Required-action error shown for rate limits. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:502 -msgid "Too many attempts. Wait a bit, then try again." -msgstr "嘗試次數過多。請稍候再試。" - #. Error message in the max guilds modal. #: src/features/guild/components/alerts/MaxGuildsModal.tsx:9 msgid "Too many communities" msgstr "社群數量過多" -#. Toast error shown when the verification request is rate-limited. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:138 #: src/features/platform/transport/RestTransport.ts:21 msgid "Too many requests. Try again later." msgstr "請求次數過多。請稍後再試。" @@ -36151,8 +35605,10 @@ msgstr "無法準備任何要上傳的表情符號。發生以下錯誤:" #. Error message in the authentication backup codes view modal. Keep the tone plain and specific. #. Error message in the email change modal. +#. Error message in the email change modal. #. Error message in the password change modal. Keep the tone plain and specific. #: src/features/auth/components/modals/BackupCodesViewModal.tsx:31 +#: src/features/user/components/modals/BouncedEmailChangeModal.tsx:39 #: src/features/user/components/modals/EmailChangeModal.tsx:31 #: src/features/user/components/modals/PasswordChangeModal.tsx:30 msgid "Unable to resend code right now" @@ -36208,7 +35664,7 @@ msgstr "無法使用" #. Relationship action label for removing a block from this user. #. Settings search synonym. Used to match this term when the user types it in the settings search bar. -#: src/features/channel/components/barriers/BarrierComponents.tsx:409 +#: src/features/channel/components/barriers/BarrierComponents.tsx:401 #: src/features/relationship/utils/RelationshipMessageDescriptors.ts:45 #: src/features/user/components/modals/tabs/BlockedUsersTab.tsx:177 #: src/features/user/components/settings_utils/search_index/BlockedUsersIndex.ts:22 @@ -36245,7 +35701,7 @@ msgstr "未分類" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:14 #: src/features/channel/components/channel_header_components/developer_tools/DeveloperOptionLabels.ts:192 -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:38 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:37 msgid "Unclaimed account" msgstr "未認領的帳號" @@ -36721,7 +36177,7 @@ msgid "Unordered" msgstr "項目符號清單" #. Confirm button label on the unpin message alert. -#: src/features/channel/components/MessageActionUtils.tsx:56 +#: src/features/channel/components/MessageActionUtils.tsx:57 msgid "Unpin" msgstr "取消釘選" @@ -36746,7 +36202,7 @@ msgid "Unpin message" msgstr "取消釘選訊息" #. Body of the confirmation alert shown when unpinning a message. -#: src/features/channel/components/MessageActionUtils.tsx:52 +#: src/features/channel/components/MessageActionUtils.tsx:53 msgid "Unpin this message?" msgstr "要取消釘選這則訊息嗎?" @@ -36866,7 +36322,7 @@ msgid "Unsaved changes" msgstr "未儲存的變更" #. Error modal body shown when an entrance sound upload has an unsupported audio format. -#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:39 +#: src/features/user/components/modals/tabs/hooks/useEntranceSound.ts:40 msgid "Unsupported audio file." msgstr "不支援的音訊檔案。" @@ -36915,7 +36371,7 @@ msgid "Until I turn it back on" msgstr "直到我再次開啟" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:34 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:33 msgid "Unverified email" msgstr "未驗證的電子郵件" @@ -36958,12 +36414,7 @@ msgstr "請更新 {productName} 以檢視此訊息。" msgid "Update app" msgstr "更新應用程式" -#. Primary button in the required-action modal. Submits a code to update the account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:186 -msgid "Update email" -msgstr "更新電子郵件" - -#: src/features/user/components/modals/CustomStatusModal.tsx:421 +#: src/features/user/components/modals/CustomStatusModal.tsx:424 msgid "Update my status" msgstr "更新我的狀態" @@ -37306,18 +36757,13 @@ msgstr "在要插入圖片網址的位置使用 {url}。" msgid "Use a dedicated modal to set a message history threshold date for members who don't have the {readMessageHistoryPermissionLabel} permission." msgstr "使用專屬的彈出視窗,為沒有「{readMessageHistoryPermissionLabel}」權限的成員設定訊息歷史記錄截止日期。" -#. Required-action modal body for self-serve email recovery. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:256 -msgid "Use a different email address and verify it with a code." -msgstr "使用其他電子郵件地址,並透過驗證碼進行驗證。" - #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. #: src/features/channel/components/channel_header_components/developer_tools/NagbarControls.ts:9 msgid "Use actual" msgstr "使用實際" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:26 +#: src/features/channel/components/channel_header_components/developer_tools/OptionPresets.ts:25 msgid "Use actual premium type" msgstr "使用實際的進階方案類型" @@ -37335,16 +36781,6 @@ msgstr "使用其他方式" msgid "Use an authenticator app to generate codes for two-factor authentication" msgstr "使用驗證器應用程式產生雙重驗證碼" -#. Required-action modal body for entering a new email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:400 -msgid "Use an email address you can access. We will send a code there." -msgstr "請使用您能正常收信的電子郵件地址。我們會將驗證碼寄送到該地址。" - -#. Required-action form error when the new email matches the current account email. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:514 -msgid "Use an email that is different from your current one." -msgstr "請使用與您目前不同的電子郵件地址。" - #. Feature comparison table perk label. Shown as the row name comparing restricted vs stock limits. #: src/features/app/components/dialogs/components/FeatureComparisonTable.tsx:59 msgid "Use animated emojis" @@ -37409,16 +36845,6 @@ msgstr "在整個應用程式中使用深色主題" msgid "Use default" msgstr "使用預設值" -#. Button in the required-action modal. Starts the flow for changing to another email address. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:182 -msgid "Use different email" -msgstr "使用其他電子郵件" - -#. Button in the required-action modal. Selects the email verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:170 -msgid "Use email" -msgstr "使用電子郵件" - #. Permission description in the channel-scoped permissions editor for the Use External Emoji permission. "Other communities" means custom emoji uploaded in a different Fluxer community. #: src/features/permissions/utils/PermissionLabelDescriptors.ts:260 msgid "Use emoji from other communities in this channel." @@ -37523,15 +36949,6 @@ msgstr "要使用通行金鑰進行雙重驗證嗎?" msgid "Use passkeys to sign in without a password" msgstr "使用通行金鑰登入,無需密碼" -#. Button in the required-action modal. Selects the phone verification path. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:174 -msgid "Use phone" -msgstr "使用電話號碼" - -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:238 -msgid "Use reverification text" -msgstr "使用重新驗證文字" - #. Primary action button in the trimmer modal: accept the current selection and upload it. #: src/features/voice/components/EntranceSoundTrimmerModal.tsx:37 msgid "Use selection" @@ -37730,7 +37147,7 @@ msgstr "使用者移動頻道" #. Reason chip in the unaddable recipients alert when the user record is missing. #. Title of the error modal shown when the recipient of a DM no longer exists. #: src/features/app/components/alerts/DmActionErrorModal.tsx:24 -#: src/features/channel/components/channel_view/DMChannelView.tsx:277 +#: src/features/channel/components/channel_view/DMChannelView.tsx:279 #: src/features/channel/components/modals/UnaddableRecipientsConfirmModal.tsx:11 msgid "User not found" msgstr "找不到使用者" @@ -37947,7 +37364,7 @@ msgid "Verification" msgstr "驗證" #. Developer tools debug menu label. Internal-only surface for developers; translators may keep this terse. -#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:36 +#: src/features/channel/components/channel_header_components/developer_tools/MockingMenu.tsx:30 msgid "Verification & membership barriers" msgstr "驗證與成員資格門檻" @@ -37970,15 +37387,8 @@ msgstr "驗證碼" msgid "Verification code sent" msgstr "驗證碼已送出" -#. Toast confirmation after sending a verification code to the new email address during email update. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:120 -msgid "Verification code sent. Check your new email inbox." -msgstr "驗證碼已寄出。請檢查您的新電子郵件收件匣。" - -#. Toast confirmation after a verification email has been sent to the existing email address. #. Toast confirmation in the email verification alert after a verification email has been sent. #: src/features/app/components/dialogs/components/EmailVerificationAlert.tsx:19 -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:134 msgid "Verification email sent. Check your inbox." msgstr "驗證電子郵件已寄出。請檢查您的收件匣。" @@ -38038,23 +37448,6 @@ msgstr "驗證身分表單" msgid "Verify it's you" msgstr "驗證是您本人操作" -#. Primary button in the required-action modal. Sends or submits phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:178 -#: src/features/channel/components/barriers/BarrierComponents.tsx:272 -#: src/features/user/components/modals/PhoneAddModal.tsx:405 -msgid "Verify phone" -msgstr "驗證電話號碼" - -#. Short label in the phone add modal. Keep it concise. -#: src/features/user/components/modals/PhoneAddModal.tsx:53 -msgid "Verify phone number" -msgstr "驗證電話號碼" - -#. Label in the phone add modal. -#: src/features/user/components/modals/PhoneAddModal.tsx:49 -msgid "Verify phone number form" -msgstr "驗證電話號碼表單" - #. Title of the error modal shown when an unverified account tries to start a DM. #. Title shown when an unverified account cannot start a DM or group DM. #: src/features/app/components/alerts/DmActionErrorModal.tsx:40 @@ -38082,22 +37475,22 @@ msgid "Verify your email before adding an authenticator app." msgstr "請先驗證您的電子郵件,然後再新增驗證器應用程式。" #. Description text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:116 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:117 msgid "Verify your email before changing your community nickname, avatar, banner, bio, pronouns, or accent color." msgstr "請先驗證您的電子郵件,才能更改社群暱稱、大頭貼、橫幅、個人簡介、代名詞或強調色。" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:120 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:121 msgid "Verify your email before changing your username, display name, avatar, banner, bio, pronouns, time zone, or {premiumProductName} badge privacy." msgstr "請先驗證您的電子郵件,然後再變更您的使用者名稱、顯示名稱、大頭貼、橫幅、個人簡介、代名詞、時區或 {premiumProductName} 徽章隱私設定。" #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:84 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:85 msgid "Verify your email before editing this community profile. You can still preview it here." msgstr "請先驗證您的電子郵件,才能編輯這個社群個人檔案。您仍然可以在這裡預覽。" #. Description text in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:88 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:89 msgid "Verify your email before editing your profile. You can still preview it here." msgstr "請先驗證您的電子郵件,然後再編輯個人檔案。您仍然可以在這裡預覽。" @@ -38113,11 +37506,6 @@ msgstr "請先驗證您的電子郵件,才能傳送好友邀請。" msgid "Verify your email first" msgstr "請先驗證您的電子郵件" -#. Required-action modal body when the user must verify email or phone for the first time. Preserve {productName}; it is inserted by code and must appear verbatim in the translation. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:69 -msgid "Verify your email or phone to continue using {productName}." -msgstr "請驗證您的電子郵件或電話,以繼續使用 {productName}。" - #. Plutonium page note under disabled buttons for unverified accounts. premiumProductName is the paid tier name. #: src/features/premium/components/plutonium_page/PlutoniumPageMessages.ts:242 msgid "Verify your email to buy {premiumProductName}." @@ -38133,18 +37521,13 @@ msgstr "請驗證您的電子郵件以購買禮物。" msgid "Verify your email to change your username" msgstr "請驗證您的電子郵件以更改使用者名稱" -#. Required-action modal body for first-time email verification. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:53 -msgid "Verify your email to continue using {productName}." -msgstr "請驗證您的電子郵件,以繼續使用 {productName}。" - #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:108 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:109 msgid "Verify your email to edit this community profile" msgstr "請驗證您的電子郵件以編輯此社群個人檔案" #. Label in the my profile tab. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:112 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:113 msgid "Verify your email to edit your profile" msgstr "請驗證您的電子郵件以編輯個人檔案" @@ -38181,13 +37564,6 @@ msgstr "佛蒙特州" msgid "Version" msgstr "版本" -#. Activity log value naming the highest member verification level of a community. -#. Member verification level option in the community moderation settings tab. Short standalone severity label. -#: src/features/guild/components/modals/guild_tabs/GuildModerationTab.tsx:85 -#: src/features/guild/utils/guild_tabs/audit_log/AuditLogSharedMessages.ts:69 -msgid "Very high" -msgstr "非常高" - #. Settings search synonym. Used to match this term when the user types it in the settings search bar. #: src/features/user/components/settings_utils/section_registry/AccessibilitySections.ts:47 msgid "Vibrancy" @@ -38934,20 +38310,11 @@ msgstr "提高音量" msgid "Wait a moment before deleting more messages." msgstr "請稍候再刪除其他訊息。" -#: src/features/user/components/modals/PhoneAddModal.tsx:349 -msgid "Wait a moment. This window will close automatically once we receive your message." -msgstr "請稍候,收到您的訊息後此視窗將自動關閉。" - #. Description under the slowmode slider in channel settings. bypassSlowmodePermissionLabel is the localized Bypass Slowmode permission name. #: src/features/channel/components/modals/channel_tabs/channel_overview_tab/SlowmodeControl.tsx:29 msgid "Wait between messages. Members with \"{bypassSlowmodePermissionLabel}\" can bypass this." msgstr "訊息之間的間隔時間。擁有「{bypassSlowmodePermissionLabel}」權限的成員可以略過此限制。" -#. Required-action modal carousel step title after the user sends an inbound phone verification text. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:470 -msgid "Wait here" -msgstr "請在此等候" - #. Tooltip explaining that video / screen share controls are gated while the voice connection is not yet ready. #: src/features/voice/components/voice_connection_status/LocalParticipantControls.tsx:45 msgid "Waiting for connection..." @@ -38958,12 +38325,12 @@ msgid "Waiting for passkey…" msgstr "正在等候通行金鑰…" #. Inline notice in the forward modal when slowmode is active in the selected target channel. forwardChannelDisplayName is the channel name. -#: src/features/messaging/components/modals/ForwardModal.tsx:74 +#: src/features/messaging/components/modals/ForwardModal.tsx:76 msgid "Waiting for slowmode in {forwardChannelDisplayName} to expire." msgstr "正在等待「{forwardChannelDisplayName}」的慢速模式結束。" #. Inline notice in the forward modal when slowmode is active in one or more selected target channels. -#: src/features/messaging/components/modals/ForwardModal.tsx:79 +#: src/features/messaging/components/modals/ForwardModal.tsx:81 msgid "Waiting for slowmode in one or more selected channels to expire." msgstr "正在等待一個或多個所選頻道的慢速模式結束。" @@ -39115,16 +38482,6 @@ msgstr "我們無法讀取此主題。它可能已損壞或無效。" msgid "We couldn't remove that account. Try again." msgstr "我們無法移除該帳號。請再試一次。" -#. Required-action form error when a phone attempt cannot be verified automatically and needs a support review. Keep it non-specific. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:571 -msgid "We couldn't verify this number automatically. Contact support and a person will review your account." -msgstr "我們無法自動驗證此號碼。請聯絡客服,將由專人審核您的帳號。" - -#. Required-action form error when the phone number's country is on the SMS send ban list. Must not imply the number itself is invalid. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:542 -msgid "We don't send verification texts to this country. Try a mobile number from another country, or contact support." -msgstr "我們不向此國家/地區傳送驗證簡訊。請嘗試使用其他國家的手機號碼,或聯絡客服。" - #. Modal body for existing-subscription block. Directs the user to the billing portal and addresses the just-paid race case. Keep plain and reassuring. #: src/features/app/components/dialogs/components/plutonium/hooks/useCheckoutActions.tsx:132 msgid "We found an existing {premiumProductFullName} subscription for this account. Manage it in the secure billing portal to update payment details or check renewal status. If you just paid, wait a minute and reopen this page." @@ -39135,16 +38492,6 @@ msgstr "我們發現此帳號已有 {premiumProductFullName} 訂閱。請前往 msgid "We lowered the price of {premiumProductName} in Brazil. It is now {monthlyPrice} a month or {yearlyPrice} a year." msgstr "我們在巴西調降了 {premiumProductName} 的價格。現在每月是 {monthlyPrice},每年是 {yearlyPrice}。" -#. Required-action modal intro text for a generic verification requirement. productName is inserted by code. Keep it calm and concise. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:210 -msgid "We need one verification step before you continue. This helps protect accounts and keep spam off {productName}." -msgstr "在您繼續之前,我們需要一個驗證步驟。這有助於保護帳號並防止垃圾訊息出現在 {productName} 上。" - -#. Required-action modal intro text when both email and phone verification are required. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:216 -msgid "We need two verification steps before you continue. We will show one step at a time." -msgstr "在您繼續之前,我們需要兩個驗證步驟。我們會一次顯示一個步驟。" - #: src/features/auth/components/modals/BackupCodesModal.tsx:40 msgid "We recommend saving these codes now so that you don't get locked out of your account." msgstr "建議您現在就儲存這些備用碼,以免帳號被鎖定而無法登入。" @@ -39167,11 +38514,6 @@ msgstr "我們已將驗證碼傳送至 {email}。" msgid "We will prefill {prefillEmail} once browser sign-in opens." msgstr "瀏覽器登入開啟後,我們會預填 {prefillEmail}。" -#. Required-action modal body for entering a phone number. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:417 -msgid "We will send an SMS code when available." -msgstr "可用時,我們會傳送簡訊驗證碼。" - #: src/features/expressions/components/modals/GiftSendToFriendModal.tsx:87 msgid "We'd love to give you more than a lifetime of {PREMIUM_PRODUCT_NAME}, but that breaks the space-time continuum. Send the gift to a friend instead?" msgstr "我們很想送您比終身更久的 {PREMIUM_PRODUCT_NAME},但那會打破時空連續體。改成把禮物送給好友如何?" @@ -39197,8 +38539,8 @@ msgid "We'll process this as soon as possible. You'll get an email when your arc msgstr "我們會盡快處理。當您的封存檔準備好時,您會收到一封電子郵件。" #: src/features/auth/components/pages/EmailRevertPage.tsx:75 -msgid "We'll restore your previous email, sign out old sessions, remove phone numbers, disable MFA, and secure your account with a new password." -msgstr "我們會還原您先前的電子郵件、登出舊的工作階段、移除電話號碼、停用多重要素驗證,並以新密碼保護您的帳號。" +msgid "We'll restore your previous email, sign out old sessions, disable MFA, and secure your account with a new password." +msgstr "我們將會復原您先前的電子郵件、登出舊的裝置,停用多重要素驗證,並以新密碼保護您的帳號。" #: src/features/moderation/components/report/ReportStepEmail.tsx:46 msgid "We'll send a short code to confirm you can receive updates about this report." @@ -39212,10 +38554,6 @@ msgstr "我們會傳送驗證碼到您的電子郵件,以便您變更密碼。 msgid "We'll send a verification code to your email before you can view your backup codes." msgstr "我們會在您查看備用碼前,將驗證碼寄送到您的電子郵件。" -#: src/features/user/components/modals/PhoneAddModal.tsx:284 -msgid "We'll send an SMS code when available. Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "我們會在號碼可用時傳送 SMS 驗證碼。您的號碼不會連結到您的帳號。我們只會保留一個加密標記,不含使用者 ID,並在有限的時間內刪除。" - #: src/features/user/components/modals/EmailChangeModal.tsx:189 msgid "We'll verify your current email and then your new email with one-time codes." msgstr "我們會透過一次性驗證碼來驗證您目前的電子郵件,然後再驗證您的新電子郵件。" @@ -39307,7 +38645,7 @@ msgstr "Webhook {currentName}" #. Audit log entry label. A new webhook integration was created. #. Short label in the channel webhooks tab. Keep it concise. #: src/features/app/config/AuditLogConstants.ts:91 -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:33 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:34 msgid "Webhook created" msgstr "Webhook 已建立" @@ -39331,7 +38669,7 @@ msgstr "Webhook 已更新" msgid "Webhook URL" msgstr "Webhook 網址" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:93 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:94 #: src/features/guild/components/modals/guild_tabs/GuildWebhooksTab.tsx:106 msgid "Webhooks" msgstr "Webhook" @@ -39486,8 +38824,8 @@ msgstr "您分享的內容沒有更新" #. Placeholder question in the custom status text field. #. Placeholder question in the custom status text field. -#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:40 -#: src/features/user/components/modals/CustomStatusModal.tsx:50 +#: src/features/user/components/modals/CustomStatusBottomSheet.tsx:41 +#: src/features/user/components/modals/CustomStatusModal.tsx:51 msgid "What's happening?" msgstr "近況如何?" @@ -39967,21 +39305,11 @@ msgstr "您可以在 <2>{rolesSettingsPath} 中,從 <1>{EVERYONE_MENTION}< msgid "You can sign back in at any time." msgstr "您可以隨時重新登入。" -#. Last line of the set-aside confirmation in the required-action modal on a self-hosted instance. The instance is run by its own administrators, not by the app maker. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:342 -msgid "You can still ask the administrators of this instance for a human review at any time." -msgstr "您仍可隨時請此實例的管理員進行人工審查。" - #. Invite page subtext shown when community admins pause invites. Explains that account actions still work. #: src/features/invite/utils/InviteMessageDescriptors.ts:47 msgid "You can still create an account or sign in. If invites are re-enabled later, you can use this same link to join." msgstr "您仍然可以建立帳號或登入。如果稍後重新啟用邀請,您可以使用相同的連結加入。" -#. Last line of the set-aside confirmation in the required-action modal. supportEmail is inserted by code. The self-serve route never closes the support route. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:337 -msgid "You can still email {supportEmail} for a human review at any time." -msgstr "您隨時都可以寄信到 {supportEmail} 請求人工審查。" - #: src/features/user/components/modals/tabs/my_profile_tab/BioEditor.tsx:288 msgid "You can use links, emoji, and Markdown." msgstr "您可以使用連結、表情符號和 Markdown。" @@ -39992,7 +39320,7 @@ msgid "You can't add expressions there" msgstr "您無法在那裡新增表情符號" #. Error message in the messaging commands. -#: src/features/messaging/commands/ReactionCommands.tsx:26 +#: src/features/messaging/commands/ReactionCommands.tsx:27 msgid "You can't add new reactions while you're timed out." msgstr "您在禁言期間無法新增反應。" @@ -40007,7 +39335,7 @@ msgid "You can't befriend yourself" msgstr "您無法將自己新增為朋友" #. Label in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:133 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:134 msgid "You can't change your nickname here" msgstr "您無法在這裡變更暱稱" @@ -40094,7 +39422,7 @@ msgstr "您無法傳送好友邀請給自己。" msgid "You can't send messages in this channel." msgstr "您無法在此頻道中傳送訊息。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:351 +#: src/features/channel/components/barriers/BarrierComponents.tsx:343 msgid "You can't send messages in this community." msgstr "您無法在此社群中傳送訊息。" @@ -40229,7 +39557,7 @@ msgid "You don't have permission to do this to this member." msgstr "您沒有權限對此成員執行此操作。" #. Tooltip on the disabled Join voice channel button shown when the user lacks the Connect permission in the voice channel. -#: src/features/channel/components/channel_view/GuildChannelView.tsx:69 +#: src/features/channel/components/channel_view/GuildChannelView.tsx:70 msgid "You don't have permission to join this voice channel" msgstr "您沒有權限加入此語音頻道" @@ -40243,7 +39571,7 @@ msgstr "您沒有重新命名此表情符號的權限。名稱已還原為先前 msgid "You have been banned from this community." msgstr "您已被此社群停權。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:395 +#: src/features/channel/components/barriers/BarrierComponents.tsx:387 msgid "You have blocked {username}. Unblock them to send messages." msgstr "您已封鎖 {username}。解除封鎖才能傳送訊息。" @@ -40262,7 +39590,7 @@ msgid "You have unsaved changes." msgstr "您有未儲存的變更。" #. Warning text in the my profile tab. Keep the tone plain and specific. -#: src/features/user/components/modals/tabs/MyProfileTab.tsx:80 +#: src/features/user/components/modals/tabs/MyProfileTab.tsx:81 msgid "You have unsaved changes. Save or reset before leaving." msgstr "您有未儲存的變更。請先儲存或重設,再離開。" @@ -40270,7 +39598,7 @@ msgstr "您有未儲存的變更。請先儲存或重設,再離開。" msgid "You haven't authorized any applications to access your account." msgstr "您尚未授權任何應用程式存取您的帳號。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:228 +#: src/features/channel/components/barriers/BarrierComponents.tsx:234 msgid "You haven't been a member of this community long enough to send messages." msgstr "您加入此社群的時間還不夠長,因此無法傳送訊息。" @@ -40326,11 +39654,6 @@ msgstr "您必須同意服務條款才能建立帳號" msgid "You must verify your email before sending a report." msgstr "您必須先驗證電子郵件,才能傳送檢舉。" -#. Body text shown when the user lacks access to their old email and must use phone verification or contact support. Keep plain and calm. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:128 -msgid "You need access to your current email to change it from here. Use phone verification if available or contact support." -msgstr "您需要存取目前的電子郵件,才能從這裡變更。如果可以,請使用電話驗證,或聯絡客服。" - #. Forward dialog error shown when the forwarded message has attachments and the user lacks Attach Files in the target channel. #: src/features/app/components/dialogs/shared/UseForwardDestinations.ts:64 msgid "You need the \"{attachFilesPermissionLabel}\" permission to attach files in this channel" @@ -40356,7 +39679,7 @@ msgstr "您需要「{manageRolesPermissionLabel}」權限才能編輯這些權 msgid "You need the \"{manageRolesPermissionLabel}\" permission to edit these permissions." msgstr "您需要「{manageRolesPermissionLabel}」權限才能編輯這些權限。" -#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:131 +#: src/features/channel/components/modals/channel_tabs/ChannelWebhooksTab.tsx:133 msgid "You need the \"{manageWebhooksPermissionLabel}\" permission to view and edit webhooks for this channel." msgstr "您需要「{manageWebhooksPermissionLabel}」權限才能檢視及編輯此頻道的 Webhook。" @@ -40384,18 +39707,14 @@ msgstr "您必須先認領帳號,才能建立社群。" msgid "You need to claim your account before you can start a direct message." msgstr "您必須先認領帳號,才能開始傳送私訊。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:420 +#: src/features/channel/components/barriers/BarrierComponents.tsx:412 msgid "You need to claim your account to send direct messages." msgstr "您需要先認領帳號才能傳送私訊。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:143 +#: src/features/channel/components/barriers/BarrierComponents.tsx:144 msgid "You need to claim your account to send messages in this community." msgstr "您必須先認領帳號,才能在這個社群傳送訊息。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:251 -msgid "You need to verify a phone number to send messages in this community." -msgstr "您需要驗證電話號碼才能在這個社群傳送訊息。" - #: src/features/guild/components/modals/add_guild_modal/GuildCreateForm.tsx:232 #: src/features/guild/components/modals/add_guild_modal/TemplateImportForm.tsx:460 msgid "You need to verify your email address before you can create a community." @@ -40415,7 +39734,7 @@ msgstr "您需要先驗證電子郵件地址,才能開始傳送私訊。" msgid "You need to verify your email before you can purchase {premiumProductFullName}." msgstr "您必須先驗證電子郵件,才能購買 {premiumProductFullName}。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:171 +#: src/features/channel/components/barriers/BarrierComponents.tsx:172 msgid "You need to verify your email to send messages in this community." msgstr "您需要驗證電子郵件才能在這個社群傳送訊息。" @@ -40424,11 +39743,6 @@ msgstr "您需要驗證電子郵件才能在這個社群傳送訊息。" msgid "You or someone you're adding already has the maximum number of group DMs open. Leave one and try again." msgstr "您或您要新增的對象已達群組私訊數量上限。請先離開一個,然後再試一次。" -#. Confirmation line in the required-action modal explaining that communities the user owns are kept rather than left. ownedNames is a comma-separated list inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:327 -msgid "You stay in {ownedNames}. Owners cannot leave their own community." -msgstr "您會留在 {ownedNames}。社群擁有者無法離開自己的社群。" - #. Voice chat status tooltip for the current user. A moderator deafened them so they cannot hear voice chat. #: src/features/voice/utils/VoiceMessageDescriptors.ts:61 msgid "You were deafened by moderators" @@ -40439,21 +39753,6 @@ msgstr "您已遭管理員設為耳機靜音" msgid "You will be taken to {redirectHostname} after authorizing." msgstr "授權後,您將會被導向 {redirectHostname}。" -#. Hint under the set-aside button in the required-action modal when the user is in communities that trigger the check. count is inserted by code. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:301 -msgid "You will leave {count, plural, one {# community} other {# communities}} that this check applies to, and your account will work normally again." -msgstr "您將離開 {count, plural, one {# 個社群} other {# 個社群}},這些社群會觸發此檢查,您的帳號將恢復正常。" - -#. Confirmation line in the required-action modal, shown only when the user is in communities that trigger the check. guildNames is a comma-separated list inserted by code. Both reassurances answer fears people actually have. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:322 -msgid "You will leave {guildNames}. Nothing you posted is deleted, and you can join again later." -msgstr "您將離開 {guildNames}。您發布的內容不會被刪除,之後也可以再次加入。" - -#. Confirmation line in the required-action modal when an email requirement remains alongside the phone check, so the modal stays open afterwards. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:332 -msgid "You will still need to finish the email step." -msgstr "您還是需要完成電子郵件驗證步驟。" - #. Security settings: confirmation modal body for turning off passkey-based two-factor authentication when the account also has an authenticator app. #: src/features/user/components/modals/tabs/account_security_tab/SecurityTab.tsx:74 msgid "You won't be asked for a passkey after your password anymore. Your authenticator app stays as your second factor." @@ -40588,7 +39887,7 @@ msgid "You're going too fast" msgstr "您的操作太頻繁了" #. Body of the error modal shown when adding a friend to a group DM is rate limited. -#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:19 +#: src/features/channel/components/alerts/GroupDmRecipientErrorModalUtils.tsx:20 msgid "You're going too fast. Wait a moment and try again." msgstr "您的操作太頻繁了。請稍候片刻再試一次。" @@ -40636,7 +39935,7 @@ msgstr "您傳送訊息的速度太快了" msgid "You're streaming!" msgstr "您正在直播!" -#: src/features/channel/components/barriers/BarrierComponents.tsx:298 +#: src/features/channel/components/barriers/BarrierComponents.tsx:290 msgid "You're timed out. Messaging, reactions, and voice are paused until the timeout expires." msgstr "您已被禁言。在禁言結束前,訊息、反應和語音功能將會暫停。" @@ -40764,25 +40063,25 @@ msgstr "您的 {storeName} 續訂付款失敗,但 <0/> 會保持啟用狀態 msgid "Your account" msgstr "您的帳號" -#. First line of the set-aside confirmation in the required-action modal. Always shown. Says can rather than will, because the check may or may not come back. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:316 -msgid "Your account goes back to normal right away and you will not need a phone number now. This is not a permanent exemption, and we can ask for this check again later." -msgstr "您的帳號會立即恢復正常,且您暫時不需要電話號碼。這並非永久豁免,我們之後仍可能要求您再次進行驗證。" - #: src/features/connection/components/pages/ConnectionCallbackPage.tsx:29 msgid "Your account has been linked successfully. You can now close this tab and return to the app." msgstr "您的帳號已成功連結。現在您可以關閉此分頁並返回應用程式。" -#. Success toast after the phone check is set aside and no verification steps remain. Deliberately count-free, because any communities that were left already disappear from the sidebar. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:357 -msgid "Your account is back to normal." -msgstr "您的帳號已恢復正常。" +#. Title of the error modal shown when an action fails because the current account is limited. +#: src/features/user/utils/AccountLimitUtils.ts:15 +msgid "Your account is limited" +msgstr "您的帳號受限" + +#. Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile. +#: src/features/user/utils/AccountLimitUtils.ts:10 +msgid "Your account is limited. Check your email for how to lift it." +msgstr "你的帳號受到限制。請檢查你的電子郵件,了解如何解除限制。" #: src/features/app/components/dialogs/components/UnclaimedAccountAlert.tsx:26 msgid "Your account is not yet claimed. Without an email and password, you won't be able to sign in from other devices and you could lose access to your account. Claim your account now to secure it." msgstr "您的帳號尚未認領。如果沒有電子郵件和密碼,您將無法從其他裝置登入,並可能因此失去帳號的存取權。請立即認領您的帳號以確保安全。" -#: src/features/channel/components/barriers/BarrierComponents.tsx:205 +#: src/features/channel/components/barriers/BarrierComponents.tsx:211 msgid "Your account is too new to send messages in this community." msgstr "您的帳號建立時間太短,無法在此社群傳送訊息。" @@ -40800,11 +40099,6 @@ msgstr "您的帳號需要多重要素驗證,但此裝置上未設定任何支 msgid "Your account will no longer be protected by two-factor authentication when you sign in with your password. You'll also lose elevated permissions in servers that require two-factor authentication." msgstr "使用密碼登入時,您的帳號將不再受雙重驗證保護。您也會失去在要求雙重驗證的社群中的進階權限。" -#. Hint under the set-aside button in the required-action modal when the user is in no community that triggers the check. This is the common case. Do not phrase it as undoing a join. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:295 -msgid "Your account works normally again straight away and nothing is removed. We can ask for this check again later." -msgstr "您的帳號會立即恢復正常,且不會移除任何項目。我們可以稍後再要求進行這次檢查。" - #. Modal body shown when the safety system blocks the requested action. Keep plain and calm; offer support path. #: src/features/auth/components/ContentBlockedHandler.tsx:14 msgid "Your action could not be completed because it was flagged by our safety systems. If you believe this is a mistake, please contact support." @@ -40827,13 +40121,8 @@ msgstr "正在檢查您的卡片是否適用當地定價。這通常很快就會 msgid "Your card is eligible. Redirecting you to the payment page now." msgstr "您的卡片符合資格。正在將您重新導向至付款頁面。" -#. Required-action form error when the carrier lookup says the number does not exist. Leaves room for the lookup to be wrong. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:560 -msgid "Your carrier says this number isn't in service. Check it and try again, or contact support if it's correct." -msgstr "您的電信業者表示此號碼未啟用。請檢查號碼後再試一次,或若號碼正確,請聯絡客服。" - #. Body of the confirmation shown before saving an edit to a message published from an announcement channel. -#: src/features/messaging/commands/MessageCommands.tsx:102 +#: src/features/messaging/commands/MessageCommands.tsx:103 msgid "Your changes reach every community that follows this channel, which can take a minute. Each published message allows 3 quick edits, then 1 every 20 minutes." msgstr "你的變更會傳送給所有追蹤此頻道的社群,這可能需要一分鐘。每則已發布的訊息可快速編輯 3 次,之後每 20 分鐘可編輯 1 次。" @@ -40869,21 +40158,6 @@ msgstr "您的裝置會要求您儲存 {name} 的更新通行金鑰。這會取 msgid "Your device will ask you to save an updated passkey for {name}. Use the same phone or security key you just used." msgstr "您的裝置會要求您儲存 {name} 的更新通行金鑰。請使用您剛才使用的同一支手機或安全金鑰。" -#. Toast confirmation after the email address has been successfully updated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:124 -msgid "Your email address has been updated." -msgstr "您的電子郵件地址已更新。" - -#. Required-action modal intro text when the current account email bounced and must be replaced. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:224 -msgid "Your email could not receive messages. Add a working email so we can keep your account reachable." -msgstr "您的電子郵件無法接收訊息。請新增一個可用的電子郵件,以便我們能持續與您聯絡。" - -#. Required-action modal body. Explains the email needs updating because delivery failed. Product name is interpolated. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:44 -msgid "Your email couldn't receive messages. Update it to continue using {productName}." -msgstr "您的電子郵件無法接收訊息。請更新電子郵件,以繼續使用 {productName}。" - #: src/features/auth/components/pages/VerifyEmailPage.tsx:97 msgid "Your email has been verified. You can now sign in to your account." msgstr "您的電子郵件已驗證。您現在可以登入帳號。" @@ -41000,21 +40274,11 @@ msgstr "您的訊息未更新" msgid "Your most recent purchase is no longer within the refund window. Contact support for billing issues." msgstr "您最近的購買已超出退款期限。如需處理帳務問題,請聯絡客服。" -#. Placeholder text inside the new email field. Sentence-fragment hint, intentionally lowercase. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:88 -msgid "your new email" -msgstr "您的新電子郵件" - #. Description for the /nick nickname option. #: src/features/devtools/hooks/useCommands.ts:79 msgid "Your new nickname, or leave blank to reset it." msgstr "您的新暱稱,留空則重設。" -#. Required-action modal privacy note for phone verification. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:421 -msgid "Your number is not linked to your account. We keep only an encrypted marker, with no user ID, for a limited time." -msgstr "您的號碼未連結至您的帳戶。我們僅會暫時保留一個加密標記,不含使用者 ID。" - #: src/features/premium/components/pages/PremiumCallbackPage.tsx:152 msgid "Your payment was canceled. You can now close this tab and return to the app." msgstr "您的付款已取消。現在您可以關閉此分頁並返回應用程式。" @@ -41054,11 +40318,6 @@ msgstr "您已購買的禮物" msgid "your region" msgstr "您的地區" -#. Required-action modal body for an extra anti-spam verification during registration. -#: src/features/auth/components/modals/required_action/RequiredActionDescriptors.ts:61 -msgid "Your registration needs an extra anti-spam check before you can continue." -msgstr "您的註冊需要額外的防垃圾訊息驗證,才能繼續。" - #. Plutonium subscription card text shown while a failed renewal payment is being retried. {graceDate} is a date already formatted and localized by code; never write a date into the translation. #: src/features/app/components/dialogs/components/plutonium/SubscriptionCard.tsx:492 msgid "Your renewal payment failed but <0/> stay active until <1>{graceDate}. Update your payment method before then to keep your subscription." diff --git a/fluxer_app/src/features/invite/commands/InviteCommands.tsx b/fluxer_app/src/features/invite/commands/InviteCommands.tsx index 2286b9b2a..d6ad17463 100644 --- a/fluxer_app/src/features/invite/commands/InviteCommands.tsx +++ b/fluxer_app/src/features/invite/commands/InviteCommands.tsx @@ -19,10 +19,11 @@ import * as NavigationCommands from '@app/features/navigation/commands/Navigatio import {http} from '@app/features/platform/transport/RestTransport'; import {HttpError} from '@app/features/platform/types/EndpointError'; import {Logger} from '@app/features/platform/utils/AppLogger'; -import {failureCode} from '@app/features/platform/utils/ResponseInspection'; +import {failureCode, failureMessage} from '@app/features/platform/utils/ResponseInspection'; import * as ModalCommands from '@app/features/ui/commands/ModalCommands'; import {modal} from '@app/features/ui/commands/ModalCommands'; import Users from '@app/features/user/state/Users'; +import {showAccountLimitedModal} from '@app/features/user/utils/AccountLimitUtils'; import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; import {ME} from '@fluxer/constants/src/AppConstants'; import {ChannelTypes} from '@fluxer/constants/src/ChannelConstants'; @@ -88,13 +89,9 @@ function showGuildInviteAcceptFailure( responseErr: HttpError | null, ): void { const isRaidDetected = guildInviteFeatures(invite).includes(GuildFeatures.RAID_DETECTED); - if ( - errorCode === APIErrorCodes.ACCOUNT_SUSPICIOUS_ACTIVITY && - (Users.currentUser?.requiredActions?.length ?? 0) > 0 - ) { - return; - } - if (errorCode === APIErrorCodes.INVITES_DISABLED) { + if (errorCode === APIErrorCodes.ACCOUNT_LIMITED) { + showAccountLimitedModal(responseErr ? failureMessage(responseErr) : undefined); + } else if (errorCode === APIErrorCodes.INVITES_DISABLED) { ModalCommands.push( modal(() => ( { ); return true; } + if (errorCode === APIErrorCodes.ACCOUNT_LIMITED) { + logger.debug('Account limited, not retrying'); + showAccountLimitedModal(failureMessage(error)); + return true; + } if (errorCode === APIErrorCodes.COMMUNICATION_DISABLED) { logger.debug('Communication disabled while timed out, not retrying'); ToastCommands.createToast({ @@ -298,6 +304,7 @@ export async function loadMoreReactions( } export function addReaction(i18n: I18n, channelId: string, messageId: string, emoji: ReactionEmoji): void { + if (blockIfAccountLimited()) return; logger.debug(`Adding reaction ${emoji.name} to message ${messageId}`); const apiFunc = () => addReactionRequest(channelId, messageId, emoji); performReactionAction(i18n, 'MESSAGE_REACTION_ADD', apiFunc, channelId, messageId, emoji); diff --git a/fluxer_app/src/features/messaging/components/modals/ForwardModal.tsx b/fluxer_app/src/features/messaging/components/modals/ForwardModal.tsx index 86c4fc18f..8b97f9f57 100644 --- a/fluxer_app/src/features/messaging/components/modals/ForwardModal.tsx +++ b/fluxer_app/src/features/messaging/components/modals/ForwardModal.tsx @@ -42,6 +42,8 @@ import FocusRing from '@app/features/ui/focus_ring/FocusRing'; import {Popout} from '@app/features/ui/popover/PopoverPopout'; import MobileLayout from '@app/features/ui/state/MobileLayout'; import type {User} from '@app/features/user/models/User'; +import Users from '@app/features/user/state/Users'; +import {blockIfAccountLimited, showAccountLimitedModal} from '@app/features/user/utils/AccountLimitUtils'; import {MAX_MESSAGE_LENGTH_PREMIUM} from '@fluxer/constants/src/LimitConstants'; import type {I18n} from '@lingui/core'; import {msg} from '@lingui/core/macro'; @@ -269,6 +271,7 @@ export const ForwardModal = observer( const isCommentCounterVisible = actualOptionalMessage.length > user.maxMessageLength * 0.8; const handleForward = async (skipNavigation = false) => { if (selected.length === 0) return; + if (blockIfAccountLimited()) return; if (isForwarding) return; if (isSendBlockedBySlowmode) return; if (!isCommentComposerDisabled && isCommentOverLimit) { @@ -302,6 +305,9 @@ export const ForwardModal = observer( actualMessage, ); if (!forwarded) { + if (Users.currentUser?.accountLimited === true) { + showAccountLimitedModal(); + } return; } ToastCommands.createToast({ diff --git a/fluxer_app/src/features/messaging/state/MessageQueue.tsx b/fluxer_app/src/features/messaging/state/MessageQueue.tsx index e8eab4f0e..8584f2c66 100644 --- a/fluxer_app/src/features/messaging/state/MessageQueue.tsx +++ b/fluxer_app/src/features/messaging/state/MessageQueue.tsx @@ -1271,7 +1271,11 @@ export class MessageQueue extends Queue { - return Sudo.hasValidToken() - ? {} - : await SudoPrompt.requestVerification({ - method: 'POST', - path: Endpoints.USER_EMAIL_CHANGE_APPLY, - }); -} - -async function requestEmailApply(emailToken: string): Promise { - const response = await http.post(Endpoints.USER_EMAIL_CHANGE_APPLY, { - body: {email_token: emailToken, ...(await emailApplySudoPayload())}, - }); - return response.body; -} - function webAuthnRegistrationBody( response: RegistrationResponseJSON, challenge: string, @@ -281,76 +231,6 @@ export async function checkFluxerTagAvailability({ } } -export async function getPhoneGateEscapePreview(): Promise { - try { - logger.debug('Fetching phone gate escape preview'); - const response = await http.get(Endpoints.USER_REQUIRED_ACTION_PHONE_GATE_ESCAPE); - return response.body; - } catch (error) { - logger.error('Failed to fetch phone gate escape preview', error); - throw error; - } -} - -export async function executePhoneGateEscape(): Promise { - try { - logger.debug('Setting the phone gate check aside'); - const response = await http.post(Endpoints.USER_REQUIRED_ACTION_PHONE_GATE_ESCAPE, {body: {}}); - logger.debug('Phone gate check set aside'); - return response.body; - } catch (error) { - logger.error('Failed to set the phone gate check aside', error); - throw error; - } -} - -export async function startInboundPhoneChallenge(): Promise { - try { - logger.debug('Starting inbound phone challenge'); - const response = await http.post(Endpoints.USER_PHONE_INBOUND_CHALLENGE, { - body: {}, - }); - logger.debug('Inbound phone challenge started'); - return response.body; - } catch (error) { - logger.error('Failed to start inbound phone challenge', error); - throw error; - } -} - -export async function sendPhoneVerification( - phone: string, - channel?: PhoneVerificationSendChannel, -): Promise { - try { - logger.debug('Sending phone verification code'); - const response = await http.post( - Endpoints.USER_PHONE_SEND_VERIFICATION, - {body: phoneVerificationRequest(phone, channel)}, - ); - logger.debug('Phone verification code sent'); - if (!response.body) return {channel: 'sms'}; - return response.body; - } catch (error) { - logger.error('Failed to send phone verification code', error); - throw error; - } -} - -export async function verifyPhone(phone: string, code: string): Promise { - try { - logger.debug('Verifying phone code'); - const response = await http.post(Endpoints.USER_PHONE_VERIFY, { - body: phoneCodeRequest(phone, code), - }); - logger.debug('Phone code verified'); - return response.body; - } catch (error) { - logger.error('Failed to verify phone code', error); - throw error; - } -} - export async function startEmailChange(): Promise { try { logger.debug('Starting email change flow'); @@ -439,20 +319,6 @@ export async function verifyEmailChangeNew( } } -export async function applyEmailChange(emailToken: string): Promise< - UserPrivate & { - token?: string; - } -> { - try { - logger.debug('Applying verified email change'); - return await requestEmailApply(emailToken); - } catch (error) { - logger.error('Failed to apply email change', error); - throw error; - } -} - export async function requestBouncedEmailChangeNew(newEmail: string): Promise { try { logger.debug('Requesting bounced email replacement code'); diff --git a/fluxer_app/src/features/user/components/modals/BouncedEmailChangeModal.tsx b/fluxer_app/src/features/user/components/modals/BouncedEmailChangeModal.tsx new file mode 100644 index 000000000..8f7b16295 --- /dev/null +++ b/fluxer_app/src/features/user/components/modals/BouncedEmailChangeModal.tsx @@ -0,0 +1,219 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +import * as Modal from '@app/features/app/components/dialogs/Modal'; +import {EXAMPLE_PERSONAL_EMAIL} from '@app/features/app/config/I18nDisplayConstants'; +import {useFormSubmit} from '@app/features/app/hooks/useFormSubmit'; +import {VERIFICATION_CODE_DESCRIPTOR} from '@app/features/i18n/utils/CommonMessageDescriptors'; +import {Button} from '@app/features/ui/button/Button'; +import * as ModalCommands from '@app/features/ui/commands/ModalCommands'; +import * as ToastCommands from '@app/features/ui/commands/ToastCommands'; +import {Form} from '@app/features/ui/components/form/Form'; +import {Input} from '@app/features/ui/components/form/FormInput'; +import {SteppedCarousel} from '@app/features/ui/stepped_carousel/SteppedCarousel'; +import * as UserCommands from '@app/features/user/commands/UserCommands'; +import Users from '@app/features/user/state/Users'; +import * as FormUtils from '@app/lib/forms'; +import {pushApiErrorModal} from '@app/lib/forms'; +import {msg} from '@lingui/core/macro'; +import {Trans, useLingui} from '@lingui/react/macro'; +import {observer} from 'mobx-react-lite'; +import {useEffect, useMemo, useState} from 'react'; +import {useForm} from 'react-hook-form'; + +const ADD_A_WORKING_EMAIL_DESCRIPTOR = msg({ + message: 'Add a working email', + comment: 'Title of the modal that replaces an email address that bounced. Keep it concise.', +}); +const NEW_EMAIL_FORM_DESCRIPTOR = msg({ + message: 'New email form', + comment: 'Short label in the email change modal. Keep it concise.', +}); +const NEW_EMAIL_DESCRIPTOR = msg({ + message: 'New email', + comment: 'Short label in the email change modal. Keep it concise.', +}); +const INVALID_OR_EXPIRED_CODE_DESCRIPTOR = msg({ + message: 'Invalid or expired code', + comment: 'Error message in the email change modal.', +}); +const UNABLE_TO_RESEND_CODE_RIGHT_NOW_DESCRIPTOR = msg({ + message: 'Unable to resend code right now', + comment: 'Error message in the email change modal.', +}); +const EMAIL_CHANGED_DESCRIPTOR = msg({ + message: 'Email changed', + comment: 'Short label in the email change modal. Keep it concise.', +}); + +type Stage = 'newEmail' | 'verifyNew'; + +const STAGE_ORDER: ReadonlyArray = ['newEmail', 'verifyNew']; +const RESEND_COOLDOWN_MS = 30 * 1000; + +interface NewEmailForm { + email: string; +} + +export const BouncedEmailChangeModal = observer(() => { + const {i18n} = useLingui(); + const newEmailForm = useForm({defaultValues: {email: ''}}); + const [stage, setStage] = useState('newEmail'); + const [ticket, setTicket] = useState(null); + const [code, setCode] = useState(''); + const [codeError, setCodeError] = useState(null); + const [resendAt, setResendAt] = useState(null); + const [submitting, setSubmitting] = useState(false); + const [now, setNow] = useState(Date.now()); + useEffect(() => { + const id = window.setInterval(() => setNow(Date.now()), 1000); + return () => window.clearInterval(id); + }, []); + const canResend = useMemo(() => !resendAt || resendAt.getTime() <= now, [resendAt, now]); + const secondsRemaining = useMemo( + () => (resendAt ? Math.max(0, Math.ceil((resendAt.getTime() - now) / 1000)) : 0), + [resendAt, now], + ); + const handleRequestNew = async (data: NewEmailForm) => { + setSubmitting(true); + try { + const result = await UserCommands.requestBouncedEmailChangeNew(data.email); + setTicket(result.ticket); + setResendAt(result.resend_available_at ? new Date(result.resend_available_at) : null); + setCode(''); + setCodeError(null); + setStage('verifyNew'); + } finally { + setSubmitting(false); + } + }; + const handleResend = async () => { + if (!ticket || !canResend) return; + setSubmitting(true); + try { + await UserCommands.resendBouncedEmailChangeNew(ticket); + setResendAt(new Date(Date.now() + RESEND_COOLDOWN_MS)); + } catch (error: unknown) { + pushApiErrorModal(i18n, error, i18n._(UNABLE_TO_RESEND_CODE_RIGHT_NOW_DESCRIPTOR)); + } finally { + setSubmitting(false); + } + }; + const handleVerify = async () => { + if (!ticket) return; + setSubmitting(true); + setCodeError(null); + try { + const updatedUser = await UserCommands.verifyBouncedEmailChangeNew(ticket, code.split(' ').join('')); + Users.handleUserUpdate(updatedUser, {clearMissingOptionalFields: true}); + ToastCommands.createToast({type: 'success', children: i18n._(EMAIL_CHANGED_DESCRIPTOR)}); + ModalCommands.pop(); + } catch (error: unknown) { + setCodeError( + error && typeof error === 'object' && 'body' in error + ? FormUtils.extractErrorMessage(i18n, error) + : i18n._(INVALID_OR_EXPIRED_CODE_DESCRIPTOR), + ); + } finally { + setSubmitting(false); + } + }; + const {handleSubmit: handleNewEmailSubmit} = useFormSubmit({ + form: newEmailForm, + onSubmit: handleRequestNew, + defaultErrorField: 'email', + }); + const renderNewEmailStage = () => ( + + + + Emails to your current address are not being delivered. Enter a new email and we'll send a code there. + + + + + + + ); + const renderVerifyNewStage = () => ( + <> + + Enter the code we emailed to your new address. + + + ) => setCode(event.target.value)} + label={i18n._(VERIFICATION_CODE_DESCRIPTOR)} + placeholder="XXXX-XXXX" + required={true} + error={codeError ?? undefined} + data-flx="user.bounced-email-change-modal.input.set-code" + /> + + + ); + return ( + + + + + + {stage === 'newEmail' ? renderNewEmailStage() : renderVerifyNewStage()} + + + + + + {stage === 'newEmail' ? ( + + ) : ( + <> + + + + )} + + + ); +}); diff --git a/fluxer_app/src/features/user/components/modals/CustomStatusBottomSheet.tsx b/fluxer_app/src/features/user/components/modals/CustomStatusBottomSheet.tsx index 58a0b9fe4..4ed0bddde 100644 --- a/fluxer_app/src/features/user/components/modals/CustomStatusBottomSheet.tsx +++ b/fluxer_app/src/features/user/components/modals/CustomStatusBottomSheet.tsx @@ -25,6 +25,7 @@ import * as UserSettingsCommands from '@app/features/user/commands/UserSettingsC import styles from '@app/features/user/components/modals/CustomStatusBottomSheet.module.css'; import {type CustomStatus, normalizeCustomStatus} from '@app/features/user/state/CustomStatus'; import Users from '@app/features/user/state/Users'; +import {handleAccountLimitedError} from '@app/features/user/utils/AccountLimitUtils'; import {msg} from '@lingui/core/macro'; import {Trans, useLingui} from '@lingui/react/macro'; import {SmileyIcon, XIcon} from '@phosphor-icons/react'; @@ -159,6 +160,8 @@ export const CustomStatusBottomSheet = observer(({isOpen, onClose}: CustomStatus }); await UserSettingsCommands.update({customStatus: statusToSave}); onClose(); + } catch (error) { + if (!handleAccountLimitedError(error)) throw error; } finally { setIsSaving(false); } diff --git a/fluxer_app/src/features/user/components/modals/CustomStatusModal.tsx b/fluxer_app/src/features/user/components/modals/CustomStatusModal.tsx index 582d1e7a1..b3d7f8b93 100644 --- a/fluxer_app/src/features/user/components/modals/CustomStatusModal.tsx +++ b/fluxer_app/src/features/user/components/modals/CustomStatusModal.tsx @@ -31,6 +31,7 @@ import {ProfilePreview} from '@app/features/user/components/profile/ProfilePrevi import {type CustomStatus, normalizeCustomStatus} from '@app/features/user/state/CustomStatus'; import UserSettings from '@app/features/user/state/UserSettings'; import Users from '@app/features/user/state/Users'; +import {handleAccountLimitedError} from '@app/features/user/utils/AccountLimitUtils'; import {getCurrentLocale} from '@app/features/user/utils/LocaleUtils'; import {getDaysBetween} from '@fluxer/date_utils/src/DateComparison'; import {getFormattedShortDate, getFormattedTime} from '@fluxer/date_utils/src/DateFormatting'; @@ -233,6 +234,8 @@ export const CustomStatusModal = observer(() => { }); await UserSettingsCommands.update({customStatus: statusToSave}); ModalCommands.pop(); + } catch (error) { + if (!handleAccountLimitedError(error)) throw error; } finally { setIsSaving(false); } diff --git a/fluxer_app/src/features/user/components/modals/PhoneAddModal.module.css b/fluxer_app/src/features/user/components/modals/PhoneAddModal.module.css deleted file mode 100644 index 36e5ca11b..000000000 --- a/fluxer_app/src/features/user/components/modals/PhoneAddModal.module.css +++ /dev/null @@ -1,81 +0,0 @@ -/* SPDX-License-Identifier: AGPL-3.0-or-later */ - -.flagOption { - display: flex; - align-items: center; - gap: 0.5rem; -} - -.flagImage { - height: 1.25rem; - width: 1.25rem; - flex-shrink: 0; - object-fit: contain; -} - -.flagImageText { - display: inline-flex; - width: 1.25rem; - height: 1.25rem; - flex-shrink: 0; - align-items: center; - justify-content: center; - font-size: 1rem; - line-height: 1; -} - -.dialCodeText { - color: var(--text-tertiary); -} - -.footerText { - font-size: 0.875rem; - line-height: 1.25rem; - color: var(--text-primary-muted); -} - -.notice { - padding: 0.75rem; - border: 0.0625rem solid var(--border-color); - border-radius: 0.5rem; - background-color: var(--background-secondary); -} - -.stepsContainer { - display: flex; - flex-direction: column; - gap: 0.75rem; -} - -.stepRow { - display: grid; - grid-template-columns: 1.5rem 1fr; - gap: 0.625rem; - align-items: start; -} - -.stepBadge { - display: flex; - align-items: center; - justify-content: center; - width: 1.5rem; - height: 1.5rem; - border-radius: 62.4375rem; - background-color: var(--brand-primary); - color: var(--text-on-brand-primary); - font-size: 0.75rem; - font-weight: 700; - line-height: 1; -} - -.selectable { - user-select: text; - color: var(--text-primary); -} - -.selectLabel { - font-weight: 500; - font-size: 0.875rem; - line-height: 1.25rem; - color: var(--text-primary); -} diff --git a/fluxer_app/src/features/user/components/modals/PhoneAddModal.tsx b/fluxer_app/src/features/user/components/modals/PhoneAddModal.tsx deleted file mode 100644 index 10e6d9dbc..000000000 --- a/fluxer_app/src/features/user/components/modals/PhoneAddModal.tsx +++ /dev/null @@ -1,462 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import * as Modal from '@app/features/app/components/dialogs/Modal'; -import {ExternalLink} from '@app/features/app/components/shared/ExternalLink'; -import { - MFA_CODE_DIGIT_COUNT, - PRODUCT_NAME, - SUPPORT_EMAIL, - SUPPORT_EMAIL_MAILTO, -} from '@app/features/app/config/I18nDisplayConstants'; -import {useFormSubmit} from '@app/features/app/hooks/useFormSubmit'; -import RuntimeConfig from '@app/features/app/state/RuntimeConfig'; -import * as EmojiUtils from '@app/features/expressions/utils/EmojiUtils'; -import {VERIFICATION_CODE_DESCRIPTOR, VERIFY_DESCRIPTOR} from '@app/features/i18n/utils/CommonMessageDescriptors'; -import {Button} from '@app/features/ui/button/Button'; -import * as ModalCommands from '@app/features/ui/commands/ModalCommands'; -import * as ToastCommands from '@app/features/ui/commands/ToastCommands'; -import {Form} from '@app/features/ui/components/form/Form'; -import {Combobox, type ComboboxFilterOption} from '@app/features/ui/components/form/FormCombobox'; -import {Input} from '@app/features/ui/components/form/FormInput'; -import {SteppedCarousel} from '@app/features/ui/stepped_carousel/SteppedCarousel'; -import * as UserCommands from '@app/features/user/commands/UserCommands'; -import styles from '@app/features/user/components/modals/PhoneAddModal.module.css'; -import Users from '@app/features/user/state/Users'; -import * as LocaleUtils from '@app/features/user/utils/LocaleUtils'; -import { - COUNTRY_CODES, - type CountryCode, - formatPhoneNumber, - getCountryName, - getDefaultCountry, - getE164PhoneNumber, - getPhoneNumberPlaceholder, -} from '@app/media/data/CountryCodes'; -import {msg} from '@lingui/core/macro'; -import {Trans, useLingui} from '@lingui/react/macro'; -import {observer} from 'mobx-react-lite'; -import {useEffect, useState} from 'react'; -import {useForm} from 'react-hook-form'; - -const PHONE_NUMBER_IS_REQUIRED_DESCRIPTOR = msg({ - message: 'Phone number is required', - comment: 'Label in the phone add modal.', -}); -const PLEASE_ENTER_A_VALID_PHONE_NUMBER_DESCRIPTOR = msg({ - message: 'Enter a valid phone number', - comment: 'Label in the phone add modal.', -}); -const VERIFY_PHONE_NUMBER_FORM_DESCRIPTOR = msg({ - message: 'Verify phone number form', - comment: 'Label in the phone add modal.', -}); -const VERIFY_PHONE_NUMBER_DESCRIPTOR = msg({ - message: 'Verify phone number', - comment: 'Short label in the phone add modal. Keep it concise.', -}); -const COUNTRY_DESCRIPTOR = msg({ - message: 'Country', - comment: 'Short label in the phone add modal. Keep it concise.', -}); -const SEARCH_COUNTRIES_DESCRIPTOR = msg({ - message: 'Search countries...', - comment: 'Button or menu action label in the phone add modal. Keep it concise.', -}); -const PHONE_NUMBER_DESCRIPTOR = msg({ - message: 'Phone number', - comment: 'Short label in the phone add modal. Keep it concise.', -}); - -interface PhoneFormInputs { - phoneNumber: string; -} - -interface CodeFormInputs { - code: string; -} - -interface CountrySelectOption { - value: string; - label: string; - country: CountryCode; -} - -const getCountryOptions = (locale: string): ReadonlyArray => - COUNTRY_CODES.map((country) => ({ - value: country.code, - label: `${getCountryName(country.code, locale)} (${country.dialCode})`, - country, - })); -const renderCountryOption = (option: CountrySelectOption) => { - const {country} = option; - const locale = LocaleUtils.getCurrentLocale(); - const countryName = getCountryName(country.code, locale); - const flagUrl = EmojiUtils.getEmojiURL(country.flag); - return ( -
- {flagUrl ? ( - {countryName} - ) : ( - - {country.flag} - - )} - {countryName} - - ({country.dialCode}) - -
- ); -}; -const renderCountryValue = (option: CountrySelectOption | null) => { - if (!option) return null; - const {country} = option; - const locale = LocaleUtils.getCurrentLocale(); - const countryName = getCountryName(country.code, locale); - const flagUrl = EmojiUtils.getEmojiURL(country.flag); - return ( -
- {flagUrl ? ( - {countryName} - ) : ( - - {country.flag} - - )} - {country.dialCode} -
- ); -}; - -type PhoneAddStep = 'phone' | 'code' | 'inbound_waiting'; - -const PHONE_ADD_STEP_ORDER: ReadonlyArray = ['phone', 'code', 'inbound_waiting']; -export const PhoneAddModal = observer(() => { - const {i18n} = useLingui(); - const locale = LocaleUtils.getCurrentLocale(); - const countryOptions = getCountryOptions(locale); - const [step, setStep] = useState('phone'); - const [selectedCountry, setSelectedCountry] = useState(getDefaultCountry()); - const [phoneNumber, setPhoneNumber] = useState(''); - const [formattedPhone, setFormattedPhone] = useState(''); - const [inboundChallenge, setInboundChallenge] = - useState(null); - const phoneForm = useForm(); - const codeForm = useForm(); - useEffect(() => { - const formatted = formatPhoneNumber(phoneNumber, selectedCountry); - setFormattedPhone(formatted); - }, [phoneNumber, selectedCountry]); - const handlePhoneInput = (e: React.ChangeEvent) => { - const value = e.target.value; - const digitsOnly = value.replace(/\D/g, ''); - setPhoneNumber(digitsOnly); - }; - const completePhoneVerification = () => { - ModalCommands.pop(); - ToastCommands.createToast({type: 'success', children: Phone number verified}); - }; - useEffect(() => { - if (step !== 'inbound_waiting' || Users.currentUser?.hasVerifiedPhone !== true) return; - ModalCommands.pop(); - ToastCommands.createToast({type: 'success', children: Phone number verified}); - }, [step, Users.currentUser?.hasVerifiedPhone]); - const onSubmitPhone = async () => { - if (!phoneNumber) { - phoneForm.setError('phoneNumber', {message: i18n._(PHONE_NUMBER_IS_REQUIRED_DESCRIPTOR)}); - return; - } - const e164Phone = getE164PhoneNumber(phoneNumber, selectedCountry); - if (!e164Phone) { - phoneForm.setError('phoneNumber', {message: i18n._(PLEASE_ENTER_A_VALID_PHONE_NUMBER_DESCRIPTOR)}); - return; - } - const verification = await UserCommands.sendPhoneVerification(e164Phone); - if (verification.channel === 'inbound_challenge') { - setInboundChallenge(verification); - setStep('inbound_waiting'); - return; - } - setStep('code'); - }; - const onSubmitCode = async (data: CodeFormInputs) => { - const e164Phone = getE164PhoneNumber(phoneNumber, selectedCountry); - if (!e164Phone) { - setStep('phone'); - phoneForm.setError('phoneNumber', {message: i18n._(PLEASE_ENTER_A_VALID_PHONE_NUMBER_DESCRIPTOR)}); - return; - } - await UserCommands.verifyPhone(e164Phone, data.code.split(' ').join('')); - completePhoneVerification(); - }; - const handleInboundResend = async () => { - const e164Phone = getE164PhoneNumber(phoneNumber, selectedCountry); - if (!e164Phone) { - setStep('phone'); - phoneForm.setError('phoneNumber', {message: i18n._(PLEASE_ENTER_A_VALID_PHONE_NUMBER_DESCRIPTOR)}); - return; - } - const verification = await UserCommands.sendPhoneVerification(e164Phone); - if (verification.channel === 'inbound_challenge') { - setInboundChallenge(verification); - return; - } - setStep('code'); - }; - const {handleSubmit: handlePhoneSubmit} = useFormSubmit({ - form: phoneForm, - onSubmit: onSubmitPhone, - defaultErrorField: 'phoneNumber', - }); - const {handleSubmit: handleCodeSubmit} = useFormSubmit({ - form: codeForm, - onSubmit: onSubmitCode, - defaultErrorField: 'code', - }); - const renderPhoneStep = () => ( -
- - { - const country = countryOptions.find((o) => o.value === value)?.country; - if (country) { - setSelectedCountry(country); - setPhoneNumber(''); - setFormattedPhone(''); - } - }} - options={countryOptions} - renderOption={renderCountryOption} - renderValue={renderCountryValue} - placeholder={i18n._(SEARCH_COUNTRIES_DESCRIPTOR)} - filterOption={(option: ComboboxFilterOption, inputValue: string) => { - const searchTerm = inputValue.toLowerCase(); - const countryName = getCountryName(option.data.country.code, locale); - return ( - countryName.toLowerCase().includes(searchTerm) || - option.data.country.dialCode.includes(searchTerm) || - option.data.country.code.toLowerCase().includes(searchTerm) - ); - }} - data-flx="user.phone-add-modal.select" - /> - - - We'll send an SMS code when available. Your number is not linked to your account. We keep only an - encrypted marker, with no user ID, for a limited time. - -

- } - /> -
-
- ); - const renderInboundWaitingStep = () => { - if (!inboundChallenge) return null; - return ( - <> -
-

- {RuntimeConfig.isSelfHosted() ? ( - - Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an - SMS instead. We know this isn't ideal. You can also ask the administrators of this instance to lift this - requirement from your account. - - ) : ( - - Sending an SMS to this phone number is too expensive for {PRODUCT_NAME}, so we need you to send us an - SMS instead. We know this isn't ideal. You can also contact{' '} - - {SUPPORT_EMAIL} - {' '} - to have us lift this requirement from your account. - - )} -

-
-
-
-
- 1 -
-

- Open your phone's messaging app and create a new text message. -

-
-
-
- 2 -
-

- - Send the code{' '} - - {inboundChallenge.challenge_code} - {' '} - to{' '} - - {inboundChallenge.our_number} - - -

-
-
-
- 3 -
-

- Wait a moment. This window will close automatically once we receive your message. -

-
-
- - ); - }; - const renderCodeStep = () => ( -
- - - Enter the {MFA_CODE_DIGIT_COUNT}-digit code sent to{' '} - {getE164PhoneNumber(phoneNumber, selectedCountry) ?? formattedPhone}. - -

- } - /> -
- ); - const renderStepBody = () => { - switch (step) { - case 'phone': - return renderPhoneStep(); - case 'inbound_waiting': - return renderInboundWaitingStep(); - case 'code': - return renderCodeStep(); - } - }; - const renderStepFooter = () => { - switch (step) { - case 'phone': - return ( - <> - - - - ); - case 'inbound_waiting': - return ( - <> - - - - ); - case 'code': - return ( - <> - - - - ); - } - }; - return ( - - - - - - {renderStepBody()} - - - - {renderStepFooter()} - - ); -}); diff --git a/fluxer_app/src/features/user/components/modals/tabs/MyProfileTab.tsx b/fluxer_app/src/features/user/components/modals/tabs/MyProfileTab.tsx index 9dff040df..d76e63e18 100644 --- a/fluxer_app/src/features/user/components/modals/tabs/MyProfileTab.tsx +++ b/fluxer_app/src/features/user/components/modals/tabs/MyProfileTab.tsx @@ -54,6 +54,7 @@ import {TimezoneProfileSettings} from '@app/features/user/components/modals/tabs import {ProfilePreview} from '@app/features/user/components/profile/ProfilePreview'; import type {Profile} from '@app/features/user/models/Profile'; import Users from '@app/features/user/state/Users'; +import {ACCOUNT_LIMITED_NOTICE_DESCRIPTOR} from '@app/features/user/utils/AccountLimitUtils'; import * as NicknameUtils from '@app/features/user/utils/NicknameUtils'; import {setMeaningfulFormValue} from '@app/lib/forms/MeaningfulFormValue'; import {type RemoteFormResetReason, useRemoteFormReset} from '@app/lib/forms/RemoteFormReset'; @@ -251,7 +252,9 @@ const MyProfileTabComponent = observer(function MyProfileTabComponent({ const [lastFlashTrigger, setLastFlashTrigger] = useState(0); const [ariaAnnouncement, setAriaAnnouncement] = useState(''); const isClaimed = user?.isClaimed() ?? false; - const isProfileCustomizationLocked = isClaimed && user?.verified === false; + const isProfileEmailLocked = isClaimed && user?.verified === false; + const isProfileAccountLimited = user?.accountLimited === true; + const isProfileCustomizationLocked = isProfileEmailLocked || isProfileAccountLimited; const form = useForm({ defaultValues: { bio: null, @@ -684,11 +687,13 @@ const MyProfileTabComponent = observer(function MyProfileTabComponent({ const selectedGuild = selectedGuildId ? guilds.find((g) => g.id === selectedGuildId) : null; const isPerGuildProfileCustomizationDisabled = isPerGuildProfile && !hasPerGuildProfiles; const isPronounsDisabled = isProfileCustomizationLocked; - const profileCustomizationDescription = isProfileCustomizationLocked + const profileCustomizationDescription = isProfileEmailLocked ? isPerGuildProfile ? i18n._(VERIFY_YOUR_EMAIL_BEFORE_EDITING_THIS_COMMUNITY_PROFILE_DESCRIPTOR) : i18n._(VERIFY_YOUR_EMAIL_BEFORE_EDITING_YOUR_PROFILE_YOU_DESCRIPTOR) - : i18n._(EDIT_YOUR_PROFILE_APPEARANCE_AND_SEE_A_LIVE_DESCRIPTOR); + : isProfileAccountLimited + ? i18n._(ACCOUNT_LIMITED_NOTICE_DESCRIPTOR) + : i18n._(EDIT_YOUR_PROFILE_APPEARANCE_AND_SEE_A_LIVE_DESCRIPTOR); const hasAvatar = !avatarAsset.hasCleared && (avatarAsset.hasAsset || (!avatarAsset.isDirty && Boolean(profileRemoteValues?.avatar.hasCustomAsset))); @@ -738,7 +743,7 @@ const MyProfileTabComponent = observer(function MyProfileTabComponent({ description={profileCustomizationDescription} data-flx="user.my-profile-tab.my-profile-tab-component.settings-section" > - {isProfileCustomizationLocked && ( + {isProfileEmailLocked && ( = Object.freeze([]); -const EMPTY_REQUIRED_ACTIONS: ReadonlyArray = Object.freeze([]); const EMPTY_AUTH_TYPES: ReadonlyArray = Object.freeze([]); function parseDateOrNull(value: string | number | Date | null | undefined): Date | null { @@ -119,8 +113,6 @@ function dedupeFiltered(raw: ReadonlyArray, parseItem: (item: unknow } const parseStringItem = (item: unknown): string | null => (typeof item === 'string' && item.length > 0 ? item : null); -const parseRequiredAction = (item: unknown): RequiredAction | null => - typeof item === 'string' && item.length > 0 ? (item as RequiredAction) : null; const parseAuthenticatorType = (item: unknown): number | null => { if (typeof item !== 'number' || !Number.isFinite(item)) return null; return item; @@ -145,6 +137,7 @@ export class User { private readonly _isStaff: boolean | undefined; private readonly _email: string | null | undefined; private readonly _emailBounced: boolean | undefined; + private readonly _accountLimited: boolean | undefined; readonly bio: string | null | undefined; readonly banner: string | null | undefined; readonly bannerColor: number | null | undefined; @@ -153,7 +146,6 @@ export class User { readonly timezone: string | null | undefined; readonly timezonePrivacyFlags: number | undefined; readonly mfaEnabled: boolean | undefined; - readonly hasVerifiedPhone: boolean | undefined; readonly authenticatorTypes: ReadonlyArray | undefined; private readonly _verified: boolean | undefined; private readonly _premiumType: number | null | undefined; @@ -172,7 +164,6 @@ export class User { readonly premiumPerksDisabled: boolean | undefined; readonly passwordLastChangedAt: Date | null | undefined; readonly lastVoiceActivitySharingChangeAt: Date | null | undefined; - readonly requiredActions: ReadonlyArray | undefined; private readonly _nsfwAllowed: boolean | undefined; readonly hasDismissedPremiumOnboarding: boolean | undefined; private readonly _hasEverPurchased: boolean | undefined; @@ -198,6 +189,7 @@ export class User { this._isStaff = hasKey(user, 'is_staff') ? user.is_staff : undefined; this._email = hasKey(user, 'email') ? (user.email ?? null) : undefined; this._emailBounced = hasKey(user, 'email_bounced') ? user.email_bounced : undefined; + this._accountLimited = hasKey(user, 'account_limited') ? user.account_limited : undefined; this.bio = hasKey(user, 'bio') ? (user.bio ?? null) : undefined; this.banner = hasKey(user, 'banner') ? (user.banner ?? null) : undefined; this.bannerColor = hasKey(user, 'banner_color') ? (user.banner_color ?? null) : undefined; @@ -208,7 +200,6 @@ export class User { ? (user.timezone_privacy_flags ?? ProfileFieldPrivacyFlags.EVERYONE) : undefined; this.mfaEnabled = hasKey(user, 'mfa_enabled') ? user.mfa_enabled : undefined; - this.hasVerifiedPhone = hasKey(user, 'has_verified_phone') ? user.has_verified_phone : undefined; this.authenticatorTypes = hasKey(user, 'authenticator_types') ? Object.freeze(((user.authenticator_types ?? []) as ReadonlyArray).slice()) : undefined; @@ -243,16 +234,6 @@ export class User { this.lastVoiceActivitySharingChangeAt = hasKey(user, 'last_voice_activity_sharing_change_at') ? parseDateOrNull(user.last_voice_activity_sharing_change_at) : undefined; - this.requiredActions = hasKey(user, 'required_actions') - ? mergeAuthoritativeArray( - EMPTY_REQUIRED_ACTIONS, - user, - 'required_actions', - parseRequiredAction, - {clearMissing: true}, - EMPTY_REQUIRED_ACTIONS, - ) - : undefined; this._nsfwAllowed = hasKey(user, 'nsfw_allowed') ? user.nsfw_allowed : undefined; this.hasDismissedPremiumOnboarding = hasKey(user, 'has_dismissed_premium_onboarding') ? user.has_dismissed_premium_onboarding @@ -281,6 +262,10 @@ export class User { return this._emailBounced; } + get accountLimited(): boolean { + return this._accountLimited === true; + } + get verified(): boolean | undefined { const verifiedOverride = DeveloperOptions.emailVerifiedOverride; if (verifiedOverride != null) { @@ -408,6 +393,8 @@ export class User { if (email !== undefined) result.email = email; const emailBounced = pickField(this._emailBounced, u, 'email_bounced', opts); if (emailBounced !== undefined) result.email_bounced = emailBounced; + const accountLimited = pickField(this._accountLimited, u, 'account_limited', opts); + if (accountLimited !== undefined) result.account_limited = accountLimited; const bio = pickField(this.bio, u, 'bio', opts); if (bio !== undefined) result.bio = bio; const banner = pickField(this.banner, u, 'banner', opts); @@ -424,8 +411,6 @@ export class User { if (timezonePrivacyFlags !== undefined) result.timezone_privacy_flags = timezonePrivacyFlags; const mfaEnabled = pickField(this.mfaEnabled, u, 'mfa_enabled', opts); if (mfaEnabled !== undefined) result.mfa_enabled = mfaEnabled; - const hasVerifiedPhone = pickField(this.hasVerifiedPhone, u, 'has_verified_phone', opts); - if (hasVerifiedPhone !== undefined) result.has_verified_phone = hasVerifiedPhone; if (hasKey(u, 'authenticator_types') || this.authenticatorTypes !== undefined || opts.clearMissing) { result.authenticator_types = mergeAuthoritativeArray( this.authenticatorTypes ?? EMPTY_AUTH_TYPES, @@ -487,16 +472,6 @@ export class User { if (lastVoiceActivitySharingChangeAt !== undefined) { result.last_voice_activity_sharing_change_at = dateToIsoOrNull(lastVoiceActivitySharingChangeAt); } - if (this.requiredActions !== undefined || hasKey(u, 'required_actions') || opts.clearMissing) { - result.required_actions = mergeAuthoritativeArray( - this.requiredActions ?? EMPTY_REQUIRED_ACTIONS, - u, - 'required_actions', - parseRequiredAction, - opts, - EMPTY_REQUIRED_ACTIONS, - ); - } const nsfwAllowed = pickField(this._nsfwAllowed, u, 'nsfw_allowed', opts); if (nsfwAllowed !== undefined) result.nsfw_allowed = nsfwAllowed; const hasDismissedPremiumOnboarding = pickField( @@ -627,6 +602,7 @@ export class User { this._isStaff === other._isStaff && this._email === other._email && this._emailBounced === other._emailBounced && + this._accountLimited === other._accountLimited && this.bio === other.bio && this.banner === other.banner && this.bannerColor === other.bannerColor && @@ -635,7 +611,6 @@ export class User { this.timezone === other.timezone && this.timezonePrivacyFlags === other.timezonePrivacyFlags && this.mfaEnabled === other.mfaEnabled && - this.hasVerifiedPhone === other.hasVerifiedPhone && arraysShallowEqual(this.authenticatorTypes, other.authenticatorTypes) && this._verified === other._verified && this._premiumType === other._premiumType && @@ -654,7 +629,6 @@ export class User { this.premiumPerksDisabled === other.premiumPerksDisabled && datesEqual(this.passwordLastChangedAt, other.passwordLastChangedAt) && datesEqual(this.lastVoiceActivitySharingChangeAt, other.lastVoiceActivitySharingChangeAt) && - arraysShallowEqual(this.requiredActions, other.requiredActions) && this._nsfwAllowed === other._nsfwAllowed && this.hasDismissedPremiumOnboarding === other.hasDismissedPremiumOnboarding && this._hasEverPurchased === other._hasEverPurchased && @@ -687,6 +661,7 @@ export class User { setOptional('is_staff', this._isStaff); setOptional('email', this._email); setOptional('email_bounced', this._emailBounced); + setOptional('account_limited', this._accountLimited); setOptional('bio', this.bio); setOptional('banner', this.banner); setOptional('banner_color', this.bannerColor); @@ -697,7 +672,6 @@ export class User { setOptional('timezone_privacy_flags', this.timezonePrivacyFlags); } setOptional('mfa_enabled', this.mfaEnabled); - setOptional('has_verified_phone', this.hasVerifiedPhone); setOptional('authenticator_types', this.authenticatorTypes); setOptional('verified', this._verified); setOptional('premium_type', this._premiumType); @@ -727,7 +701,6 @@ export class User { ? undefined : dateToIsoOrNull(this.lastVoiceActivitySharingChangeAt), ); - if (this.requiredActions !== undefined) privateFields.required_actions = this.requiredActions; setOptional('nsfw_allowed', this._nsfwAllowed); setOptional('has_dismissed_premium_onboarding', this.hasDismissedPremiumOnboarding); setOptional('has_ever_purchased', this._hasEverPurchased); diff --git a/fluxer_app/src/features/user/state/CountryCode.ts b/fluxer_app/src/features/user/state/CountryCode.ts deleted file mode 100644 index 2a68aed9c..000000000 --- a/fluxer_app/src/features/user/state/CountryCode.ts +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {Logger} from '@app/features/platform/utils/AppLogger'; -import {makeAutoObservable} from 'mobx'; - -const logger = new Logger('CountryCode'); - -class CountryCode { - countryCode = 'US'; - - constructor() { - makeAutoObservable(this, {}, {autoBind: true}); - } - - setCountryCode(countryCode: string): void { - this.countryCode = countryCode; - logger.debug(`Set country code: ${countryCode}`); - } -} - -export default new CountryCode(); diff --git a/fluxer_app/src/features/user/state/Users.ts b/fluxer_app/src/features/user/state/Users.ts index c7af3806f..334b4b48e 100644 --- a/fluxer_app/src/features/user/state/Users.ts +++ b/fluxer_app/src/features/user/state/Users.ts @@ -9,8 +9,8 @@ const CURRENT_USER_PRIVATE_WIRE_KEYS = [ 'is_staff', 'email', 'email_bounced', + 'account_limited', 'mfa_enabled', - 'phone', 'authenticator_types', 'verified', 'premium_type', @@ -30,7 +30,6 @@ const CURRENT_USER_PRIVATE_WIRE_KEYS = [ 'premium_perks_disabled', 'password_last_changed_at', 'last_voice_activity_sharing_change_at', - 'required_actions', 'nsfw_allowed', 'pending_bulk_message_deletion', 'has_dismissed_premium_onboarding', diff --git a/fluxer_app/src/features/user/utils/AccountLimitUtils.ts b/fluxer_app/src/features/user/utils/AccountLimitUtils.ts new file mode 100644 index 000000000..b80265b83 --- /dev/null +++ b/fluxer_app/src/features/user/utils/AccountLimitUtils.ts @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +import i18n from '@app/app/I18n'; +import {showGenericErrorModal} from '@app/features/app/components/alerts/GenericErrorModalCommands'; +import {failureCode, failureMessage} from '@app/features/platform/utils/ResponseInspection'; +import Users from '@app/features/user/state/Users'; +import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; +import {msg} from '@lingui/core/macro'; + +export const ACCOUNT_LIMITED_NOTICE_DESCRIPTOR = msg({ + message: 'Your account is limited. Check your email for how to lift it.', + comment: + 'Notice shown in place of the message composer, and as an error, when the current account is limited and cannot post, react, join communities or change its profile.', +}); +const ACCOUNT_LIMITED_TITLE_DESCRIPTOR = msg({ + message: 'Your account is limited', + comment: 'Title of the error modal shown when an action fails because the current account is limited.', +}); + +export function showAccountLimitedModal(serverMessage?: string): void { + showGenericErrorModal({ + title: () => i18n._(ACCOUNT_LIMITED_TITLE_DESCRIPTOR), + message: () => serverMessage || i18n._(ACCOUNT_LIMITED_NOTICE_DESCRIPTOR), + dataFlx: 'user.account-limit-utils.account-limited-modal', + }); +} + +export function handleAccountLimitedError(error: unknown): boolean { + if (failureCode(error) !== APIErrorCodes.ACCOUNT_LIMITED) return false; + showAccountLimitedModal(failureMessage(error)); + return true; +} + +export function blockIfAccountLimited(): boolean { + if (Users.currentUser?.accountLimited !== true) return false; + showAccountLimitedModal(); + return true; +} diff --git a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareWiring.test.ts b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareWiring.test.ts index ad218db95..61078c221 100644 --- a/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareWiring.test.ts +++ b/fluxer_app/src/features/voice/engine/v2/VoiceEngineV2AppScreenShareWiring.test.ts @@ -320,7 +320,7 @@ const BOOTSTRAP_ENDPOINT = 'https://primary.test/api'; self_hosted: false, presigned_attachment_uploads: false, emails_enabled: false, - phone_verification_enabled: true, + phone_verification_enabled: false, }, gif: {provider: 'klipy', display_name: 'Klipy', attribution_required: false}, sso: {enabled: false, enforced: false, display_name: null, redirect_uri: ''}, diff --git a/fluxer_app/src/media/data/CountryCodes.ts b/fluxer_app/src/media/data/CountryCodes.ts deleted file mode 100644 index 1c8fab631..000000000 --- a/fluxer_app/src/media/data/CountryCodes.ts +++ /dev/null @@ -1,281 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import CountryCodeStore from '@app/features/user/state/CountryCode'; -import {getRegionDisplayName} from '@fluxer/geo_utils/src/RegionFormatting'; -import phoneNumberExamples from 'libphonenumber-js/examples.mobile.json'; -import { - AsYouType, - getExampleNumber, - isSupportedCountry, - type CountryCode as PhoneLibraryCountryCode, - parsePhoneNumberFromString, -} from 'libphonenumber-js/max'; - -export interface CountryCode { - code: string; - dialCode: string; - flag: string; - format?: string; -} - -export const COUNTRY_CODES: ReadonlyArray = [ - {code: 'US', dialCode: '+1', flag: '🇺🇸', format: '(###) ###-####'}, - {code: 'CA', dialCode: '+1', flag: '🇨🇦', format: '(###) ###-####'}, - {code: 'BS', dialCode: '+1-242', flag: '🇧🇸'}, - {code: 'BB', dialCode: '+1-246', flag: '🇧🇧'}, - {code: 'AG', dialCode: '+1-268', flag: '🇦🇬'}, - {code: 'DM', dialCode: '+1-767', flag: '🇩🇲'}, - {code: 'DO', dialCode: '+1-809', flag: '🇩🇴'}, - {code: 'JM', dialCode: '+1-876', flag: '🇯🇲'}, - {code: 'TT', dialCode: '+1-868', flag: '🇹🇹'}, - {code: 'EG', dialCode: '+20', flag: '🇪🇬', format: '### ### ####'}, - {code: 'ZA', dialCode: '+27', flag: '🇿🇦', format: '## ### ####'}, - {code: 'DZ', dialCode: '+213', flag: '🇩🇿'}, - {code: 'MA', dialCode: '+212', flag: '🇲🇦'}, - {code: 'TN', dialCode: '+216', flag: '🇹🇳'}, - {code: 'LY', dialCode: '+218', flag: '🇱🇾'}, - {code: 'GM', dialCode: '+220', flag: '🇬🇲'}, - {code: 'SN', dialCode: '+221', flag: '🇸🇳'}, - {code: 'MR', dialCode: '+222', flag: '🇲🇷'}, - {code: 'ML', dialCode: '+223', flag: '🇲🇱'}, - {code: 'GN', dialCode: '+224', flag: '🇬🇳'}, - {code: 'CI', dialCode: '+225', flag: '🇨🇮'}, - {code: 'BF', dialCode: '+226', flag: '🇧🇫'}, - {code: 'NE', dialCode: '+227', flag: '🇳🇪'}, - {code: 'TG', dialCode: '+228', flag: '🇹🇬'}, - {code: 'BJ', dialCode: '+229', flag: '🇧🇯'}, - {code: 'MU', dialCode: '+230', flag: '🇲🇺'}, - {code: 'LR', dialCode: '+231', flag: '🇱🇷'}, - {code: 'SL', dialCode: '+232', flag: '🇸🇱'}, - {code: 'GH', dialCode: '+233', flag: '🇬🇭'}, - {code: 'NG', dialCode: '+234', flag: '🇳🇬', format: '### ### ####'}, - {code: 'TD', dialCode: '+235', flag: '🇹🇩'}, - {code: 'CF', dialCode: '+236', flag: '🇨🇫'}, - {code: 'CM', dialCode: '+237', flag: '🇨🇲'}, - {code: 'CV', dialCode: '+238', flag: '🇨🇻'}, - {code: 'ST', dialCode: '+239', flag: '🇸🇹'}, - {code: 'GQ', dialCode: '+240', flag: '🇬🇶'}, - {code: 'GA', dialCode: '+241', flag: '🇬🇦'}, - {code: 'CG', dialCode: '+242', flag: '🇨🇬'}, - {code: 'CD', dialCode: '+243', flag: '🇨🇩'}, - {code: 'AO', dialCode: '+244', flag: '🇦🇴'}, - {code: 'GW', dialCode: '+245', flag: '🇬🇼'}, - {code: 'SC', dialCode: '+248', flag: '🇸🇨'}, - {code: 'SD', dialCode: '+249', flag: '🇸🇩'}, - {code: 'RW', dialCode: '+250', flag: '🇷🇼'}, - {code: 'ET', dialCode: '+251', flag: '🇪🇹'}, - {code: 'SO', dialCode: '+252', flag: '🇸🇴'}, - {code: 'DJ', dialCode: '+253', flag: '🇩🇯'}, - {code: 'KE', dialCode: '+254', flag: '🇰🇪'}, - {code: 'TZ', dialCode: '+255', flag: '🇹🇿'}, - {code: 'UG', dialCode: '+256', flag: '🇺🇬'}, - {code: 'BI', dialCode: '+257', flag: '🇧🇮'}, - {code: 'MZ', dialCode: '+258', flag: '🇲🇿'}, - {code: 'ZM', dialCode: '+260', flag: '🇿🇲'}, - {code: 'MG', dialCode: '+261', flag: '🇲🇬'}, - {code: 'RE', dialCode: '+262', flag: '🇷🇪'}, - {code: 'ZW', dialCode: '+263', flag: '🇿🇼'}, - {code: 'NA', dialCode: '+264', flag: '🇳🇦'}, - {code: 'MW', dialCode: '+265', flag: '🇲🇼'}, - {code: 'LS', dialCode: '+266', flag: '🇱🇸'}, - {code: 'BW', dialCode: '+267', flag: '🇧🇼'}, - {code: 'SZ', dialCode: '+268', flag: '🇸🇿'}, - {code: 'KM', dialCode: '+269', flag: '🇰🇲'}, - {code: 'GR', dialCode: '+30', flag: '🇬🇷', format: '### ### ####'}, - {code: 'NL', dialCode: '+31', flag: '🇳🇱', format: '## ########'}, - {code: 'BE', dialCode: '+32', flag: '🇧🇪', format: '### ## ## ##'}, - {code: 'FR', dialCode: '+33', flag: '🇫🇷', format: '# ## ## ## ##'}, - {code: 'ES', dialCode: '+34', flag: '🇪🇸', format: '### ### ###'}, - {code: 'HU', dialCode: '+36', flag: '🇭🇺', format: '## ### ####'}, - {code: 'IT', dialCode: '+39', flag: '🇮🇹', format: '### ### ####'}, - {code: 'RO', dialCode: '+40', flag: '🇷🇴', format: '### ### ###'}, - {code: 'CH', dialCode: '+41', flag: '🇨🇭', format: '## ### ## ##'}, - {code: 'AT', dialCode: '+43', flag: '🇦🇹', format: '### ######'}, - {code: 'GB', dialCode: '+44', flag: '🇬🇧', format: '#### ### ####'}, - {code: 'DK', dialCode: '+45', flag: '🇩🇰', format: '## ## ## ##'}, - {code: 'SE', dialCode: '+46', flag: '🇸🇪', format: '## ### ## ##'}, - {code: 'NO', dialCode: '+47', flag: '🇳🇴', format: '### ## ###'}, - {code: 'PL', dialCode: '+48', flag: '🇵🇱', format: '### ### ###'}, - {code: 'DE', dialCode: '+49', flag: '🇩🇪', format: '### ########'}, - {code: 'PE', dialCode: '+51', flag: '🇵🇪'}, - {code: 'MX', dialCode: '+52', flag: '🇲🇽', format: '### ### ####'}, - {code: 'CU', dialCode: '+53', flag: '🇨🇺'}, - {code: 'AR', dialCode: '+54', flag: '🇦🇷', format: '## ####-####'}, - {code: 'BR', dialCode: '+55', flag: '🇧🇷', format: '(##) #####-####'}, - {code: 'CL', dialCode: '+56', flag: '🇨🇱', format: '# #### ####'}, - {code: 'CO', dialCode: '+57', flag: '🇨🇴', format: '### #######'}, - {code: 'VE', dialCode: '+58', flag: '🇻🇪'}, - {code: 'MY', dialCode: '+60', flag: '🇲🇾', format: '##-### ####'}, - {code: 'AU', dialCode: '+61', flag: '🇦🇺', format: '#### ### ###'}, - {code: 'ID', dialCode: '+62', flag: '🇮🇩', format: '###-###-####'}, - {code: 'PH', dialCode: '+63', flag: '🇵🇭', format: '#### ### ####'}, - {code: 'NZ', dialCode: '+64', flag: '🇳🇿', format: '## ### ####'}, - {code: 'SG', dialCode: '+65', flag: '🇸🇬', format: '#### ####'}, - {code: 'TH', dialCode: '+66', flag: '🇹🇭', format: '## ### ####'}, - {code: 'JP', dialCode: '+81', flag: '🇯🇵', format: '###-####-####'}, - {code: 'KR', dialCode: '+82', flag: '🇰🇷', format: '##-####-####'}, - {code: 'VN', dialCode: '+84', flag: '🇻🇳', format: '### ### ####'}, - {code: 'CN', dialCode: '+86', flag: '🇨🇳', format: '### #### ####'}, - {code: 'TR', dialCode: '+90', flag: '🇹🇷', format: '(###) ### ## ##'}, - {code: 'IN', dialCode: '+91', flag: '🇮🇳', format: '##### #####'}, - {code: 'PK', dialCode: '+92', flag: '🇵🇰', format: '### #######'}, - {code: 'AF', dialCode: '+93', flag: '🇦🇫'}, - {code: 'LK', dialCode: '+94', flag: '🇱🇰'}, - {code: 'MM', dialCode: '+95', flag: '🇲🇲'}, - {code: 'IR', dialCode: '+98', flag: '🇮🇷'}, - {code: 'FI', dialCode: '+358', flag: '🇫🇮', format: '## ### ####'}, - {code: 'BG', dialCode: '+359', flag: '🇧🇬'}, - {code: 'LT', dialCode: '+370', flag: '🇱🇹'}, - {code: 'LV', dialCode: '+371', flag: '🇱🇻'}, - {code: 'EE', dialCode: '+372', flag: '🇪🇪'}, - {code: 'MD', dialCode: '+373', flag: '🇲🇩'}, - {code: 'AM', dialCode: '+374', flag: '🇦🇲'}, - {code: 'BY', dialCode: '+375', flag: '🇧🇾'}, - {code: 'AD', dialCode: '+376', flag: '🇦🇩'}, - {code: 'MC', dialCode: '+377', flag: '🇲🇨'}, - {code: 'SM', dialCode: '+378', flag: '🇸🇲'}, - {code: 'VA', dialCode: '+379', flag: '🇻🇦'}, - {code: 'UA', dialCode: '+380', flag: '🇺🇦', format: '## ### ####'}, - {code: 'RS', dialCode: '+381', flag: '🇷🇸'}, - {code: 'ME', dialCode: '+382', flag: '🇲🇪'}, - {code: 'HR', dialCode: '+385', flag: '🇭🇷'}, - {code: 'SI', dialCode: '+386', flag: '🇸🇮'}, - {code: 'BA', dialCode: '+387', flag: '🇧🇦'}, - {code: 'MK', dialCode: '+389', flag: '🇲🇰'}, - {code: 'CZ', dialCode: '+420', flag: '🇨🇿', format: '### ### ###'}, - {code: 'SK', dialCode: '+421', flag: '🇸🇰'}, - {code: 'BZ', dialCode: '+501', flag: '🇧🇿'}, - {code: 'GT', dialCode: '+502', flag: '🇬🇹'}, - {code: 'SV', dialCode: '+503', flag: '🇸🇻'}, - {code: 'HN', dialCode: '+504', flag: '🇭🇳'}, - {code: 'NI', dialCode: '+505', flag: '🇳🇮'}, - {code: 'CR', dialCode: '+506', flag: '🇨🇷'}, - {code: 'PA', dialCode: '+507', flag: '🇵🇦'}, - {code: 'HT', dialCode: '+509', flag: '🇭🇹'}, - {code: 'BO', dialCode: '+591', flag: '🇧🇴'}, - {code: 'GY', dialCode: '+592', flag: '🇬🇾'}, - {code: 'EC', dialCode: '+593', flag: '🇪🇨'}, - {code: 'PY', dialCode: '+595', flag: '🇵🇾'}, - {code: 'SR', dialCode: '+597', flag: '🇸🇷'}, - {code: 'UY', dialCode: '+598', flag: '🇺🇾'}, - {code: 'BN', dialCode: '+673', flag: '🇧🇳'}, - {code: 'NR', dialCode: '+674', flag: '🇳🇷'}, - {code: 'PG', dialCode: '+675', flag: '🇵🇬'}, - {code: 'TO', dialCode: '+676', flag: '🇹🇴'}, - {code: 'SB', dialCode: '+677', flag: '🇸🇧'}, - {code: 'VU', dialCode: '+678', flag: '🇻🇺'}, - {code: 'FJ', dialCode: '+679', flag: '🇫🇯'}, - {code: 'PW', dialCode: '+680', flag: '🇵🇼'}, - {code: 'WS', dialCode: '+685', flag: '🇼🇸'}, - {code: 'KI', dialCode: '+686', flag: '🇰🇮'}, - {code: 'NC', dialCode: '+687', flag: '🇳🇨'}, - {code: 'TV', dialCode: '+688', flag: '🇹🇻'}, - {code: 'PF', dialCode: '+689', flag: '🇵🇫'}, - {code: 'RU', dialCode: '+7', flag: '🇷🇺', format: '(###) ###-##-##'}, - {code: 'KZ', dialCode: '+7', flag: '🇰🇿'}, - {code: 'HK', dialCode: '+852', flag: '🇭🇰', format: '#### ####'}, - {code: 'MO', dialCode: '+853', flag: '🇲🇴'}, - {code: 'KH', dialCode: '+855', flag: '🇰🇭'}, - {code: 'LA', dialCode: '+856', flag: '🇱🇦'}, - {code: 'BD', dialCode: '+880', flag: '🇧🇩', format: '####-######'}, - {code: 'TW', dialCode: '+886', flag: '🇹🇼', format: '#### ####'}, - {code: 'MV', dialCode: '+960', flag: '🇲🇻'}, - {code: 'LB', dialCode: '+961', flag: '🇱🇧'}, - {code: 'JO', dialCode: '+962', flag: '🇯🇴'}, - {code: 'SY', dialCode: '+963', flag: '🇸🇾'}, - {code: 'IQ', dialCode: '+964', flag: '🇮🇶'}, - {code: 'KW', dialCode: '+965', flag: '🇰🇼'}, - {code: 'SA', dialCode: '+966', flag: '🇸🇦', format: '## ### ####'}, - {code: 'YE', dialCode: '+967', flag: '🇾🇪'}, - {code: 'OM', dialCode: '+968', flag: '🇴🇲'}, - {code: 'PS', dialCode: '+970', flag: '🇵🇸'}, - {code: 'AE', dialCode: '+971', flag: '🇦🇪', format: '## ### ####'}, - {code: 'IL', dialCode: '+972', flag: '🇮🇱', format: '##-###-####'}, - {code: 'BH', dialCode: '+973', flag: '🇧🇭'}, - {code: 'QA', dialCode: '+974', flag: '🇶🇦'}, - {code: 'BT', dialCode: '+975', flag: '🇧🇹'}, - {code: 'MN', dialCode: '+976', flag: '🇲🇳'}, - {code: 'NP', dialCode: '+977', flag: '🇳🇵'}, - {code: 'TJ', dialCode: '+992', flag: '🇹🇯'}, - {code: 'TM', dialCode: '+993', flag: '🇹🇲'}, - {code: 'AZ', dialCode: '+994', flag: '🇦🇿'}, - {code: 'GE', dialCode: '+995', flag: '🇬🇪'}, - {code: 'KG', dialCode: '+996', flag: '🇰🇬'}, - {code: 'UZ', dialCode: '+998', flag: '🇺🇿'}, - {code: 'PT', dialCode: '+351', flag: '🇵🇹', format: '### ### ###'}, - {code: 'LU', dialCode: '+352', flag: '🇱🇺'}, - {code: 'IE', dialCode: '+353', flag: '🇮🇪', format: '## ### ####'}, - {code: 'IS', dialCode: '+354', flag: '🇮🇸'}, - {code: 'AL', dialCode: '+355', flag: '🇦🇱'}, - {code: 'MT', dialCode: '+356', flag: '🇲🇹'}, - {code: 'CY', dialCode: '+357', flag: '🇨🇾'}, -] as const; -export const getDefaultCountry = (): CountryCode => { - const countryCode = CountryCodeStore.countryCode; - const country = COUNTRY_CODES.find((c) => c.code === countryCode); - return country || COUNTRY_CODES.find((c) => c.code === 'US')!; -}; -const getPhoneLibraryCountryCode = (country: CountryCode): PhoneLibraryCountryCode | null => { - return isSupportedCountry(country.code) ? (country.code as PhoneLibraryCountryCode) : null; -}; -const formatPhoneNumberWithPattern = (value: string, country: CountryCode): string => { - const digits = value.replace(/\D/g, ''); - if (!country.format) { - return digits; - } - let formatted = ''; - let digitIndex = 0; - for (const char of country.format) { - if (char === '#') { - if (digitIndex < digits.length) { - formatted += digits[digitIndex]; - digitIndex++; - } else { - break; - } - } else { - if (digitIndex > 0 && digitIndex < digits.length) { - formatted += char; - } - } - } - return formatted; -}; -const getParsedPhoneNumber = (phoneNumber: string, country: CountryCode) => { - const digits = phoneNumber.replace(/\D/g, ''); - if (!digits) { - return null; - } - const phoneLibraryCountryCode = getPhoneLibraryCountryCode(country); - if (!phoneLibraryCountryCode) { - return null; - } - return parsePhoneNumberFromString(digits, phoneLibraryCountryCode) ?? null; -}; -export const formatPhoneNumber = (value: string, country: CountryCode): string => { - const digits = value.replace(/\D/g, ''); - if (!digits) { - return ''; - } - const phoneLibraryCountryCode = getPhoneLibraryCountryCode(country); - if (!phoneLibraryCountryCode) { - return formatPhoneNumberWithPattern(digits, country); - } - return new AsYouType(phoneLibraryCountryCode).input(digits) || formatPhoneNumberWithPattern(digits, country); -}; -const getFallbackPhoneNumberPlaceholder = (country: CountryCode): string => country.format || '##########'; -export const getPhoneNumberPlaceholder = (country: CountryCode): string => { - const phoneLibraryCountryCode = getPhoneLibraryCountryCode(country); - if (!phoneLibraryCountryCode) { - return getFallbackPhoneNumberPlaceholder(country); - } - const exampleNumber = getExampleNumber(phoneLibraryCountryCode, phoneNumberExamples); - return exampleNumber ? exampleNumber.formatNational() : getFallbackPhoneNumberPlaceholder(country); -}; -export const getE164PhoneNumber = (phoneNumber: string, country: CountryCode): string | null => { - const parsedPhoneNumber = getParsedPhoneNumber(phoneNumber, country); - return parsedPhoneNumber?.isValid() ? parsedPhoneNumber.number : null; -}; -export const getCountryName = (countryCode: string, locale: string): string => { - return getRegionDisplayName(countryCode, {locale, fallbackToRegionCode: true}) ?? countryCode; -}; diff --git a/fluxer_docs/astro.config.ts b/fluxer_docs/astro.config.ts index f761072ad..f812e8865 100644 --- a/fluxer_docs/astro.config.ts +++ b/fluxer_docs/astro.config.ts @@ -197,7 +197,6 @@ export default defineConfig({ 'http-api/users/settings-protobuf', 'http-api/users/email-and-password', 'http-api/users/mfa', - 'http-api/users/phone-verification', 'http-api/users/relationships', 'http-api/users/notes', 'http-api/users/private-channels', diff --git a/fluxer_docs/scripts/VerifyDocsCoverage.ts b/fluxer_docs/scripts/VerifyDocsCoverage.ts index f8cfd53de..926518a47 100644 --- a/fluxer_docs/scripts/VerifyDocsCoverage.ts +++ b/fluxer_docs/scripts/VerifyDocsCoverage.ts @@ -122,14 +122,6 @@ const OUT_OF_BAND_CREDENTIAL = new Map([ documentedIn: null, }, ], - [ - 'POST /webhooks/twilio/sms', - { - reason: - 'a provider callback that is forwarded untouched to the internal event bus and answers 500 while that bus is unavailable', - documentedIn: null, - }, - ], [ 'POST /webhooks/livekit', { @@ -224,7 +216,7 @@ const EXEMPTION_RULES: ReadonlyArray = [ name: 'out-of-band credential', justification: 'no ordinary client holds the credential. Each entry states its guard, and five are covered in prose', - anchors: [{file: 'fluxer_api/src/api/app/ControllerRegistry.ts', anchor: 'installSmsWebhookForwarder(routes'}], + anchors: [{file: 'fluxer_api/src/api/app/ControllerRegistry.ts', anchor: 'InternalRpcController(routes);'}], covers: (shape) => OUT_OF_BAND_CREDENTIAL.has(shape), }, ]; @@ -1973,7 +1965,7 @@ console.log('bot capability flag (from the middleware chain)'); if (documented == null) { continue; } - const anyLogin = route.hasLoginRequired || route.hasLoginRequiredAllowSuspicious; + const anyLogin = route.hasLoginRequired; const sourceAcceptsBot = anyLogin && !route.hasDefaultUserOnly; const exemption = BOT_EXEMPT.get(key); if (exemption != null) { @@ -2033,7 +2025,7 @@ console.log('unauthenticated capability flag (from the middleware chain)'); if (documented == null) { continue; } - const anyLogin = route.hasLoginRequired || route.hasLoginRequiredAllowSuspicious; + const anyLogin = route.hasLoginRequired; const sourceIsOpen = !anyLogin && !route.middlewares.some((name) => /OAuth2Scope/u.test(name)); const exemption = UNAUTHENTICATED_EXEMPT.get(key); if (exemption != null) { @@ -2089,7 +2081,7 @@ console.log('spec security field against the middleware chain'); } const declaredSchemes = declaredSecurity.schemes; compared += 1; - const anyLogin = route.hasLoginRequired || route.hasLoginRequiredAllowSuspicious; + const anyLogin = route.hasLoginRequired; const acceptsBot = anyLogin && !route.hasDefaultUserOnly; const requiresAuthentication = anyLogin || diff --git a/fluxer_docs/scripts/VerifyDocsStyle.ts b/fluxer_docs/scripts/VerifyDocsStyle.ts index a4ee3fd46..5e5e18e75 100644 --- a/fluxer_docs/scripts/VerifyDocsStyle.ts +++ b/fluxer_docs/scripts/VerifyDocsStyle.ts @@ -267,7 +267,6 @@ const TABLE_COUNT_FLOOR = 1800; const ACCEPTED_TABLE_FINDINGS = new Map>>>([ ['admin-api/applications.mdx', {'table-identifier': 1}], - ['admin-api/bulk-jobs.mdx', {'table-fit': 1}], ['admin-api/discovery.mdx', {'table-identifier': 1}], ['admin-api/gateway.mdx', {'table-identifier': 2}], ['admin-api/guilds.mdx', {'table-identifier': 3}], @@ -275,7 +274,7 @@ const ACCEPTED_TABLE_FINDINGS = new Map1 | string | The name given to the key (1-100 characters) | | expires_in_days?2 | integer | The number of days until the key expires (1-365) | -| acls3 | array[string] | The [ACLs](/admin-api/#acl-registry) stored on the key, each a registry value (at most 111) | +| acls3 | array[string] | The [ACLs](/admin-api/#acl-registry) stored on the key, each a registry value (at most 107) | 1 A value that is empty after trimming is rejected, so whitespace alone is not a name @@ -218,7 +218,7 @@ An update never rotates the credential, and no field on this route changes the e | Field | Type | Description | | --- | --- | --- | | name?1 | string | The replacement name for the key (1-100 characters) | -| acls?2 | array[string] | The complete replacement set of [ACLs](/admin-api/#acl-registry), each a registry value (at most 111) | +| acls?2 | array[string] | The complete replacement set of [ACLs](/admin-api/#acl-registry), each a registry value (at most 107) | 1 A value that is empty after trimming is rejected diff --git a/fluxer_docs/src/content/docs/admin-api/bulk-jobs.mdx b/fluxer_docs/src/content/docs/admin-api/bulk-jobs.mdx index e190dd094..be91f14bd 100644 --- a/fluxer_docs/src/content/docs/admin-api/bulk-jobs.mdx +++ b/fluxer_docs/src/content/docs/admin-api/bulk-jobs.mdx @@ -40,10 +40,6 @@ Each value is the exact `task` discriminator. ACL `bulk:update:user_flags`. Adds and removes account flags on every targeted user. Runs as `bulkUpdateUserFlags`. -### `update_suspicious_activity_flags` - -ACL `bulk:update:suspicious_activity`. Adds and removes verification requirements on every targeted user. Runs as `bulkUpdateSuspiciousActivityFlags`. - ### `update_guild_features` ACL `bulk:update:guild_features`. Adds and removes features on every targeted guild. Runs as `bulkUpdateGuildFeatures`. @@ -88,19 +84,6 @@ The `task` discriminator selects one of these structures. Every ID array has an 1 Each entry is one 64-bit flag value written as an unsigned decimal string, such as `1024`. Body validation rejects a symbolic name. Additions are applied before removals, so a value named in both arrays ends up cleared -#### Update suspicious activity flags structure - -| Field | Type | Description | -| --- | --- | --- | -| task | string | The discriminator selecting this variant, `update_suspicious_activity_flags` | -| user_ids | array[snowflake] | The users to update (max 1000 entries) | -| add_flags?1 2 | array[string] | [Suspicious activity flag](/admin-api/users/#suspicious-activity-flags) names to add (max 32, default empty) | -| remove_flags?1 | array[string] | [Suspicious activity flag](/admin-api/users/#suspicious-activity-flags) names to remove (max 32, default empty) | - -1 Each entry is the symbolic flag name such as `REQUIRE_VERIFIED_PHONE`. An entry naming no known flag is ignored, and additions are applied before removals - -2 Adding `REQUIRE_VERIFIED_PHONE` or `REQUIRE_REVERIFIED_PHONE` also clears the deferred phone bit 1 << 16, which turns a deferred phone requirement into an immediate one - #### Update guild features structure | Field | Type | Description | @@ -150,12 +133,10 @@ Entities are processed in the submitted order. [Cancel job](/admin-api/jobs/#can Every task updates its progress before work starts and at completion. Every task except `schedule_user_deletion` also updates its progress after every 25 entities, and `schedule_user_deletion` updates its progress after every 10 accounts. The final `progress_message` has the successful and failed counts. -Every task writes one summary Admin audit entry when it finishes, with the action `bulk_update_user_flags`, `bulk_update_suspicious_activity_flags`, `bulk_update_guild_features`, `bulk_add_guild_members`, `bulk_schedule_deletion`, `bulk_ban_file_shas`, or `bulk_delete_user_messages`. The summary has the audit reason, the entity count, the operation-specific parameters, the job identifier, and the processed, successful, and failed counts. Its `target_type` is `bulk_job` and its `target_id` is the job identifier, except for `add_guild_members`, which targets the guild. A failed job writes no summary entry. A cancelled job writes one, marked `cancelled`, covering the entities it processed before it stopped. +Every task writes one summary Admin audit entry when it finishes, with the action `bulk_update_user_flags`, `bulk_update_guild_features`, `bulk_add_guild_members`, `bulk_schedule_deletion`, `bulk_ban_file_shas`, or `bulk_delete_user_messages`. The summary has the audit reason, the entity count, the operation-specific parameters, the job identifier, and the processed, successful, and failed counts. Its `target_type` is `bulk_job` and its `target_id` is the job identifier, except for `add_guild_members`, which targets the guild. A failed job writes no summary entry. A cancelled job writes one, marked `cancelled`, covering the entities it processed before it stopped. `update_user_flags` writes one `update_flags` entry for each account and dispatches [User Update](/gateway/events/#user-update) to the account's sessions. A change to a publicly visible flag also dispatches [Guild Member Update](/gateway/events/#guild-member-update) to every guild the account is in. -`update_suspicious_activity_flags` rewrites each account's verification requirements and dispatches [User Update](/gateway/events/#user-update). No [Guild Member Update](/gateway/events/#guild-member-update) follows. The task writes one `update_suspicious_activity_flags` entry for each account, with the audit reason. An unknown flag name fails the job before any account is changed. - `update_guild_features` writes one `update_features` entry for each guild, dispatches [Guild Update](/gateway/events/#guild-update), and reindexes the guild for search. Fluxer reconciles a guild that already has a discovery application record against the new feature set, so gaining `DISCOVERABLE` approves the record and losing it marks the record removed. A guild with no discovery record is left alone. `add_guild_members` bypasses the ban check that a normal join runs. The task suppresses the join system message, records the join source as an Admin force add, and dispatches [Guild Member Add](/gateway/events/#guild-member-add) to the guild and [Guild Create](/gateway/events/#guild-create) to the added account's sessions. The task still enforces the per-account guild cap and the guild member cap, so an account at either ceiling is counted as failed. An account that is already a member is left unchanged and counted as successful, with no second membership and no Dispatch. Adding a bot account also records a `BOT_ADD` guild audit log entry attributed to the acting Admin. diff --git a/fluxer_docs/src/content/docs/admin-api/index.mdx b/fluxer_docs/src/content/docs/admin-api/index.mdx index 85f891494..87aa5966a 100644 --- a/fluxer_docs/src/content/docs/admin-api/index.mdx +++ b/fluxer_docs/src/content/docs/admin-api/index.mdx @@ -55,14 +55,13 @@ A body with none of those fields resolves to no ACL at all and applies no change [Queue bulk job](/admin-api/bulk-jobs/#queue-bulk-job) maps its `task` discriminator to one ACL and requires that one. - `update_user_flags` maps to `bulk:update:user_flags`. -- `update_suspicious_activity_flags` maps to `bulk:update:suspicious_activity`. - `update_guild_features` maps to `bulk:update:guild_features`. - `add_guild_members` maps to `bulk:add:guild_members`. - `schedule_user_deletion` maps to `bulk:delete:users`. Fluxer checks each ACL an Admin grants against the ACLs that Admin holds. [Set user ACLs](/admin-api/users/#set-user-acls) and [Create Admin API key](/admin-api/api-keys/#create-admin-api-key) both refuse to write an ACL the acting Admin does not itself hold, with 403 `MISSING_ACL`. A wildcard holder is exempt. Set user ACLs also refuses the acting Admin's own account with 403 `ACCESS_DENIED`, and it looks up the target account before it checks the granted ACLs, so an unknown ID fails first with 404 `UNKNOWN_USER`. -[Set user ACLs](/admin-api/users/#set-user-acls), [Create Admin API key](/admin-api/api-keys/#create-admin-api-key), and [Update Admin API key](/admin-api/api-keys/#update-admin-api-key) each accept at most 111 ACLs and validate every entry against the registry, so a value outside it returns 400 `INVALID_FORM_BODY`. +[Set user ACLs](/admin-api/users/#set-user-acls), [Create Admin API key](/admin-api/api-keys/#create-admin-api-key), and [Update Admin API key](/admin-api/api-keys/#update-admin-api-key) each accept at most 107 ACLs and validate every entry against the registry, so a value outside it returns 400 `INVALID_FORM_BODY`. :::caution[`*` satisfies every present and future ACL] A key whose owning account holds `*` skips the owner check. An Admin holding `*` can grant any ACL. @@ -330,7 +329,6 @@ An entry with any other action has `access` set to `write`. | bulk_delete_user_messages | A queued bulk message deletion job was applied | | bulk_schedule_deletion | A bulk account deletion schedule was queued or applied | | bulk_update_guild_features | A bulk guild feature change was queued or applied | -| bulk_update_suspicious_activity_flags | A bulk suspicious activity flag change was queued or applied | | bulk_update_user_flags | A bulk account flag change was queued or applied | | cancel_bulk_message_deletion | A bulk message deletion an account scheduled for itself was cancelled | | cancel_deletion | A scheduled account deletion was cancelled | @@ -351,7 +349,6 @@ An entry with any other action has `access` set to `write`. | delete_voice_server | A registered voice server was deleted | | delete_webauthn_credential | A WebAuthn credential was removed from an account | | disable_mfa | Multi-factor authentication was disabled on an account | -| disable_suspicious_activity | An account flagged for suspicious activity was disabled | | force_add_to_guild | An account was added to a guild while bypassing the ban check | | generate_gift_codes | Gift codes were generated | | kick_member | A member was removed from a guild | @@ -402,13 +399,11 @@ An entry with any other action has `access` set to `write`. | update_features | Guild features were added or removed | | update_guild | A guild update with no field group was sent | | update_flags | Account flags were changed | -| update_has_verified_phone | Verified phone state was changed | | update_instance_config | The instance configuration was updated | | update_limit_config | The limit configuration was replaced | | update_name | A guild name was changed | | update_premium_flags | Premium flags were changed | | update_settings | General guild settings were changed | -| update_suspicious_activity_flags | Suspicious activity flags were replaced | | update_vanity | A guild custom invite code was changed | | update_voice_region | A voice region was updated | | update_voice_server | A registered voice server was updated | @@ -481,7 +476,7 @@ Returns every Admin permission string the instance recognises, in [ACL registry] | Field | Type | Description | | --- | --- | --- | -| acls1 | array[string] | The permission strings the Admin API recognises (at most 111 entries) | +| acls1 | array[string] | The permission strings the Admin API recognises (at most 107 entries) | 1 The response is the registry itself and does not vary with the caller's own ACL set @@ -548,7 +543,6 @@ The registry is returned in this order by [List ACLs](#list-acls). A value outsi | bulk:delete:users | Queues the bulk account deletion task | | bulk:delete:user_messages | Queues the bulk message deletion task | | bulk:update:guild_features | Queues the bulk guild feature task | -| bulk:update:suspicious_activity | Queues the bulk suspicious activity flag task | | bulk:update:user_flags | Queues the bulk account flag task | | csam:submit_ncmec | Submits an attachment through the NCMEC reporting integration | | discovery:remove | Removes a guild from [discovery](/admin-api/discovery/) | @@ -584,7 +578,6 @@ The registry is returned in this order by [List ACLs](#list-acls). A value outsi | system_dm:send | Sends an official direct message from the instance to one or many accounts | | user:cancel:bulk_message_deletion | Cancels the bulk message deletion an account scheduled for itself | | user:delete | Schedules or cancels account deletion | -| user:disable:suspicious | Disables a user for suspicious activity | | user:list:dm_channels | Reads a user's direct message and group direct message channels | | user:list:guilds | Reads a user's guild memberships | | user:list:relationships | Reads a user's relationships | @@ -601,9 +594,7 @@ The registry is returned in this order by [List ACLs](#list-acls). A value outsi | user:update:email | Updates the email address, marks the address verified, resends verification, and sends a password reset | | user:update:flags | Updates account flags and premium flags, refreshes in-app purchases, and ends every login session of an account | | user:update:mfa | Reads and removes a user's WebAuthn credentials, and removes MFA state | -| user:update:phone | Updates verified phone state | | user:update:profile | Clears profile fields | -| user:update:suspicious_activity | Replaces suspicious activity flags | | user:update:traits | Replaces account traits | | user:update:username | Updates usernames and discriminators | | voice:region:create | Creates [voice](/admin-api/voice/) regions | diff --git a/fluxer_docs/src/content/docs/admin-api/instance.mdx b/fluxer_docs/src/content/docs/admin-api/instance.mdx index 477391bf1..b4837c06f 100644 --- a/fluxer_docs/src/content/docs/admin-api/instance.mdx +++ b/fluxer_docs/src/content/docs/admin-api/instance.mdx @@ -178,7 +178,7 @@ The ALTCHA proof-of-work check that the API issues and verifies itself on gated | cost | integer | PBKDF2 iterations per solving attempt (1000-20000, default 5000) | | max_counter | integer | Upper bound of the hidden counter a client searches for (100-20000, default 1000) | -Every field is present on read. An absent document or missing field uses the defaults above, so the check is on until an administrator sets `enabled` to false. Setting `enabled` to false turns the check off for the whole instance. Phone sends that the [phone verification service](/http-api/users/phone-verification/#send-phone-verification) challenges are refused instead. +Every field is present on read. An absent document or missing field uses the defaults above, so the check is on until an administrator sets `enabled` to false. Setting `enabled` to false turns the check off for the whole instance. Each challenge hides its counter between half of `max_counter` and `max_counter`, and a client tries counters from 0 upward. Solve time grows with `cost` times `max_counter`. Fluxer spends one attempt at `cost` to issue each challenge. diff --git a/fluxer_docs/src/content/docs/admin-api/jobs.mdx b/fluxer_docs/src/content/docs/admin-api/jobs.mdx index ff3fa3245..10c32a843 100644 --- a/fluxer_docs/src/content/docs/admin-api/jobs.mdx +++ b/fluxer_docs/src/content/docs/admin-api/jobs.mdx @@ -126,7 +126,7 @@ The queue drops a job 7 days after it was queued. A job still recorded as `queue Use the returned `task_type` value to filter [List jobs](#list-jobs). -The tasks queued by [Bulk jobs](/admin-api/bulk-jobs/) are `bulkUpdateUserFlags`, `bulkUpdateSuspiciousActivityFlags`, `bulkUpdateGuildFeatures`, `bulkAddGuildMembers`, and `bulkScheduleUserDeletion`. `harvestUserData` and `harvestGuildData` build [archives](/admin-api/archives/), `sendSystemDm` delivers a [system DM broadcast](/admin-api/system-dms/), and `refreshSearchIndex` rebuilds a [search index](/admin-api/search-indexes/). `removeChannelFollowers` runs on the `crosspost` lane after an announcement channel is deleted or converted into a text channel, and removes the channel follower webhooks that follow it. +The tasks queued by [Bulk jobs](/admin-api/bulk-jobs/) are `bulkUpdateUserFlags`, `bulkUpdateGuildFeatures`, `bulkAddGuildMembers`, and `bulkScheduleUserDeletion`. `harvestUserData` and `harvestGuildData` build [archives](/admin-api/archives/), `sendSystemDm` delivers a [system DM broadcast](/admin-api/system-dms/), and `refreshSearchIndex` rebuilds a [search index](/admin-api/search-indexes/). `removeChannelFollowers` runs on the `crosspost` lane after an announcement channel is deleted or converted into a text channel, and removes the channel follower webhooks that follow it. ## List jobs diff --git a/fluxer_docs/src/content/docs/admin-api/users.mdx b/fluxer_docs/src/content/docs/admin-api/users.mdx index 445f4b994..b6b286365 100644 --- a/fluxer_docs/src/content/docs/admin-api/users.mdx +++ b/fluxer_docs/src/content/docs/admin-api/users.mdx @@ -42,7 +42,6 @@ When the caller lacks `user:view:email`, `user:view:dob`, or `user:view:ip`, Flu | email3 | ?string | The registered email address, or null when the account has none | | email_verified3 | boolean | Whether the registered address has been verified | | email_bounced3 | boolean | Whether delivery to the registered address hard bounced | -| has_verified_phone | boolean | Whether the account is treated as having completed phone verification | | date_of_birth4 | ?string | The date of birth in `YYYY-MM-DD` form, or null when none is stored | | locale | ?string | The saved [locale](/topics/locales/#supported-locales), or null when the account has never set one | | premium_type | ?integer | [Premium type](#premium-types) | @@ -50,24 +49,22 @@ When the caller lacks `user:view:email`, `user:view:dob`, or `user:view:ip`, Flu | premium_until | ?ISO8601 timestamp | The time the premium subscription expires, or null when the account has none | | premium_grace_ends_at | ?ISO8601 timestamp | The time the payment grace period ends, or null when no grace period is running | | premium_lifetime_sequence | ?integer | The sequence number of the lifetime purchase, or null when the account holds none | -| suspicious_activity_flags | integer | [Suspicious activity flags](#suspicious-activity-flags) | -| phone_verification_deferred5 | boolean | Whether a stored phone requirement is deferred and not enforced | -| temp_banned_until6 | ?ISO8601 timestamp | The time the ban expires, or null when no ban stands | +| temp_banned_until5 | ?ISO8601 timestamp | The time the ban expires, or null when no ban stands | | pending_deletion_at | ?ISO8601 timestamp | The time the scheduled deletion runs, or null when none is scheduled | -| pending_bulk_message_deletion_at7 | ?ISO8601 timestamp | The time the account's own scheduled bulk message deletion runs | +| pending_bulk_message_deletion_at6 | ?ISO8601 timestamp | The time the account's own scheduled bulk message deletion runs | | deletion_reason_code | ?integer | [Deletion reason](#deletion-reasons) | | deletion_public_reason | ?string | The reason shown to the account holder, or null when none was supplied | | deletion_audit_log_reason | ?string | The private reason stored with the pending deletion, and null without `audit_log:view` | | deletion_scheduled_by | ?snowflake | The ID of the account that scheduled the pending deletion, or null when it was not recorded | | deletion_scheduled_at | ?ISO8601 timestamp | The time the pending deletion was scheduled, or null when it was not recorded | -| acls8 | array[string] | Effective [Admin ACLs](/admin-api/#acl-registry), with at most 111 entries | -| traits9 | array[string] | The free-form operator labels set on the account, with at most 100 entries | -| has_totp10 | boolean | Whether a TOTP authenticator is registered | -| authenticator_types10 13 | array[integer] | Registered [authenticator types](/http-api/users/#authenticator-types), with at most 10 entries | +| acls7 | array[string] | Effective [Admin ACLs](/admin-api/#acl-registry), with at most 107 entries | +| traits8 | array[string] | The free-form operator labels set on the account, with at most 100 entries | +| has_totp9 | boolean | Whether a TOTP authenticator is registered | +| authenticator_types9 12 | array[integer] | Registered [authenticator types](/http-api/users/#authenticator-types), with at most 10 entries | | last_active_at | ?ISO8601 timestamp | The time of the last recorded activity, or null when none is recorded | -| last_active_ip11 | ?string | The IP address the account was last active from | -| last_active_ip_reverse11 12 | ?string | The reverse DNS name of that IP address | -| last_active_location11 12 | ?string | The approximate location of that IP address | +| last_active_ip10 | ?string | The IP address the account was last active from | +| last_active_ip_reverse10 11 | ?string | The reverse DNS name of that IP address | +| last_active_location10 11 | ?string | The approximate location of that IP address | 1 An unpadded JSON number here, unlike the zero-padded string `discriminator` of the [Admin user summary](/admin-api/#admin-user-summary-object) and the [Admin resolved user](#admin-resolved-user-object) embedded in other Admin objects @@ -77,23 +74,21 @@ When the caller lacks `user:view:email`, `user:view:dob`, or `user:view:ip`, Flu 4 Requires `user:view:dob`, and without it the field is null -5 Derived from bit `1 << 16` of `suspicious_activity_flags`, which sits outside the [suspicious activity flag](#suspicious-activity-flags) registry +5 Set by [Ban user](#ban-user) for both ban modes. An expiry that has already passed is reported as null, so an elapsed temporary ban reads the same as no ban -6 Set by [Ban user](#ban-user) for both ban modes. An expiry that has already passed is reported as null, so an elapsed temporary ban reads the same as no ban +6 Written when the account holder schedules its own bulk message deletion, and cleared by [Cancel scheduled message deletion](#cancel-scheduled-message-deletion) -7 Written when the account holder schedules its own bulk message deletion, and cleared by [Cancel scheduled message deletion](#cancel-scheduled-message-deletion) +7 The set written by [Set user ACLs](#set-user-acls), returned in stored order. This set alone decides whether the account can reach the Admin API, and the `STAFF` [account flag](#account-flags) plays no part in that -8 The set written by [Set user ACLs](#set-user-acls), returned in stored order. This set alone decides whether the account can reach the Admin API, and the `STAFF` [account flag](#account-flags) plays no part in that +8 Sorted in ascending order, unlike `acls` -9 Sorted in ascending order, unlike `acls` +9 Never redacted, and returned in full to any caller the operation admitted -10 Never redacted, and returned in full to any caller the operation admitted +10 Requires `user:view:ip`, and without it the field is null and no network lookup is attempted -11 Requires `user:view:ip`, and without it the field is null and no network lookup is attempted +11 Resolved live from `last_active_ip` for each response, and null when the lookup fails or returns nothing. The reverse DNS result is cached for one day -12 Resolved live from `last_active_ip` for each response, and null when the lookup fails or returns nothing. The reverse DNS result is cached for one day - -13 `WEBAUTHN` is present only while the account chose passkeys as a second factor. A registered credential does not add it, so `has_totp` false with an empty array still describes an account holding passkeys +12 `WEBAUTHN` is present only while the account chose passkeys as a second factor. A registered credential does not add it, so `has_totp` false with an empty array still describes an account holding passkeys ### Example @@ -111,10 +106,7 @@ When the caller lacks `user:view:email`, `user:view:dob`, or `user:view:ip`, Flu "email": "subject@example.com", "email_verified": true, "email_bounced": false, - "has_verified_phone": false, "date_of_birth": "1998-03-21", - "suspicious_activity_flags": 0, - "phone_verification_deferred": false, "temp_banned_until": null, "pending_deletion_at": null, "deletion_reason_code": null, @@ -143,19 +135,18 @@ The `flags` field of the [Admin user object](#admin-user-object) is a 64-bit bit | 1 << 6 | SPAMMER | Account is flagged as a spammer | | 1 << 33 | HIGH_GLOBAL_RATE_LIMIT | Account has elevated global rate limits | | 1 << 34 | DELETED | Account has been deleted | -| 1 << 35 | DISABLED_SUSPICIOUS_ACTIVITY | Account is disabled for suspicious activity | | 1 << 36 | SELF_DELETED | Account was self-deleted | | 1 << 38 | DISABLED | Account is disabled | | 1 << 39 | HAS_SESSION_STARTED | Account has started a session | | 1 << 47 | RATE_LIMIT_BYPASS | Account can bypass rate limits | | 1 << 48 | REPORT_BANNED | Account is banned from reporting | | 1 << 49 | VERIFIED_NOT_UNDERAGE | Account is verified as not underage | +| 1 << 50 | ACCOUNT_LIMITED | Account is [limited](/http-api/users/#account-limitation) | | 1 << 51 | HAS_DISMISSED_PREMIUM_ONBOARDING | Account has dismissed premium onboarding | | 1 << 53 | APP_STORE_REVIEWER | Account belongs to an app store reviewer | | 1 << 57 | STAFF_HIDDEN | Staff status is hidden from public flags | | 1 << 60 | AGE_VERIFIED_ADULT | Account has verified its age as an adult through card verification | -| 1 << 61 | FORCE_INBOUND_PHONE_VERIFICATION | Account is forced through inbound phone verification | -| 1 << 62 | NOT_SUSPICIOUS | Account is permanently exempt from automatic suspicious activity flagging | +| 1 << 62 | LIMIT_EXEMPT | Account is never limited | ## Premium flags @@ -179,30 +170,6 @@ The `flags` field of the [Admin user object](#admin-user-object) is a 64-bit bit | 1 | SUBSCRIPTION | Active premium subscription | | 2 | LIFETIME | Lifetime premium subscription | -## Suspicious activity flags - -A 32-bit bitfield of verification requirements applied to an account. [Update suspicious activity flags](#update-suspicious-activity-flags) and [Disable user for suspicious activity](#disable-user-for-suspicious-activity) both write the complete value, so a bit the request omits is cleared. - -| Value | Name | Description | -| --- | --- | --- | -| 1 << 0 | REQUIRE_VERIFIED_EMAIL1 | Require a verified email | -| 1 << 1 | REQUIRE_REVERIFIED_EMAIL1 | Require a reverified email | -| 1 << 2 | REQUIRE_VERIFIED_PHONE2 | Require a verified phone | -| 1 << 3 | REQUIRE_REVERIFIED_PHONE3 | Require a reverified phone | -| 1 << 4 | REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE1 | Require verified email or verified phone | -| 1 << 5 | REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE1 | Require reverified email or verified phone | -| 1 << 6 | REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE1 | Require verified email or reverified phone | -| 1 << 7 | REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE1 | Require reverified email or reverified phone | -| 1 << 8 | REQUIRE_INBOUND_PHONE_VERIFICATION2 | Require inbound SMS verification, where the account holder texts a code to the instance's inbound SMS number | - -1 Cleared automatically whenever the account's email becomes verified, either through ordinary verification or through [Verify user email](#verify-user-email) - -2 Cleared automatically by [Update user phone verification](#update-user-phone-verification) when it sets `has_verified_phone` to true, together with the deferral bit `1 << 16` - -3 Deferrable alongside `REQUIRE_VERIFIED_PHONE`. [Update user phone verification](#update-user-phone-verification) leaves it set - -Bit `1 << 16` sits outside this registry. It defers a phone requirement so it is stored but not enforced, and the [Admin user object](#admin-user-object) reports it as `phone_verification_deferred`. [Update suspicious activity flags](#update-suspicious-activity-flags) and [Disable user for suspicious activity](#disable-user-for-suspicious-activity) bound `flags` only as a non-negative 32-bit integer, and neither masks the submitted value, so a request with that bit sets it directly. - ## Deletion reasons | Value | Name | Description | @@ -400,14 +367,14 @@ One entry for each direct message or group direct message channel the account ha ## Admin user change log object -One recorded change to the account's email address, phone verification state, or username and discriminator. The account holder's own changes appear here, and so do [Change user username](#change-user-username) and [Change user email](#change-user-email). +One recorded change to the account's email address or its username and discriminator. The account holder's own changes appear here, and so do [Change user username](#change-user-username) and [Change user email](#change-user-email). ### Structure | Field | Type | Description | | --- | --- | --- | | event_id1 | string | The ID of the change entry as an unsigned 64-bit decimal string | -| field | string | The field that changed, one of `email`, `has_verified_phone`, or `fluxer_tag` | +| field | string | The field that changed, either `email` or `fluxer_tag` | | old_value2 | ?string | The value before the change, or null when the field was unset | | new_value2 | ?string | The value after the change, or null when the field was cleared | | reason3 | ?string | The recorded reason for the change, or null when unrecorded | @@ -799,7 +766,7 @@ The operation accepts no request body and never clears verification, so the one ### Side effects -`email_verified` becomes true and `email_bounced` becomes false. The same write clears each of these [suspicious activity flag](#suspicious-activity-flags) bits: `REQUIRE_VERIFIED_EMAIL`, `REQUIRE_REVERIFIED_EMAIL`, `REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE`, `REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE`, `REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE`, and `REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE`. +`email_verified` becomes true and `email_bounced` becomes false. [User Update](/gateway/events/#user-update) is emitted to the account's own sessions. The operation records one [Admin audit entry](/admin-api/#admin-audit-entry-object) with action `verify_email`, target type `user`, and a metadata key `email` with the address as it stood before the write, or the literal `null` when the account had none. @@ -814,7 +781,7 @@ The operation accepts no request body and never clears verification, so the one Requests a new verification email for the account. Requires `user:update:email`. Returns an empty 204 response. :::caution[An already verified account gets no email] -When the account's email is already verified and none of the [suspicious activity flag](#suspicious-activity-flags) bits `REQUIRE_REVERIFIED_EMAIL`, `REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE`, `REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE`, or `REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE` is set, Fluxer returns 204 without storing a token or sending anything. +When the account's email is already verified, Fluxer returns 204 without storing a token or sending anything. ::: :::note[Delivery is dropped silently] @@ -1093,7 +1060,7 @@ A path naming the acting account fails with 403 `ACCESS_DENIED` before the accou | Field | Type | Description | | --- | --- | --- | -| acls1 | array[string] | Replacement [Admin ACLs](/admin-api/#acl-registry), with at most 111 values | +| acls1 | array[string] | Replacement [Admin ACLs](/admin-api/#acl-registry), with at most 107 values | 1 Required. A value outside the [ACL registry](/admin-api/#acl-registry) fails body validation, and a repeated value is collapsed @@ -1211,6 +1178,8 @@ Additions are applied before removals, so a flag named in both arrays ends up cl [User Update](/gateway/events/#user-update) is emitted to the account's own sessions. A change to the account's public flags also sends [Guild Member Update](/gateway/events/#guild-member-update) to the account's guilds. +Removing `ACCOUNT_LIMITED` or adding `LIMIT_EXEMPT` also lifts any [new conversation limit](/http-api/users/private-channels/#new-conversation-limit) on the account. + The operation records one [Admin audit entry](/admin-api/#admin-audit-entry-object) with action `update_flags`, target type `user`, and the metadata keys `add_flags`, `remove_flags`, and `new_flags`. An empty array is omitted from the metadata map. ### Rate limit @@ -1332,151 +1301,6 @@ The operation records one [Admin audit entry](/admin-api/#admin-audit-entry-obje 100 requests per minute for each authenticated user, on the `admin:user:modify` bucket. -## Update user phone verification - - - -Sets whether the account is treated as having completed phone verification, and returns the resulting account. Requires `user:update:phone`. - -This operation is the one way to set `has_verified_phone` back to false once it is true. - -### Path parameters - -| Field | Type | Description | -| --- | --- | --- | -| user_id | snowflake | The ID of the target account | - -### JSON body - -| Field | Type | Description | -| --- | --- | --- | -| has_verified_phone1 | boolean | Whether the account counts as phone verified | - -1 Required. Setting it to true also clears the `REQUIRE_VERIFIED_PHONE` and `REQUIRE_INBOUND_PHONE_VERIFICATION` [suspicious activity flags](#suspicious-activity-flags) together with the deferral bit `1 << 16`, and setting it to false clears no flag - -### Response body - -| Field | Type | Description | -| --- | --- | --- | -| user | [Admin user](#admin-user-object) object | The resulting account | - -### Response - -| Status | Body | Condition | -| --- | --- | --- | -| 200 | response body | Phone verification state was set | -| 404 | [error response](/admin-api/#error-response) | `UNKNOWN_USER`, because the account does not exist | - -`REQUIRE_REVERIFIED_PHONE` is outside the cleared set, so an account under a reverification requirement keeps it after this operation marks it verified. - -### Side effects - -[User Update](/gateway/events/#user-update) is emitted to the account's own sessions. The operation records one [Admin audit entry](/admin-api/#admin-audit-entry-object) with action `update_has_verified_phone`, target type `user`, and a metadata key `has_verified_phone`. When suspicious activity flags were also cleared, the entry also has `suspicious_activity_flags_before` and `suspicious_activity_flags_after`. - -### Rate limit - -100 requests per minute for each authenticated user, on the `admin:user:modify` bucket. - -## Update suspicious activity flags - - - -Replaces the account's [suspicious activity flags](#suspicious-activity-flags) and returns the resulting account. Requires `user:update:suspicious_activity`. - -The operation sets verification requirements without disabling the account. [Disable user for suspicious activity](#disable-user-for-suspicious-activity) also locks the account out. - -### Path parameters - -| Field | Type | Description | -| --- | --- | --- | -| user_id | snowflake | The ID of the target account | - -### JSON body - -| Field | Type | Description | -| --- | --- | --- | -| flags1 | integer | Replacement [suspicious activity flags](#suspicious-activity-flags) | - -1 Required. The value replaces the complete stored bitfield, so an omitted bit is cleared and a value of zero sets no requirement at all - -### Response body - -| Field | Type | Description | -| --- | --- | --- | -| user | [Admin user](#admin-user-object) object | The resulting account | - -### Response - -| Status | Body | Condition | -| --- | --- | --- | -| 200 | response body | Flags were replaced | -| 404 | [error response](/admin-api/#error-response) | `UNKNOWN_USER`, because the account does not exist | - -The stored deferral bit `1 << 16` is preserved only when it was already set and the submitted value sets the same `REQUIRE_VERIFIED_PHONE` and `REQUIRE_REVERIFIED_PHONE` bits as the stored value, with at least one of them set. Any other submitted value clears the deferral bit, so any phone requirement in the submitted value is enforced immediately. - -[Bulk jobs](/admin-api/bulk-jobs/) applies the same change to up to 1,000 accounts as a queued `update_suspicious_activity_flags` task. - -### Side effects - -[User Update](/gateway/events/#user-update) is emitted to the account's own sessions. - -The operation records one [Admin audit entry](/admin-api/#admin-audit-entry-object) with action `update_suspicious_activity_flags`, target type `user`, and a metadata key `flags` with the submitted value. A preserved deferral bit makes that value differ from the flags the account ends up with. - -### Rate limit - -100 requests per minute for each authenticated user, on the `admin:user:modify` bucket. - -## Disable user for suspicious activity - - - -Disables the account, replaces its [suspicious activity flags](#suspicious-activity-flags), destroys its password, and returns the resulting account. Requires `user:disable:suspicious`. - -:::caution[The stored password is destroyed] -The account holder cannot sign in with their old password after regaining access, and recovery requires [Send password reset](#send-password-reset) or the ordinary self-service reset flow. -::: - -### Path parameters - -| Field | Type | Description | -| --- | --- | --- | -| user_id | snowflake | The ID of the target account | - -### JSON body - -| Field | Type | Description | -| --- | --- | --- | -| flags1 | integer | Replacement [suspicious activity flags](#suspicious-activity-flags) | - -1 Required. The value replaces the complete stored bitfield. Unlike [Update suspicious activity flags](#update-suspicious-activity-flags), the deferral bit is never preserved - -### Response body - -| Field | Type | Description | -| --- | --- | --- | -| user | [Admin user](#admin-user-object) object | The resulting account | - -### Response - -| Status | Body | Condition | -| --- | --- | --- | -| 200 | response body | The account was disabled | -| 404 | [error response](/admin-api/#error-response) | `UNKNOWN_USER`, because the account does not exist | - -Fluxer adds the `DISABLED_SUSPICIOUS_ACTIVITY` [account flag](#account-flags), so every other stored flag survives. No dedicated operation clears it. [Unban user](#unban-user) clears only `DISABLED`, and [Update user flags](#update-user-flags) can remove the bit like any other. - -### Side effects - -The account is marked with `DISABLED_SUSPICIOUS_ACTIVITY`, its suspicious activity flags are replaced, and its password hash is set to null. Every authentication session is then deleted, so the account is signed out on every device. - -Fluxer emails the account holder when the account has an email address. - -[User Update](/gateway/events/#user-update) is emitted after the sessions have already been deleted, so no connection of the account remains to receive it. The operation records one [Admin audit entry](/admin-api/#admin-audit-entry-object) with action `disable_suspicious_activity`, target type `user`, and a metadata key `flags`. - -### Rate limit - -100 requests per minute for each authenticated user, on the `admin:user:modify` bucket. - ## Ban user @@ -1570,7 +1394,7 @@ The notification email quotes the `X-Audit-Log-Reason` value verbatim as the rea ### Side effects -`temp_banned_until` is cleared and `DISABLED` is removed from the account flags. `DISABLED_SUSPICIOUS_ACTIVITY` is a different flag and is not cleared, so an account disabled by [Disable user for suspicious activity](#disable-user-for-suspicious-activity) stays disabled. +`temp_banned_until` is cleared and `DISABLED` is removed from the account flags. Deleted sessions are not restored. The account holder is emailed when the account has an email address. [User Update](/gateway/events/#user-update) is emitted to the account's own sessions. diff --git a/fluxer_docs/src/content/docs/authentication.md b/fluxer_docs/src/content/docs/authentication.md index 54b8bca75..96e679e45 100644 --- a/fluxer_docs/src/content/docs/authentication.md +++ b/fluxer_docs/src/content/docs/authentication.md @@ -124,24 +124,7 @@ Enforcement applies at those operations only, and does not gate password change ## Account state gates -An ordinary authenticated operation rejects an account that has an unmet suspicious activity requirement with 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. Each set flag in the response is one requirement the account has not met. A flag no longer appears in the response once the account meets that requirement. - -### Account suspicious activity body - -| Field | Type | Description | -| --- | --- | --- | -| data | object | An object whose `suspicious_activity_flags` member is the integer [suspicious activity flag](/admin-api/users/#suspicious-activity-flags) bitfield still outstanding | - -A route that explicitly admits an account with an unmet suspicious activity requirement still accepts its credential. These stay reachable while a requirement is outstanding: - -- [Get current user](/http-api/users/current-user/#get-current-user) and [Modify current user](/http-api/users/current-user/#modify-current-user). -- [Get current user settings](/http-api/users/settings/#get-current-user-settings). -- The [email change flow](/http-api/users/email-and-password/) with its bounced-address variants, and the email verification resend. -- The [phone verification](/http-api/users/phone-verification/) flow. -- Session listing and session termination. -- The application and authorisation management operations in [Applications](/http-api/applications/) and [OAuth2](/http-api/oauth2/). - -An Admin operation applies no suspicious activity gate. +A [limited account](/http-api/users/#account-limitation) keeps its credentials and sessions. The operations listed there return 403 `ACCOUNT_LIMITED`, and every other operation accepts the account as usual. No shared gate rejects a deleted or disabled account. Each operation that reads account state applies its own rule, and login, password, and email operations refuse a deleted account outright. diff --git a/fluxer_docs/src/content/docs/gateway/commands.md b/fluxer_docs/src/content/docs/gateway/commands.md index 1a7e87d36..4f844fa8a 100644 --- a/fluxer_docs/src/content/docs/gateway/commands.md +++ b/fluxer_docs/src/content/docs/gateway/commands.md @@ -242,7 +242,7 @@ Fluxer accepts a non-string `status`. Null and a Boolean publish the session as `offline` is normalised to `invisible`, so a Presence Update cannot publish a session as offline while it is connected. -`custom_status` is replaced only when the key is present. Omitting the key keeps the current custom status, `null` clears it, and a value that is neither an object nor null is ignored. An object the backend rejects, such as an `emoji_id` that names no emoji or an `expires_at` in the past, leaves the current custom status in place. The connection stays open. +`custom_status` is replaced only when the key is present. Omitting the key keeps the current custom status, `null` clears it, and a value that is neither an object nor null is ignored. An object the backend rejects, such as an `emoji_id` that names no emoji, an `expires_at` in the past, or any object from a [limited account](/http-api/users/#account-limitation), leaves the current custom status in place. The connection stays open. The published presence has a [custom status](#custom-status-object) object and no activities. diff --git a/fluxer_docs/src/content/docs/http-api/applications.mdx b/fluxer_docs/src/content/docs/http-api/applications.mdx index ef2dbbab3..46329c12b 100644 --- a/fluxer_docs/src/content/docs/http-api/applications.mdx +++ b/fluxer_docs/src/content/docs/http-api/applications.mdx @@ -10,7 +10,7 @@ An application is an OAuth2 client owned by one user account, and every bot acco ## Access rules -Every route except [Get public application](#get-public-application) requires a credential. A user-only route rejects a bot token and an OAuth2 bearer with 403 `ACCESS_DENIED`. Every route on this page accepts an account that has an outstanding [required action](/http-api/users/#required-actions). +Every route except [Get public application](#get-public-application) requires a credential. A user-only route rejects a bot token and an OAuth2 bearer with 403 `ACCESS_DENIED`. The sudo-gated routes read `X-Fluxer-Sudo-Mode-JWT`. A valid sudo token in that header, issued to the authenticated account, satisfies [sudo mode](/http-api/users/mfa/#sudo-mode) with no body proof. Fluxer returns the same token in the `X-Fluxer-Sudo-Mode-JWT` response header. Fluxer issues no token to an account holding neither a TOTP secret nor a registered WebAuthn credential, so that account proves sudo mode with `password` in the body. diff --git a/fluxer_docs/src/content/docs/http-api/authentication.mdx b/fluxer_docs/src/content/docs/http-api/authentication.mdx index 16582a008..10500b36e 100644 --- a/fluxer_docs/src/content/docs/http-api/authentication.mdx +++ b/fluxer_docs/src/content/docs/http-api/authentication.mdx @@ -10,13 +10,13 @@ The Authentication resource covers signing up, signing in, recovering an account ## Shared behaviour -[Authentication](/authentication/) and [HTTP authentication](/http-api/#authentication) define credential syntax and the credential namespaces. Changing the credentials of an account that is already signed in is covered by [Email and password changes](/http-api/users/email-and-password/), [Multi-factor authentication](/http-api/users/mfa/), and [Phone verification](/http-api/users/phone-verification/). +[Authentication](/authentication/) and [HTTP authentication](/http-api/#authentication) define credential syntax and the credential namespaces. Changing the credentials of an account that is already signed in is covered by [Email and password changes](/http-api/users/email-and-password/) and [Multi-factor authentication](/http-api/users/mfa/). :::caution[Authentication material is confidential and opaque] A client MUST treat every session token, one-use token, ticket, SSO state, and handoff code as confidential. It MUST NOT parse one, expose it to untrusted code, or write it to logs, analytics, or a URL the operation did not assign. ::: -Most operations need no `Authorization` credential, because the request has a one-use token, MFA ticket, WebAuthn assertion, or account credential of its own. [List authentication sessions](#list-authentication-sessions), [terminate authentication sessions](#terminate-authentication-sessions), [resend email verification](#resend-email-verification), [log out](#log-out), [complete desktop handoff](#complete-desktop-handoff), and [create origin handoff](#create-origin-handoff) are the only operations on this page that read an `Authorization` credential. Complete desktop handoff reads the header only when its body omits the `token` field. The first three and create origin handoff require an ordinary user session, and each rejects a bot token and an OAuth2 bearer token with 403 `ACCESS_DENIED`. All four still admit a session whose account is flagged for suspicious activity. +Most operations need no `Authorization` credential, because the request has a one-use token, MFA ticket, WebAuthn assertion, or account credential of its own. [List authentication sessions](#list-authentication-sessions), [terminate authentication sessions](#terminate-authentication-sessions), [resend email verification](#resend-email-verification), [log out](#log-out), [complete desktop handoff](#complete-desktop-handoff), and [create origin handoff](#create-origin-handoff) are the only operations on this page that read an `Authorization` credential. Complete desktop handoff reads the header only when its body omits the `token` field. The first three and create origin handoff require an ordinary user session, and each rejects a bot token and an OAuth2 bearer token with 403 `ACCESS_DENIED`. Every route has a route bucket and is also subject to the [global HTTP limit](/topics/rate-limits/). A route bucket is keyed by the authenticated user when the request has a resolvable credential and by the client IP address otherwise. Bucket or global denial returns 429 `RATE_LIMITED`. @@ -834,7 +834,7 @@ Success consumes the challenge, clears an expired temporary suspension, and crea Revokes the session identified by the user session token in the `Authorization` header. Returns 204 with no body. -The request has no body. The operation requires a credential that resolves to an account, and it admits one flagged for suspicious activity. An absent, malformed, or unknown token returns 401 `UNAUTHORIZED`. An OAuth2 bearer token returns 403 `ACCESS_DENIED`. A bot holds no session, so a bot token is accepted and revokes nothing. +The request has no body. The operation requires a credential that resolves to an account. An absent, malformed, or unknown token returns 401 `UNAUTHORIZED`. An OAuth2 bearer token returns 403 `ACCESS_DENIED`. A bot holds no session, so a bot token is accepted and revokes nothing. :::note[Logging out revokes exactly the calling session] The account's other sessions, its OAuth2 grants, and any outstanding MFA ticket, IP authorisation ticket, or desktop handoff all survive. Use [terminate authentication sessions](#terminate-authentication-sessions) to revoke other sessions. @@ -890,7 +890,7 @@ Fluxer never compares the account's address against the one the token was issued ### Side effects -The operation marks the current address verified, clears its bounced state, and clears every suspicious activity flag that verifying or reverifying an email address satisfies. It emits a [User Update](/gateway/events/#user-update) Gateway Dispatch to the account's own sessions. +The operation marks the current address verified and clears its bounced state. It emits a [User Update](/gateway/events/#user-update) Gateway Dispatch to the account's own sessions. ### Rate limit @@ -902,7 +902,7 @@ The operation marks the current address verified, clears its bounced state, and Issues and sends a new email verification token for the authenticated account. Requires a user session token for an ordinary user. Returns 204 with no body. -The request has no body. When the current address is already verified and no reverification suspicious activity flag is set, the operation returns 204 and sends nothing. +The request has no body. When the current address is already verified, the operation returns 204 and sends nothing. ### Response @@ -1592,7 +1592,7 @@ The sending origin encrypts the state and keeps the key. Fluxer never receives t | nonce_hash | string | The SHA-256 digest of the receiving origin's nonce, as 64 lowercase hex characters | | payload | string | The encrypted client state as base64url, 1 to 8388608 characters | -A bot token and an OAuth2 bearer token both return 403 `ACCESS_DENIED`. A session whose account is flagged for suspicious activity is admitted. +A bot token and an OAuth2 bearer token both return 403 `ACCESS_DENIED`. ### Response diff --git a/fluxer_docs/src/content/docs/http-api/channels.mdx b/fluxer_docs/src/content/docs/http-api/channels.mdx index 5f9d98af8..ac833e54a 100644 --- a/fluxer_docs/src/content/docs/http-api/channels.mdx +++ b/fluxer_docs/src/content/docs/http-api/channels.mdx @@ -654,6 +654,7 @@ Fluxer evaluates the target's admission policy in this order. | 400 | [error response](/http-api/#error-response) | The group is already full and the request returns `MAX_GROUP_DM_RECIPIENTS` | | 400 | [error response](/http-api/#error-response) | The channel is not a group direct message and the request returns `INVALID_CHANNEL_TYPE` | | 403 | [error response](/http-api/#error-response) | Caller is not a recipient, or the target's admission policy rejects the caller, each returning `MISSING_ACCESS` | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and the request returns `ACCOUNT_LIMITED` | | 404 | [error response](/http-api/#error-response) | Channel does not exist and the request returns `UNKNOWN_CHANNEL` | The `MAX_GROUP_DM_RECIPIENTS` body has `max_recipients`, the exact ceiling that was reached. That ceiling is the deployment's [`max_group_dm_recipients`](/http-api/instance/#limit-keys) limit resolved for the caller, and it defaults to 50. diff --git a/fluxer_docs/src/content/docs/http-api/connections.mdx b/fluxer_docs/src/content/docs/http-api/connections.mdx index 7f35ef91d..fe206013b 100644 --- a/fluxer_docs/src/content/docs/http-api/connections.mdx +++ b/fluxer_docs/src/content/docs/http-api/connections.mdx @@ -8,7 +8,7 @@ import RouteHeader from '@/components/RouteHeader.astro'; A connection links a Fluxer account to a verified domain or Bluesky account. Visible connections appear in `connected_accounts` on the [full user profile object](/http-api/users/#full-user-profile-object). -Connection routes require a user token. Bot tokens and OAuth2 bearers receive 403 `ACCESS_DENIED`, except that [List connections](#list-connections) accepts a bearer with the `connections` [scope](/http-api/oauth2/#oauth2-scopes). Accounts with an outstanding [required action](/http-api/users/#required-actions) receive 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. Connection IDs are not snowflakes. +Connection routes require a user token. Bot tokens and OAuth2 bearers receive 403 `ACCESS_DENIED`, except that [List connections](#list-connections) accepts a bearer with the `connections` [scope](/http-api/oauth2/#oauth2-scopes). Connection IDs are not snowflakes. [Bluesky client metadata](#get-bluesky-client-metadata) and [JWKS](#get-bluesky-jwks) are public and contain no account data. @@ -167,6 +167,7 @@ Only the `domain` type is accepted. A Bluesky connection is created through [Sta | --- | --- | --- | | 201 | [connection verification](#connection-verification-object) object | Verification was started | | 400 | [error response](/http-api/#error-response) | The requested type is bsky and the request returns `BLUESKY_OAUTH_NOT_ENABLED` | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and the request returns `ACCOUNT_LIMITED` | | 409 | [error response](/http-api/#error-response) | A connection of the same type already exists for that identifier, compared case-insensitively, and the request returns `CONNECTION_ALREADY_EXISTS` | ### Side effects @@ -201,6 +202,7 @@ Use the initiation token returned for this domain and account. The connection li | 201 | [connection](#connection-object) object | Proof succeeded and the connection was created | | 4001 | [error response](/http-api/#error-response) | The initiation token is not usable and the request returns `CONNECTION_INITIATION_TOKEN_INVALID` | | 403 | [error response](/http-api/#error-response) | The proof failed and the request returns `CONNECTION_VERIFICATION_FAILED` | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and the request returns `ACCOUNT_LIMITED` | | 409 | [error response](/http-api/#error-response) | The identifier is already linked (`CONNECTION_ALREADY_EXISTS`), or the connection list changed during the request (`CONFLICT`). Fetch the list before retrying | 1 Invalid, expired or wrong-account initiation tokens return the same code @@ -343,6 +345,7 @@ Starts or renews a Bluesky connection. Bluesky must be enabled on the instance. | --- | --- | --- | | 200 | [Bluesky authorisation](#bluesky-authorisation-object) object | Send the user to `authorize_url` | | 400 | [error response](/http-api/#error-response) | Unavailable (`BLUESKY_OAUTH_NOT_ENABLED`) or failed (`BLUESKY_OAUTH_AUTHORIZATION_FAILED`) | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and the request returns `ACCOUNT_LIMITED` | ### Completing the flow diff --git a/fluxer_docs/src/content/docs/http-api/discovery.mdx b/fluxer_docs/src/content/docs/http-api/discovery.mdx index d6365f899..3923c1ba9 100644 --- a/fluxer_docs/src/content/docs/http-api/discovery.mdx +++ b/fluxer_docs/src/content/docs/http-api/discovery.mdx @@ -297,7 +297,6 @@ The caller needs no permission and no relationship to the matched guilds. | 200 | [discovery search result](#discovery-search-result-object) object | Search completed, possibly with no match | | 400 | [error response](/http-api/#error-response) | Discovery is disabled for the instance and the request returns `DISCOVERY_DISABLED` | | 403 | [error response](/http-api/#error-response) | Caller presents a bearer credential or a revoked account and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | No search backend is configured for the instance and the request returns `FEATURE_TEMPORARILY_DISABLED` | ### Rate limit @@ -319,7 +318,7 @@ A client that wants a translated label supplies its own translation keyed on `id | Status | Body | Condition | | --- | --- | --- | | 200 | array[[discovery category](#discovery-category-object) object] | Categories were returned | -| 403 | [error response](/http-api/#error-response) | Caller presents a bearer credential or a revoked account and the request returns `ACCESS_DENIED`, or the account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | +| 403 | [error response](/http-api/#error-response) | Caller presents a bearer credential or a revoked account and the request returns `ACCESS_DENIED` | ### Rate limit @@ -353,7 +352,7 @@ A pending, rejected, removed, or absent application fails with 400 `DISCOVERY_NO | 400 | [error response](/http-api/#error-response) | The caller already holds the maximum number of guilds and the request returns `MAX_GUILDS` | | 400 | [error response](/http-api/#error-response) | The guild is full and the request returns `MAX_GUILD_MEMBERS` | | 403 | [error response](/http-api/#error-response) | Caller is a bot, presents a bearer credential, or holds a revoked account and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | +| 403 | [error response](/http-api/#error-response) | The account is limited and not already a member, and the request returns `ACCOUNT_LIMITED` | | 403 | [error response](/http-api/#error-response) | The guild has the invites-disabled feature and the request returns `INVITES_DISABLED` | | 403 | [error response](/http-api/#error-response) | The caller is banned from the guild directly or by address and the request returns `USER_BANNED_FROM_GUILD` or `USER_IP_BANNED_FROM_GUILD` | | 404 | [error response](/http-api/#error-response) | The approved application names a guild whose record no longer exists and the request returns `UNKNOWN_GUILD` | @@ -415,7 +414,6 @@ Its submission time is also its review time, it gains the discoverable feature, | 400 | [error response](/http-api/#error-response) | Discovery is disabled for the instance and the request returns `DISCOVERY_DISABLED`, or the guild has fewer members than the instance requires and the request returns `DISCOVERY_INSUFFICIENT_MEMBERS` | | 400 | [error response](/http-api/#error-response) | The caller cannot use [MANAGE_GUILD](/http-api/permissions/) because of the guild MFA level and the request returns `TWO_FACTOR_REQUIRED` | | 403 | [error response](/http-api/#error-response) | Caller presents a bearer credential or a revoked account and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | The guild is marked unavailable and the request returns `MISSING_ACCESS` | | 403 | [error response](/http-api/#error-response) | The description matches a content blocklist and the request returns `CONTENT_BLOCKED` | | 403 | [error response](/http-api/#error-response) | The caller lacks [MANAGE_GUILD](/http-api/permissions/) and the request returns `MISSING_PERMISSIONS` | @@ -471,7 +469,6 @@ Every field is optional, and an omitted field preserves the stored value. | 400 | [error response](/http-api/#error-response) | Discovery is disabled for the instance and the request returns `DISCOVERY_DISABLED` | | 400 | [error response](/http-api/#error-response) | The caller cannot use [MANAGE_GUILD](/http-api/permissions/) because of the guild MFA level and the request returns `TWO_FACTOR_REQUIRED` | | 403 | [error response](/http-api/#error-response) | Caller presents a bearer credential or a revoked account and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | The guild is marked unavailable and the request returns `MISSING_ACCESS` | | 403 | [error response](/http-api/#error-response) | The description matches a content blocklist and the request returns `CONTENT_BLOCKED` | | 403 | [error response](/http-api/#error-response) | The caller lacks [MANAGE_GUILD](/http-api/permissions/) and the request returns `MISSING_PERMISSIONS` | @@ -511,7 +508,6 @@ The stored review time, review reason, removal time, and removal reason are dele | 400 | [error response](/http-api/#error-response) | Discovery is disabled for the instance and the request returns `DISCOVERY_DISABLED` | | 400 | [error response](/http-api/#error-response) | The caller cannot use [MANAGE_GUILD](/http-api/permissions/) because of the guild MFA level and the request returns `TWO_FACTOR_REQUIRED` | | 403 | [error response](/http-api/#error-response) | Caller presents a bearer credential or a revoked account and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | The guild is marked unavailable and the request returns `MISSING_ACCESS` | | 403 | [error response](/http-api/#error-response) | The caller lacks [MANAGE_GUILD](/http-api/permissions/) and the request returns `MISSING_PERMISSIONS` | | 404 | [error response](/http-api/#error-response) | Guild does not exist and the request returns `UNKNOWN_GUILD` | @@ -546,7 +542,6 @@ The route answers even while discovery is disabled for the instance, reporting ` | 200 | [discovery status](#discovery-status-object) object | Status was returned | | 400 | [error response](/http-api/#error-response) | The caller cannot use [MANAGE_GUILD](/http-api/permissions/) because of the guild MFA level and the request returns `TWO_FACTOR_REQUIRED` | | 403 | [error response](/http-api/#error-response) | Caller presents a bearer credential or a revoked account and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | The guild is marked unavailable and the request returns `MISSING_ACCESS` | | 403 | [error response](/http-api/#error-response) | The caller lacks [MANAGE_GUILD](/http-api/permissions/) and the request returns `MISSING_PERMISSIONS` | | 404 | [error response](/http-api/#error-response) | Guild does not exist and the request returns `UNKNOWN_GUILD` | diff --git a/fluxer_docs/src/content/docs/http-api/entrance-sounds.mdx b/fluxer_docs/src/content/docs/http-api/entrance-sounds.mdx index 9db13eb7e..e48278507 100644 --- a/fluxer_docs/src/content/docs/http-api/entrance-sounds.mdx +++ b/fluxer_docs/src/content/docs/http-api/entrance-sounds.mdx @@ -202,6 +202,7 @@ The validation entry has no member naming which duration bound the clip crossed. | --- | --- | --- | | 201 | [entrance sound](#entrance-sound-object) object | Clip was stored | | 400 | [error response](/http-api/#error-response) | Name or audio fails [validation](#validation) | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and the request returns `ACCOUNT_LIMITED` | ### Side effects @@ -303,6 +304,7 @@ A `guild:{guild_id}` scope does not require current guild membership. A non-null | --- | --- | --- | | 204 | empty | Selection was written or cleared | | 400 | [error response](/http-api/#error-response) | Scope is unrecognised and the request returns `INVALID_FORMAT` at the `scope_id` path, or the account owns no such clip and the request returns `ENTRANCE_SOUND_NOT_FOUND` at the `sound_id` path | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and the request returns `ACCOUNT_LIMITED` | ### Side effects diff --git a/fluxer_docs/src/content/docs/http-api/errors.md b/fluxer_docs/src/content/docs/http-api/errors.md index d57c045f3..08cd15bcd 100644 --- a/fluxer_docs/src/content/docs/http-api/errors.md +++ b/fluxer_docs/src/content/docs/http-api/errors.md @@ -132,6 +132,10 @@ Several source messages append a further recovery sentence with a template value You don't have access to this resource or feature +### `ACCOUNT_LIMITED` + +Your account is limited + ### `ACCOUNT_SUSPENDED_PERMANENTLY` This account has been permanently suspended @@ -140,10 +144,6 @@ This account has been permanently suspended This account has been temporarily suspended -### `ACCOUNT_SUSPICIOUS_ACTIVITY` - -Your account is locked due to suspicious activity - ### `ACCOUNT_TOO_NEW_FOR_GUILD` Your account is too new to send messages in this community @@ -484,10 +484,6 @@ You don't have permission to create communities on this instance Email verification is required for this action -### `GUILD_PHONE_VERIFICATION_REQUIRED` - -You need to add a phone number to send messages in this community - ### `GUILD_TEMPLATE_INVALID` The community template data is invalid or malformed @@ -592,14 +588,6 @@ Permissions must be a valid integer Permissions must be non-negative -### `INVALID_PHONE_NUMBER` - -Invalid phone number - -### `INVALID_PHONE_VERIFICATION_CODE` - -Invalid phone verification code - ### `INVALID_REQUEST` Invalid request @@ -612,10 +600,6 @@ Invalid stream key format Invalid stream thumbnail payload -### `INVALID_SUSPICIOUS_FLAGS_FORMAT` - -Invalid suspicious flags format - ### `INVALID_SYSTEM_FLAG` Invalid system flag @@ -828,50 +812,6 @@ NSFW content is age restricted Passkey authentication failed -### `PHONE_ADD_NOT_ELIGIBLE` - -You are not eligible to add a phone number to your account - -### `PHONE_ALREADY_USED` - -Phone number is already in use - -### `PHONE_COUNTRY_NOT_SUPPORTED` - -We don't send verification texts to this country. Use a mobile number from another country, or email support@fluxer.app and a person will review your account - -### `PHONE_GATE_ESCAPE_UNAVAILABLE` - -This account cannot postpone the phone verification check - -### `PHONE_INBOUND_VERIFICATION_REQUIRED` - -This number is verified by texting us instead of us texting you. Start phone verification again to get the code and the number to text - -### `PHONE_LOOKUP_UNAVAILABLE` - -Our phone number check is down right now, so we stopped before sending your code. This is on us, not your number. Wait a few minutes and try the same number again - -### `PHONE_NUMBER_NOT_IN_SERVICE` - -Your carrier says this number isn't in service. Check the number and try again, or email support@fluxer.app if it's correct - -### `PHONE_NUMBER_NOT_MOBILE` - -This isn't a mobile number, so it can't receive our text. Use a mobile number, or email support@fluxer.app if you think that's wrong - -### `PHONE_RATE_LIMIT_EXCEEDED` - -Phone rate limit exceeded - -### `PHONE_VERIFICATION_NEEDS_REVIEW` - -We couldn't verify this number automatically. Email support@fluxer.app and a person will review your account - -### `PHONE_VERIFICATION_REQUIRED` - -Phone verification is required - ### `PREMIUM_PURCHASE_BLOCKED` No active subscription @@ -964,10 +904,6 @@ You cannot leave the community for this instance Slowmode rate limited -### `SMS_VERIFICATION_UNAVAILABLE` - -Service unavailable - ### `SSO_REQUIRED` Invalid request @@ -1208,10 +1144,6 @@ Unknown sticker Unknown store purchase -### `UNKNOWN_SUSPICIOUS_FLAG` - -Unknown suspicious flag - ### `UNKNOWN_USER` User wasn't found @@ -1945,10 +1877,6 @@ String length must be between {min} and {max} characters Password isn't set -### `PHONE_NUMBER_INVALID_FORMAT` - -Phone number must be in E.164 format (for example, +1234567890) - ### `PRECEDING_CHANNEL_MUST_SHARE_PARENT` Preceding channel must share the same parent as the moved channel diff --git a/fluxer_docs/src/content/docs/http-api/gifs.mdx b/fluxer_docs/src/content/docs/http-api/gifs.mdx index 84d2c8eb9..2644ebfc4 100644 --- a/fluxer_docs/src/content/docs/http-api/gifs.mdx +++ b/fluxer_docs/src/content/docs/http-api/gifs.mdx @@ -170,7 +170,6 @@ Fluxer does not stem, expand, or spell-correct the term. A term that matches not | 200 | array[[GIF](#gif-object) object] | Results were returned, possibly as an empty array | | 400 | [error response](/http-api/#error-response) | `q` is absent, empty, or longer than 256 characters, or `locale` is outside the registry, each returning `INVALID_FORM_BODY` | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | The instance has bound no provider key and the request returns `FEATURE_TEMPORARILY_DISABLED` | | 503 | [error response](/http-api/#error-response) | The provider failed, the request outlived its deadline, or the `gifs` service answered with a payload the API could not read, each returning `SERVICE_UNAVAILABLE` | @@ -210,7 +209,6 @@ Fluxer resolves the category list against the country `US` for every request, wh | 200 | response body | Featured GIFs and categories were returned | | 400 | [error response](/http-api/#error-response) | `locale` is outside the registry and the request returns `INVALID_FORM_BODY` | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | The instance has bound no provider key and the request returns `FEATURE_TEMPORARILY_DISABLED` | | 503 | [error response](/http-api/#error-response) | The provider failed, the request outlived its deadline, or the `gifs` service answered with a payload the API could not read, each returning `SERVICE_UNAVAILABLE` | @@ -239,7 +237,6 @@ Returns at most 50 trending [GIF objects](#gif-object) for the resolved locale a | 200 | array[[GIF](#gif-object) object] | Trending GIFs were returned, possibly as an empty array | | 400 | [error response](/http-api/#error-response) | `locale` is outside the registry and the request returns `INVALID_FORM_BODY` | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | The instance has bound no provider key and the request returns `FEATURE_TEMPORARILY_DISABLED` | | 503 | [error response](/http-api/#error-response) | The provider failed, the request outlived its deadline, or the `gifs` service answered with a payload the API could not read, each returning `SERVICE_UNAVAILABLE` | @@ -271,7 +268,6 @@ Suggestions depend on the locale and query, not the requesting address. | 200 | array[string] | Suggestions were returned, possibly as an empty array | | 400 | [error response](/http-api/#error-response) | `q` is absent, empty, or longer than 256 characters, or `locale` is outside the registry, each returning `INVALID_FORM_BODY` | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | The instance has bound no provider key and the request returns `FEATURE_TEMPORARILY_DISABLED` | | 503 | [error response](/http-api/#error-response) | The provider failed, the request outlived its deadline, or the `gifs` service answered with a payload the API could not read, each returning `SERVICE_UNAVAILABLE` | @@ -308,7 +304,6 @@ The deadline on this route is 3 seconds. | 204 | empty | The provider accepted the registration | | 400 | [error response](/http-api/#error-response) | `id` is absent, empty, or longer than 300 characters, `q` is longer than 256 characters, or `locale` is outside the registry, each returning `INVALID_FORM_BODY` | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | The instance has bound no provider key and the request returns `FEATURE_TEMPORARILY_DISABLED` | | 503 | [error response](/http-api/#error-response) | The provider rejected the registration, the `gifs` service did not answer within the deadline, or it answered with something other than an acknowledgement, each returning `SERVICE_UNAVAILABLE` | diff --git a/fluxer_docs/src/content/docs/http-api/guild-members.mdx b/fluxer_docs/src/content/docs/http-api/guild-members.mdx index 2a8d74bee..f45957fc0 100644 --- a/fluxer_docs/src/content/docs/http-api/guild-members.mdx +++ b/fluxer_docs/src/content/docs/http-api/guild-members.mdx @@ -271,6 +271,7 @@ The body is a [guild member update object](#guild-member-update-object) without | 403 | [error response](/http-api/#error-response) | Guild is unavailable, the caller is not a member, or the email address is unverified | | 403 | [error response](/http-api/#error-response) | Blocked content was supplied, the caller is timed out, or a required voice permission is absent | | 403 | [error response](/http-api/#error-response) | `communication_disabled_until` was supplied | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and the body changes a profile field, and the request returns `ACCOUNT_LIMITED` | | 404 | [error response](/http-api/#error-response) | Guild does not exist, or the membership record or account is absent | ### Side effects diff --git a/fluxer_docs/src/content/docs/http-api/guilds.mdx b/fluxer_docs/src/content/docs/http-api/guilds.mdx index 022d58688..6961cf747 100644 --- a/fluxer_docs/src/content/docs/http-api/guilds.mdx +++ b/fluxer_docs/src/content/docs/http-api/guilds.mdx @@ -283,14 +283,13 @@ A verification level gates member participation. Fluxer evaluates it when a memb | 0 | NONE | No verification requirement | | 1 | LOW1 | The account is claimed and its email address verified | | 2 | MEDIUM | The LOW requirement, and the account is at least 5 minutes old | -| 3 | HIGH2 | The MEDIUM requirement, and the membership is at least 10 minutes old | -| 4 | VERY_HIGH3 | The account has a verified phone number | +| 3 | HIGH2 3 | The MEDIUM requirement, and the membership is at least 10 minutes old | 1 A guild with `DISCOVERABLE` is evaluated at an effective minimum of LOW even when the stored value is NONE, and [Modify guild](#modify-guild) rejects lowering a discoverable guild below LOW with 400 `INVALID_FORM_BODY` and the field code `DISCOVERABLE_GUILD_VERIFICATION_LEVEL_TOO_LOW` 2 The membership age requirement is skipped when the join timestamp cannot be read, so the level behaves as MEDIUM -3 A verified phone number is the whole requirement at this level. A deployment whose [instance features](/http-api/instance/#instance-features-object) report `phone_verification_enabled` as false evaluates a stored VERY_HIGH as HIGH. [Modify guild](#modify-guild) then rejects a change to VERY_HIGH with 400 `INVALID_FORM_BODY` and the field code `VALUE_MUST_BE_INTEGER_IN_RANGE`, and a [guild template](#guild-creation-template-object) value is clamped to HIGH +3 A request value of 4 is stored as HIGH, and a [guild template](#guild-creation-template-object) value above HIGH is clamped to HIGH The guild owner, a bot, and any member holding at least one role bypass the check at every level. @@ -531,6 +530,7 @@ The creation response has no roles, channels, emojis, stickers, or member counts | 200 | [guild object](#guild-object) | Guild was created | | 4001 | [error response](/http-api/#error-response) | Body, image, template, bot or unclaimed credential, configured guild limit, or single community policy rejects creation | | 4032 | [error response](/http-api/#error-response) | Email address is unverified, or the name is blocked | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and the request returns `ACCOUNT_LIMITED` | 1 The [error code](/http-api/errors/) is `SINGLE_COMMUNITY_CANNOT_CREATE_GUILDS` while the single community policy is active, `BOTS_CANNOT_CREATE_GUILDS` for a bot credential, `UNCLAIMED_ACCOUNT_CANNOT_CREATE_GUILDS` for an unclaimed account, `MAX_GUILDS` at the configured guild limit, `GUILD_TEMPLATE_INVALID` for a rejected template, and `INVALID_FORM_BODY` otherwise @@ -674,7 +674,7 @@ Every field is optional. An omitted field preserves its current value, and a fie 5 The channel must exist in this guild and be a voice channel, and is otherwise rejected with `AFK_CHANNEL_MUST_BE_IN_GUILD` or `AFK_CHANNEL_MUST_BE_VOICE` -6 A guild with `DISCOVERABLE` cannot be lowered below LOW and is rejected with the field code `DISCOVERABLE_GUILD_VERIFICATION_LEVEL_TOO_LOW`. A change to VERY_HIGH is rejected with the field code `VALUE_MUST_BE_INTEGER_IN_RANGE` when phone verification is unavailable, as [Verification levels](#verification-levels) states +6 A guild with `DISCOVERABLE` cannot be lowered below LOW and is rejected with the field code `DISCOVERABLE_GUILD_VERIFICATION_LEVEL_TOO_LOW`. 7 Sending the value the guild already holds needs neither ownership nor sudo mode, and an owner without a configured second factor is rejected with the field code `MUST_ENABLE_2FA_BEFORE_REQUIRING_FOR_MODS` diff --git a/fluxer_docs/src/content/docs/http-api/index.md b/fluxer_docs/src/content/docs/http-api/index.md index 6c5d3f8b2..ecfd2f240 100644 --- a/fluxer_docs/src/content/docs/http-api/index.md +++ b/fluxer_docs/src/content/docs/http-api/index.md @@ -81,7 +81,7 @@ Those operations document their own JSON validation errors. [Authentication](/authentication/) defines the accepted `Authorization` schemes and links to the OAuth2 scope registry. Each operation states which credentials it accepts. The [sudo verification object](/http-api/users/mfa/#sudo-verification-object) defines the proof required for sensitive account operations. -An OAuth2 bearer access token is accepted only where a route opts in, and the resource page says so. Everywhere else a bearer credential is refused with 403 `ACCESS_DENIED`. An account with a suspicious activity flag is refused with 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. +An OAuth2 bearer access token is accepted only where a route opts in, and the resource page says so. Everywhere else a bearer credential is refused with 403 `ACCESS_DENIED`. ## Standard request headers @@ -274,7 +274,6 @@ Fluxer produces at most one entry for each distinct pair of `path` and `code`, s | [User settings Protobuf](/http-api/users/settings-protobuf/) | Every structured client preference message and enumeration | | [Email and password changes](/http-api/users/email-and-password/) | The ticketed credential replacement flows | | [Multi-factor authentication](/http-api/users/mfa/) | TOTP, backup codes, WebAuthn credentials, sudo verification | -| [Phone verification](/http-api/users/phone-verification/) | Outbound and inbound phone verification | | [Relationships](/http-api/users/relationships/) | Friend requests, friendships, blocks, relationship nicknames | | [User notes](/http-api/users/notes/) | Private notes attached to user IDs | | [Private channels](/http-api/users/private-channels/) | Direct message and group DM discovery, creation, preload, pin state | diff --git a/fluxer_docs/src/content/docs/http-api/instance.mdx b/fluxer_docs/src/content/docs/http-api/instance.mdx index bfd806f38..b4820c54e 100644 --- a/fluxer_docs/src/content/docs/http-api/instance.mdx +++ b/fluxer_docs/src/content/docs/http-api/instance.mdx @@ -138,7 +138,7 @@ Deployment-wide switches a client reads before it offers a feature, plus whether | self_hosted | boolean | Whether this deployment identifies itself as self-hosted | | presigned_attachment_uploads | boolean | Whether a client can request presigned attachment upload URLs | | emails_enabled1 | boolean | Whether the deployment sends email | -| phone_verification_enabled5 | boolean | Whether accounts can verify a phone number | +| phone_verification_enabled | boolean | Deprecated. Always false | 1 The value is true only when email is switched on and the transport is completely configured @@ -148,8 +148,6 @@ Deployment-wide switches a client reads before it offers a feature, plus whether 4 On a hosted deployment, true while billing is switched on and a Stripe secret key is set. A self-hosted deployment reports true while a Stripe secret key is set and `premium_enabled` is true, even after billing is switched off -5 Defaults to true on a hosted deployment and false on a self-hosted one. While it is false, the `VERY_HIGH` [verification level](/http-api/guilds/#verification-levels) is evaluated as `HIGH` - A deployment that reports `emails_enabled` as false sends no verification, password recovery, or IP authorisation message, and the flows that depend on one are unusable there. [Deployment availability](/http-api/deployment-availability/) states which routes a self-hosted deployment does not serve at all. ## GIF provider object diff --git a/fluxer_docs/src/content/docs/http-api/invites.mdx b/fluxer_docs/src/content/docs/http-api/invites.mdx index 419c069c9..5a9500296 100644 --- a/fluxer_docs/src/content/docs/http-api/invites.mdx +++ b/fluxer_docs/src/content/docs/http-api/invites.mdx @@ -220,6 +220,7 @@ Accepting an exhausted invite returns 404 `UNKNOWN_INVITE` and makes the code st | 403 | [error response](/http-api/#error-response) | Instant invites are temporarily disabled for the guild and the request returns `FEATURE_TEMPORARILY_DISABLED` | | 403 | [error response](/http-api/#error-response) | The caller is banned by account or email address and the request returns `USER_BANNED_FROM_GUILD` | | 403 | [error response](/http-api/#error-response) | The caller is banned by network address and the request returns `USER_IP_BANNED_FROM_GUILD` | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and not already a member or recipient, and the request returns `ACCOUNT_LIMITED` | | 404 | [error response](/http-api/#error-response) | The named guild no longer exists and the request returns `UNKNOWN_GUILD` | | 404 | [error response](/http-api/#error-response) | The target channel no longer exists and the request returns `UNKNOWN_CHANNEL` | | 404 | [error response](/http-api/#error-response) | The code resolves to no record, the record is exhausted, a guild invite names no guild, or a group direct message invite names no channel or a channel that no longer exists, each returning `UNKNOWN_INVITE` | diff --git a/fluxer_docs/src/content/docs/http-api/memes.mdx b/fluxer_docs/src/content/docs/http-api/memes.mdx index 0813c7512..34e1b267a 100644 --- a/fluxer_docs/src/content/docs/http-api/memes.mdx +++ b/fluxer_docs/src/content/docs/http-api/memes.mdx @@ -171,7 +171,6 @@ The account's [collection limit](#collection-limits) bounds how many entries the | --- | --- | --- | | 200 | array[[meme](#meme-object) object] | Collection was returned, possibly as an empty array | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | ### Rate limit @@ -216,7 +215,6 @@ A URL that resolves to no usable media fails with 400 `MEDIA_METADATA_ERROR`. Sa | 400 | [error response](/http-api/#error-response) | The URL resolves to no usable media with `MEDIA_METADATA_ERROR` | | 400 | [error response](/http-api/#error-response) | The collection is at its limit with `MAX_FAVORITE_MEMES` | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | 5 Including `MAX_FAVORITE_MEME_TAGS_EXCEEDED` at the `tags` path and `MEDIA_ALREADY_IN_FAVORITE_MEMES` at the `media` path @@ -274,7 +272,6 @@ An embed selection uses its image, video, or thumbnail, in that order. Media who | 400 | [error response](/http-api/#error-response) | External media metadata cannot be resolved with `MEDIA_METADATA_ERROR` | | 400 | [error response](/http-api/#error-response) | The collection is at its limit with `MAX_FAVORITE_MEMES` | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | The caller is not a member of the guild or lacks `VIEW_CHANNEL` and the request returns `MISSING_PERMISSIONS` | | 403 | [error response](/http-api/#error-response) | The channel requires age verification the account has not completed and the request returns `NSFW_CONTENT_AGE_RESTRICTED` | | 404 | [error response](/http-api/#error-response) | Channel is unavailable or the caller is not a recipient of it with `UNKNOWN_CHANNEL` | @@ -314,7 +311,6 @@ Returns one [meme object](#meme-object) owned by the current account. | --- | --- | --- | | 200 | [meme](#meme-object) object | Meme was returned | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 404 | [error response](/http-api/#error-response) | Meme is unknown or belongs to another account with `UNKNOWN_FAVORITE_MEME` | ### Rate limit @@ -358,7 +354,6 @@ Fluxer checks the tag allowance against the resulting list, so a request omittin | 200 | [meme](#meme-object) object | Meme was updated | | 400 | [error response](/http-api/#error-response) | Path, name, alt text, or tag length fails validation with `INVALID_FORM_BODY`3 | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 404 | [error response](/http-api/#error-response) | Meme is unknown or belongs to another account with `UNKNOWN_FAVORITE_MEME` | 3 Including `MAX_FAVORITE_MEME_TAGS_EXCEEDED` at the `tags` path @@ -395,7 +390,6 @@ Every meme owns its stored bytes, so deletion removes them permanently. The meme | --- | --- | --- | | 204 | empty | Meme was deleted, or no owned meme existed | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | ### Side effects @@ -447,7 +441,6 @@ An unresolved URL still returns an entry with its signed proxy URL and an empty | --- | --- | --- | | 200 | response body | One entry was returned for each URL, including URLs that did not resolve | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | ### Rate limit diff --git a/fluxer_docs/src/content/docs/http-api/messages.mdx b/fluxer_docs/src/content/docs/http-api/messages.mdx index 231f67485..77ba6c73f 100644 --- a/fluxer_docs/src/content/docs/http-api/messages.mdx +++ b/fluxer_docs/src/content/docs/http-api/messages.mdx @@ -1125,7 +1125,6 @@ Signs from 1 through 50 attachment URLs again. Returns one [refreshed attachment | 400 | [error response](/http-api/#error-response) | Body, URL count, or a URL length is invalid and the request returns `INVALID_FORM_BODY` | | 401 | [error response](/http-api/#error-response) | The credential is missing or invalid and the request returns `UNAUTHORIZED` | | 403 | [error response](/http-api/#error-response) | Caller presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | :::caution[A refreshed URL is not an access check] Anyone who can authenticate can sign any attachment URL of the instance whose path they know. A signature limits how long a copied URL works. It does not decide who can read the file. @@ -1278,6 +1277,7 @@ The resolved `max_voice_message_duration` limit defaults to 1200 seconds. | 403 | [error response](/http-api/#error-response) | Is age restricted from the channel and the request returns `NSFW_CONTENT_AGE_RESTRICTED` | | 403 | [error response](/http-api/#error-response) | Message sending is temporarily disabled for the guild and the request returns `FEATURE_TEMPORARILY_DISABLED` | | 403 | [error response](/http-api/#error-response) | A limited caller messages an account that has not written in the direct message and the request returns `NEW_CONVERSATIONS_LIMITED` | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation), the channel is not its personal notes channel, and the request returns `ACCOUNT_LIMITED` | | 404 | [error response](/http-api/#error-response) | Channel, referenced message, sticker, or guild does not exist or is unavailable, or the supplied nonce was last used in a different channel and the request returns `UNKNOWN_MESSAGE` | :::caution[Slowmode denials are 400, not 429] @@ -1368,6 +1368,7 @@ An `id` that names no attachment on the message is skipped, and the edit still s | 403 | [error response](/http-api/#error-response) | The caller is age restricted from the channel and the request returns `NSFW_CONTENT_AGE_RESTRICTED` | | 403 | [error response](/http-api/#error-response) | Message sending is temporarily disabled for the guild and the request returns `FEATURE_TEMPORARILY_DISABLED` | | 403 | [error response](/http-api/#error-response) | A limited author edits a direct message the other account has not written in and the request returns `NEW_CONVERSATIONS_LIMITED` | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation), the channel is not its personal notes channel, and the request returns `ACCOUNT_LIMITED` | | 404 | [error response](/http-api/#error-response) | Channel or message does not exist | | 429 | [error response](/http-api/#error-response) | The published message edit allowance is used up, returning `PUBLISHED_MESSAGE_EDIT_RATE_LIMITED` | @@ -1422,6 +1423,7 @@ Each announcement channel can publish 10 messages in a row, then one every 6 min | 403 | [error response](/http-api/#error-response) | The author is timed out, returning `COMMUNICATION_DISABLED` | | 403 | [error response](/http-api/#error-response) | The message matches an instance blocklist, returning `CONTENT_BLOCKED` | | 4031 | [error response](/http-api/#error-response) | Publishing is disabled for the guild, returning `FEATURE_TEMPORARILY_DISABLED` | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and the request returns `ACCOUNT_LIMITED` | | 404 | [error response](/http-api/#error-response) | Channel or message does not exist, or is older than the caller's history cutoff | | 4292 | [error response](/http-api/#error-response) | The channel publish allowance is used up | | 429 | [error response](/http-api/#error-response) | A concurrent change holds the message, returning `RESOURCE_LOCKED` | @@ -1521,7 +1523,7 @@ Deletes the authenticated identity's read state entry for one channel. Returns 2 | Status | Body | Condition | | --- | --- | --- | | 204 | empty | Read state was absent or deleted | -| 403 | [error response](/http-api/#error-response) | Credential type or account state denies the request and it returns `ACCESS_DENIED` or `ACCOUNT_SUSPICIOUS_ACTIVITY` | +| 403 | [error response](/http-api/#error-response) | Credential type denies the request and it returns `ACCESS_DENIED` | ### Side effects @@ -1709,7 +1711,7 @@ Deletion has no age boundary and no confirmation step, and there is no restore o | Status | Body | Condition | | --- | --- | --- | | 200 | response body | Every personal note was deleted | -| 403 | [error response](/http-api/#error-response) | Credential type or account state denies the request and it returns `ACCESS_DENIED` or `ACCOUNT_SUSPICIOUS_ACTIVITY` | +| 403 | [error response](/http-api/#error-response) | Credential type denies the request and it returns `ACCESS_DENIED` | | 404 | [error response](/http-api/#error-response) | Channel does not exist or the caller cannot resolve it | ### Side effects @@ -1943,7 +1945,7 @@ A channel the caller cannot see is acknowledged like any other whenever it store | Status | Body | Condition | | --- | --- | --- | | 204 | empty | Pin state was absent or acknowledged | -| 403 | [error response](/http-api/#error-response) | Credential type or account state denies the request and it returns `ACCESS_DENIED` or `ACCOUNT_SUSPICIOUS_ACTIVITY` | +| 403 | [error response](/http-api/#error-response) | Credential type denies the request and it returns `ACCESS_DENIED` | ### Side effects @@ -2102,6 +2104,7 @@ Adds the authenticated identity's reaction. Returns 204 with an empty body. Emit | 403 | [error response](/http-api/#error-response) | The caller has an unverified email and the request returns `REACTION_EMAIL_VERIFICATION_REQUIRED` | | 403 | [error response](/http-api/#error-response) | The caller is under a new conversation limit in a direct message the recipient has not written in, and the request returns `NEW_CONVERSATIONS_LIMITED` | | 403 | [error response](/http-api/#error-response) | Reactions are temporarily disabled for the guild and the request returns `FEATURE_TEMPORARILY_DISABLED` | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and the request returns `ACCOUNT_LIMITED` | | 404 | [error response](/http-api/#error-response) | Channel or message does not exist, or the message is outside the caller's message history cutoff | ### Side effects diff --git a/fluxer_docs/src/content/docs/http-api/oauth2.mdx b/fluxer_docs/src/content/docs/http-api/oauth2.mdx index 9b9f76173..40b09527b 100644 --- a/fluxer_docs/src/content/docs/http-api/oauth2.mdx +++ b/fluxer_docs/src/content/docs/http-api/oauth2.mdx @@ -22,7 +22,7 @@ An authorisation code expires 10 minutes after it is issued, an access token aft ## Route authentication -Every route on this page that authenticates a user is user-only unless the operation says otherwise. Fluxer rejects a bot token and an OAuth2 bearer with 403 `ACCESS_DENIED`, and accepts an account with an outstanding required action. The token, introspection, and revocation routes authenticate the client application instead, so their [rate limit](/topics/rate-limits/) is keyed by client IP address. +Every route on this page that authenticates a user is user-only unless the operation says otherwise. Fluxer rejects a bot token and an OAuth2 bearer with 403 `ACCESS_DENIED`. The token, introspection, and revocation routes authenticate the client application instead, so their [rate limit](/topics/rate-limits/) is keyed by client IP address. ## OAuth2 string normalisation diff --git a/fluxer_docs/src/content/docs/http-api/read-states.mdx b/fluxer_docs/src/content/docs/http-api/read-states.mdx index 5cb92bda7..d351e28be 100644 --- a/fluxer_docs/src/content/docs/http-api/read-states.mdx +++ b/fluxer_docs/src/content/docs/http-api/read-states.mdx @@ -131,7 +131,7 @@ When any entry is manual or has a positive mention count, entries for the same c | Status | Body | Condition | | --- | --- | --- | | 200 | response body | Acknowledgements were processed and the resulting entries returned | -| 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED`, or the account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | +| 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | ### Side effects @@ -168,7 +168,7 @@ Every entry advances its channel watermark monotonically and sets the channel's | Status | Body | Condition | | --- | --- | --- | | 204 | empty | Acknowledgements were processed | -| 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED`, or the account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | +| 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | ### Side effects diff --git a/fluxer_docs/src/content/docs/http-api/reports.mdx b/fluxer_docs/src/content/docs/http-api/reports.mdx index 3a2a2f1a6..2f5add3f8 100644 --- a/fluxer_docs/src/content/docs/http-api/reports.mdx +++ b/fluxer_docs/src/content/docs/http-api/reports.mdx @@ -236,7 +236,6 @@ A reporter without `READ_MESSAGE_HISTORY` can report only a message at or after | 400 | [error response](/http-api/#error-response) | The account is unclaimed and the request returns `UNCLAIMED_ACCOUNT_CANNOT_SUBMIT_REPORTS`, or the reporter is the message author and the request returns `CANNOT_REPORT_OWN_MESSAGE` | | 403 | [error response](/http-api/#error-response) | A body string is blocked and the request returns `CONTENT_BLOCKED` | | 403 | [error response](/http-api/#error-response) | The credential is a bot token or OAuth2 bearer and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | Its email is unverified and the request returns `REPORT_EMAIL_VERIFICATION_REQUIRED` | | 403 | [error response](/http-api/#error-response) | The account is report banned and the request returns `REPORT_BANNED` | | 403 | [error response](/http-api/#error-response) | The reporter is not a guild member or lacks `VIEW_CHANNEL` and the request returns `MISSING_PERMISSIONS` | @@ -293,7 +292,6 @@ Creates and returns a [report object](#report-object) for another user, optional | 400 | [error response](/http-api/#error-response) | The account is unclaimed and the request returns `UNCLAIMED_ACCOUNT_CANNOT_SUBMIT_REPORTS`, or the reporter is the reported user and the request returns `CANNOT_REPORT_YOURSELF` | | 403 | [error response](/http-api/#error-response) | A body string is blocked and the request returns `CONTENT_BLOCKED` | | 403 | [error response](/http-api/#error-response) | The credential is a bot token or OAuth2 bearer and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | Its email is unverified and the request returns `REPORT_EMAIL_VERIFICATION_REQUIRED` | | 403 | [error response](/http-api/#error-response) | The account is report banned and the request returns `REPORT_BANNED` | | 404 | [error response](/http-api/#error-response) | The reported user does not exist and the request returns `UNKNOWN_USER` | @@ -348,7 +346,6 @@ This route reads the bare code and accepts no invite URL. A code that resolves t | 400 | [error response](/http-api/#error-response) | The account is unclaimed and the request returns `UNCLAIMED_ACCOUNT_CANNOT_SUBMIT_REPORTS`, or the reporter owns the guild and the request returns `CANNOT_REPORT_OWN_GUILD` | | 403 | [error response](/http-api/#error-response) | A body string is blocked and the request returns `CONTENT_BLOCKED` | | 403 | [error response](/http-api/#error-response) | The credential is a bot token or OAuth2 bearer and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | Its email is unverified and the request returns `REPORT_EMAIL_VERIFICATION_REQUIRED` | | 403 | [error response](/http-api/#error-response) | The account is report banned and the request returns `REPORT_BANNED` | | 403 | [error response](/http-api/#error-response) | Access to the guild cannot be established and the request returns `CANNOT_REPORT_GUILD` | diff --git a/fluxer_docs/src/content/docs/http-api/search.mdx b/fluxer_docs/src/content/docs/http-api/search.mdx index bf2911385..c370cbe58 100644 --- a/fluxer_docs/src/content/docs/http-api/search.mdx +++ b/fluxer_docs/src/content/docs/http-api/search.mdx @@ -277,7 +277,6 @@ Content moderation scans every string in the body whose field name does not end | 200 | [message search result](#message-search-result-object) object \| [search indexing](#search-indexing-object) object | Search completed, or an index it needed is not queryable yet | | 400 | [error response](/http-api/#error-response) | A bot supplied a scope other than `current`, the `current` scope has no context, or a requested channel does not belong to the context guild, each returning `INVALID_FORM_BODY` | | 403 | [error response](/http-api/#error-response) | Caller presents an OAuth2 bearer credential, or the guild of the context channel cannot be resolved while a stored guild record still exists, each returning `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | A body string is blocked by content moderation and the request returns `CONTENT_BLOCKED` | | 403 | [error response](/http-api/#error-response) | No search backend is configured for the instance and the request returns `FEATURE_TEMPORARILY_DISABLED` | | 403 | [error response](/http-api/#error-response) | A requested channel is outside the resolved scope, the caller is not a member of the context guild, or the caller cannot view the context channel, each returning `MISSING_PERMISSIONS` | diff --git a/fluxer_docs/src/content/docs/http-api/themes.mdx b/fluxer_docs/src/content/docs/http-api/themes.mdx index 1bfe8e092..e46fafea2 100644 --- a/fluxer_docs/src/content/docs/http-api/themes.mdx +++ b/fluxer_docs/src/content/docs/http-api/themes.mdx @@ -86,7 +86,6 @@ The object has the identifier and nothing else. | 201 | response body | Document was stored | | 400 | [error response](/http-api/#error-response) | The encoded document exceeds the size ceiling and the request returns `FILE_SIZE_TOO_LARGE` | | 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | | 403 | [error response](/http-api/#error-response) | The document is blocked by content moderation and the request returns `CONTENT_BLOCKED` | ### Side effects diff --git a/fluxer_docs/src/content/docs/http-api/unfurl.mdx b/fluxer_docs/src/content/docs/http-api/unfurl.mdx index b65570329..8880cda7d 100644 --- a/fluxer_docs/src/content/docs/http-api/unfurl.mdx +++ b/fluxer_docs/src/content/docs/http-api/unfurl.mdx @@ -97,7 +97,7 @@ It resolves precisely the URL in the request body and returns the complete resol | Status | Body | Condition | | --- | --- | --- | | 200 | array[[embed](/http-api/messages/#embed-object) object] | Resolution completed, possibly with no embed | -| 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED`, or the account has an outstanding required action and the request returns `ACCOUNT_SUSPICIOUS_ACTIVITY` | +| 403 | [error response](/http-api/#error-response) | Caller is a bot or presents a bearer credential and the request returns `ACCESS_DENIED` | | 502 | [error response](/http-api/#error-response) | The resolution service reports a failure, or answers with a payload the API cannot read, and the request returns `BAD_GATEWAY` | | 503 | [error response](/http-api/#error-response) | No resolution service is answering, or the service rejects the request at its concurrency limit, and the request returns `SERVICE_UNAVAILABLE` | | 504 | [error response](/http-api/#error-response) | The resolution service does not answer within its 12-second deadline and the request returns `GATEWAY_TIMEOUT` | diff --git a/fluxer_docs/src/content/docs/http-api/users.mdx b/fluxer_docs/src/content/docs/http-api/users.mdx index 1bed78fbe..c9a099b84 100644 --- a/fluxer_docs/src/content/docs/http-api/users.mdx +++ b/fluxer_docs/src/content/docs/http-api/users.mdx @@ -108,26 +108,26 @@ The private representation of the current account, returned by [Get current user | traits3 4 | array[string] | The account traits, in sorted order | | email5 | ?string | The account email address, or null when none exists | | email_bounced?3 | boolean | Whether the mail provider marked the current email as bounced | -| phone6 | ?string | Always null | -| has_verified_phone | boolean | Whether phone verification is complete | +| has_verified_phone | boolean | Deprecated. Always false | | bio | ?string | The profile biography, or null when none is set | | pronouns | ?string | The profile pronouns, or null when none are set | | accent_color | ?integer | The profile accent colour as packed 24-bit RGB, or null when none is set | -| timezone?7 | ?string | The IANA timezone identifier stored for the account, or null when none is set | -| timezone_privacy_flags?7 | integer | [Profile field privacy flags](#profile-field-privacy-flags) applied to the profile timezone | -| banner8 | ?string | The image hash of the profile banner, or null when none is set or the entitlement is missing | +| timezone?6 | ?string | The IANA timezone identifier stored for the account, or null when none is set | +| timezone_privacy_flags?6 | integer | [Profile field privacy flags](#profile-field-privacy-flags) applied to the profile timezone | +| banner7 | ?string | The image hash of the profile banner, or null when none is set or the entitlement is missing | | banner_color | ?integer | The packed 24-bit RGB colour derived from the stored banner, or null | -| mfa_enabled3 9 | boolean | Whether any authenticator is configured | -| authenticator_types?3 9 | array[integer] | [Authenticator types](#authenticator-types) configured for the account | +| mfa_enabled3 8 | boolean | Whether any authenticator is configured | +| authenticator_types?3 8 | array[integer] | [Authenticator types](#authenticator-types) configured for the account | | verified5 | boolean | Whether the account email is verified | -| premium_type10 | ?integer | [Premium type](#premium-types) | -| premium_since3 10 | ?ISO8601 timestamp | The time premium was first activated, or null | -| premium_until3 11 | ?ISO8601 timestamp | The end of current premium access, or null when no premium period is stored | +| account_limited? | boolean | Whether the account is [limited](#account-limitation) | +| premium_type9 | ?integer | [Premium type](#premium-types) | +| premium_since3 9 | ?ISO8601 timestamp | The time premium was first activated, or null | +| premium_until3 10 | ?ISO8601 timestamp | The end of current premium access, or null when no premium period is stored | | premium_will_cancel3 | boolean | Whether subscription premium will cancel at the billing boundary | | premium_billing_cycle3 | ?string | The premium billing cycle, or null | | premium_lifetime_sequence3 | ?integer | The lifetime premium sequence, or null | -| premium_grace_ends_at12 | ?ISO8601 timestamp | The end of grace access after premium_until passes, or null when no grace is recorded | -| premium_discriminator13 | boolean | Whether the current discriminator was selected under a premium entitlement | +| premium_grace_ends_at11 | ?ISO8601 timestamp | The end of grace access after premium_until passes, or null when no grace is recorded | +| premium_discriminator12 | boolean | Whether the current discriminator was selected under a premium entitlement | | premium_badge_hidden3 | boolean | Whether the premium badge is hidden from the public profile | | premium_badge_masked3 | boolean | Whether a lifetime badge is presented as an ordinary subscription badge | | premium_badge_timestamp_hidden3 | boolean | Whether the premium activation time is hidden from the public profile | @@ -135,15 +135,14 @@ The private representation of the current account, returned by [Get current user | premium_purchase_disabled3 | boolean | Whether premium purchasing is disabled for the account | | premium_enabled_override3 | boolean | Whether an administrative override grants premium entitlements | | premium_perks_disabled3 | boolean | Whether premium entitlements are suspended for the account | -| force_inbound_phone_verification?14 | boolean | The debugging switch that forces the inbound phone verification flow | | password_last_changed_at3 | ?ISO8601 timestamp | The time of the most recent password change, or null | -| last_voice_activity_sharing_change_at15 | ?ISO8601 timestamp | The time of the most recent bulk voice activity sharing change, or null | -| required_actions3 16 | array[string] | The ordered [required actions](#required-actions) the account must complete before unrestricted use | -| nsfw_allowed3 17 | boolean | Whether the account can access age-restricted content | -| has_dismissed_premium_onboarding3 18 | boolean | Whether premium onboarding was dismissed | +| last_voice_activity_sharing_change_at13 | ?ISO8601 timestamp | The time of the most recent bulk voice activity sharing change, or null | +| required_actions3 | array[string] | Deprecated. Always empty | +| nsfw_allowed3 14 | boolean | Whether the account can access age-restricted content | +| has_dismissed_premium_onboarding3 15 | boolean | Whether premium onboarding was dismissed | | has_ever_purchased3 | boolean | Whether the account has completed a purchase | -| has_unread_gift_inventory3 19 | boolean | Whether the gift inventory has unread items | -| unread_gift_inventory_count3 19 | integer | The number of unread gift inventory items | +| has_unread_gift_inventory3 16 | boolean | Whether the gift inventory has unread items | +| unread_gift_inventory_count3 16 | integer | The number of unread gift inventory items | | pending_bulk_message_deletion3 | ?[pending bulk message deletion](#pending-bulk-message-deletion-object) object | The message deletion the account scheduled for itself, or null when none is pending | | age_verified_adult? | boolean | Whether adult age verification is complete, omitted when false | | terms_agreed_at | ?ISO8601 timestamp | The time of the most recent terms acceptance, or null | @@ -159,46 +158,32 @@ The private representation of the current account, returned by [Get current user 5 For an OAuth2 bearer credential without the `email` [scope](/http-api/oauth2/#oauth2-scopes), `email` is `null` -6 Always null +6 This server version writes the pair for every account -7 This server version writes the pair for every account +7 The banner hash is not returned at all while the account lacks the animated banner entitlement, which every profile banner requires -8 The banner hash is not returned at all while the account lacks the animated banner entitlement, which every profile banner requires +8 `mfa_enabled` is true exactly when at least one authenticator is configured. An account with no authenticator reports `authenticator_types` as an empty array, and only a bearer read drops the field -9 `mfa_enabled` is true exactly when at least one authenticator is configured. An account with no authenticator reports `authenticator_types` as an empty array, and only a bearer read drops the field +9 The value is forced to `0` and `premium_since` is forced to `null` while premium entitlements are not active -10 The value is forced to `0` and `premium_since` is forced to `null` while premium entitlements are not active +10 `premium_until` is the later of the subscription end and any stacked gift extension. Fluxer reports it even when premium entitlements are no longer active -11 `premium_until` is the later of the subscription end and any stacked gift extension. Fluxer reports it even when premium entitlements are no longer active +11 After `premium_until` passes, premium entitlements stay active until this time. While the value is null, they stay active for 3 days after `premium_until` -12 After `premium_until` passes, premium entitlements stay active until this time. While the value is null, they stay active for 3 days after `premium_until` +12 The flag is set when the account changes its username or discriminator while holding non-lifetime premium, and after that premium access ends, Fluxer replaces the discriminator with a newly generated one the next time the account starts a Gateway session -13 The flag is set when the account changes its username or discriminator while holding non-lifetime premium, and after that premium access ends, Fluxer replaces the discriminator with a newly generated one the next time the account starts a Gateway session +13 The value drives the 24-hour cooldown on changing the default voice activity sharing state -14 The field is declared but never populated, so it is absent from every response +14 A bot account is always permitted, and a user account is permitted only when its recorded date of birth places it at 18 years or older -15 The value drives the 24-hour cooldown on changing the default voice activity sharing state +15 The value is false while premium entitlements are not active, even when a dismissal was recorded earlier -16 The array is empty when the account has no stored suspicious activity flag, when it has no email address, or when its email address is on an exempt domain - -17 A bot account is always permitted, and a user account is permitted only when its recorded date of birth places it at 18 years or older - -18 The value is false while premium entitlements are not active, even when a dismissal was recorded earlier - -19 Reports whether unread gifts exist and how many. An account with no gifts reports `false` and `0` +16 Reports whether unread gifts exist and how many. An account with no gifts reports `false` and `0` :::note[A bearer read returns zero values] `acls`, `traits`, and `required_actions` become empty arrays. `email_bounced` and `authenticator_types` are dropped. Every field marked 3 above that is a boolean becomes `false`, every timestamp or nullable field becomes `null`, and `unread_gift_inventory_count` becomes `0`. ::: -:::caution[An outstanding required action blocks ordinary routes] -While `required_actions` is non-empty, every route that requires a signed-in account, except the recovery routes below, returns 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. The error body's `data` member has `suspicious_activity_flags`, with one bit set for each entry in `required_actions`. -::: - -Recovery routes stay open to a restricted account. They are [Get current user](/http-api/users/current-user/#get-current-user), [Modify current user](/http-api/users/current-user/#modify-current-user), [Get current user settings](/http-api/users/settings/#get-current-user-settings), every [email change](/http-api/users/email-and-password/) and [phone verification](/http-api/users/phone-verification/) route, [Resend email verification](/http-api/authentication/#resend-email-verification), session listing and termination, and the OAuth2 routes. - -A requirement disappears from the list as soon as it is met. An Admin operation applies no suspicious activity gate. - ## Pending bulk message deletion object A scheduled deletion of every message the account has sent. The field is this object only while the deletion requested through [Request bulk message deletion](/http-api/users/content/#request-bulk-message-deletion) is still waiting to run. @@ -232,23 +217,21 @@ The value `1` is unassigned. Any stored authenticator value outside this registr | 1 | SUBSCRIPTION | Active premium subscription | | 2 | LIFETIME | Lifetime premium subscription | -## Required actions +## Account limitation -Each entry is an exact string in the `required_actions` array of the [user object](#user-object), ordered by the registry order below. Fluxer removes a requirement the account already satisfies, and removes a requirement implied by a stricter retained one. +An account is limited while its [user object](#user-object) reports `account_limited` as true. A limited account can still read, join voice, change its own settings, and manage its sessions. The operations below return 403 [`ACCOUNT_LIMITED`](/http-api/errors/), and the error message tells the user to check their email. -| Value | Description | -| --- | --- | -| REQUIRE_VERIFIED_EMAIL | The account needs a verified email address | -| REQUIRE_REVERIFIED_EMAIL | The account needs to verify its email address again | -| REQUIRE_VERIFIED_PHONE | The account needs a verified phone number | -| REQUIRE_REVERIFIED_PHONE | The account needs to verify its phone number again | -| REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE | The account needs either a verified email address or a verified phone number | -| REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE | The account needs to verify its email address again or hold a verified phone number | -| REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE | The account needs a verified email address or needs to verify its phone number again | -| REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE | The account needs to verify either its email address or its phone number again | -| REQUIRE_INBOUND_PHONE_VERIFICATION1 | The account needs to complete phone verification by sending an SMS to the instance's inbound number | - -1 The entry appears only while a phone requirement is also outstanding. A stored inbound requirement with no other phone requirement adds `REQUIRE_VERIFIED_PHONE` to the array +- [Create message](/http-api/messages/#create-message) and [Modify message](/http-api/messages/#modify-message) in any channel except the account's personal notes +- [Crosspost message](/http-api/messages/#crosspost-message) +- [Add own reaction](/http-api/messages/#add-own-reaction) +- [Create webhook](/http-api/webhooks/#create-webhook) +- [Accept invite](/http-api/invites/#accept-invite) and [Join discovery guild](/http-api/discovery/#join-discovery-guild), unless the account is already a member +- [Create guild](/http-api/guilds/#create-guild) +- Creating a group direct message through [Create private channel](/http-api/users/private-channels/#create-private-channel), and [Add group direct message recipient](/http-api/channels/#add-group-direct-message-recipient) +- Changing a profile field through [Modify current user](/http-api/users/current-user/#modify-current-user) or [Modify current guild member](/http-api/guild-members/#modify-current-guild-member) +- Setting a custom status through [Modify current user settings](/http-api/users/settings/#modify-current-user-settings) or a [presence update](/gateway/commands/#presence-update) +- [Initiate connection](/http-api/connections/#initiate-connection), [Verify and create connection](/http-api/connections/#verify-and-create-connection), and [Start Bluesky authorisation](/http-api/connections/#start-bluesky-authorisation) +- [Upload entrance sound](/http-api/entrance-sounds/#upload-entrance-sound) and [Set entrance sound selection](/http-api/entrance-sounds/#set-entrance-sound-selection) ## Profile field privacy flags diff --git a/fluxer_docs/src/content/docs/http-api/users/content.mdx b/fluxer_docs/src/content/docs/http-api/users/content.mdx index c28b35204..c44acbc69 100644 --- a/fluxer_docs/src/content/docs/http-api/users/content.mdx +++ b/fluxer_docs/src/content/docs/http-api/users/content.mdx @@ -8,7 +8,7 @@ import RouteHeader from '@/components/RouteHeader.astro'; Recent mentions and saved messages are private lists that only the account owning them can read. Further routes delete the messages the caller authored, one filtered and immediate, the other unfiltered and delayed by a day. Data harvests live on [Data harvests](/http-api/users/data-harvest/). -These routes are user-only. Fluxer rejects a bot or OAuth2 bearer credential with 403 `ACCESS_DENIED`, and an account that has an outstanding required action with 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. +These routes are user-only. Fluxer rejects a bot or OAuth2 bearer credential with 403 `ACCESS_DENIED`. Every route except [Delete current user's messages](#delete-current-users-messages) reaches the main Gateway, and a Gateway failure returns 502 `BAD_GATEWAY`, 503 `SERVICE_UNAVAILABLE`, or 504 `GATEWAY_TIMEOUT`. [Save message](#save-message) resolves the channel before it writes, so a failure there stores nothing. The request still returns 204 when a [Saved Message Create](/gateway/events/#saved-message-create), [Saved Message Delete](/gateway/events/#saved-message-delete), or [Recent Mention Delete](/gateway/events/#recent-mention-delete) Dispatch fails to publish after the write. diff --git a/fluxer_docs/src/content/docs/http-api/users/current-user.mdx b/fluxer_docs/src/content/docs/http-api/users/current-user.mdx index 36bd156cf..4ac5868b9 100644 --- a/fluxer_docs/src/content/docs/http-api/users/current-user.mdx +++ b/fluxer_docs/src/content/docs/http-api/users/current-user.mdx @@ -8,7 +8,7 @@ import RouteHeader from '@/components/RouteHeader.astro'; The current user is the account that presented the credential, represented as a [user object](/http-api/users/#user-object). The routes here read that account, change it, and run its lifecycle operations. -Every route except [Get current user](#get-current-user) is user-only. Those routes reject a bot or OAuth2 bearer credential with 403 `ACCESS_DENIED`. They also reject an account that has an outstanding [required action](/http-api/users/#required-actions) with 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. +Every route except [Get current user](#get-current-user) is user-only. Those routes reject a bot or OAuth2 bearer credential with 403 `ACCESS_DENIED`. ## Sudo verification @@ -34,8 +34,6 @@ Returns the current [user](/http-api/users/#user-object) object. - An OAuth2 bearer credential must hold the `identify` [scope](/http-api/oauth2/#oauth2-scopes), and one without it is rejected with 403 [`MISSING_OAUTH_SCOPE`](/http-api/errors/), whose body has `required_scope`. - A bearer receives the [user object](/http-api/users/#user-object) with the zero values that page lists for a bearer read, and `email` only when it also holds the `email` scope. -An account with an outstanding [required action](/http-api/users/#required-actions) can call this route, so a client can read and poll the actions it has to complete. - ### Response | Status | Body | Condition | @@ -122,12 +120,12 @@ An omitted field leaves its stored value untouched, and an explicit `null` clear To skip the body proof fields, send the sudo token in the `X-Fluxer-Sudo-Mode-JWT` request header. -A body that has no `email_token` and nothing beyond `mfa_method`, `mfa_code`, `webauthn_response`, and `webauthn_challenge` returns the current account unchanged. That check runs before Fluxer checks required actions, so it succeeds even while an action is outstanding. Supplying `password` alone is an update with nothing to change, and it still emits [User Update](/gateway/events/#user-update). - -Fluxer rejects an account with an outstanding required action. The one exemption is a body that has `email_token` and nothing beyond the sudo verification fields. Any other defined field removes the exemption. +A body that has no `email_token` and nothing beyond `mfa_method`, `mfa_code`, `webauthn_response`, and `webauthn_challenge` returns the current account unchanged. Supplying `password` alone is an update with nothing to change, and it still emits [User Update](/gateway/events/#user-update). A claimed account needs a verified email before changing the username, discriminator, display name, avatar, banner, biography, pronouns, accent colour, timezone, timezone privacy, or any premium badge field. A request without one returns 403 [`PROFILE_EMAIL_VERIFICATION_REQUIRED`](/http-api/errors/). +A [limited account](/http-api/users/#account-limitation) cannot change any of those fields. A request that sets one returns 403 [`ACCOUNT_LIMITED`](/http-api/errors/). + An account is unclaimed while it holds no password credential, is not a bot, and does not have the SSO trait. Such an account may set only `new_password`, `has_dismissed_premium_onboarding`, and `has_unread_gift_inventory`. Any other field is rejected with [`UNCLAIMED_ACCOUNTS_CAN_ONLY_SET_EMAIL_VIA_TOKEN`](/http-api/errors/) on the path of the first offending field. The allow-list covers the profile payload only, so `email_token` and the sudo fields stay available as the way such an account claims itself. ### Image validation @@ -168,6 +166,7 @@ Supplying `new_password` on a claimed account deletes every other authentication | 200 | [user](/http-api/users/#user-object) object | Account was returned after applying every permitted field | | 400 | [error response](/http-api/#error-response) | Body, image, tag, password, entitlement, secondary control, or sudo proof is invalid | | 403 | [error response](/http-api/#error-response) | Email verification, sudo verification, or a staff-only field is required, or content is blocked | +| 403 | [error response](/http-api/#error-response) | The account is limited and the body changes a profile field, and the request returns `ACCOUNT_LIMITED` | ### Side effects diff --git a/fluxer_docs/src/content/docs/http-api/users/data-harvest.mdx b/fluxer_docs/src/content/docs/http-api/users/data-harvest.mdx index 248f12c8a..de064d777 100644 --- a/fluxer_docs/src/content/docs/http-api/users/data-harvest.mdx +++ b/fluxer_docs/src/content/docs/http-api/users/data-harvest.mdx @@ -8,7 +8,7 @@ import RouteHeader from '@/components/RouteHeader.astro'; A data harvest is a ZIP archive of the current account's data. Fluxer compiles it in the background, reports progress while it runs, and issues a temporary download URL once the archive is written. -Every route except [Download data harvest archive](#download-data-harvest-archive) is user-only. Fluxer rejects a bot or OAuth2 bearer credential with 403 `ACCESS_DENIED`, and an account that has suspicious activity flags with 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. No route here requires [sudo mode](/http-api/users/mfa/#sudo-mode). [Delete current user's messages](/http-api/users/content/#delete-current-users-messages) takes the same filter shape, destroys the messages, and requires it. +Every route except [Download data harvest archive](#download-data-harvest-archive) is user-only. Fluxer rejects a bot or OAuth2 bearer credential with 403 `ACCESS_DENIED`. No route here requires [sudo mode](/http-api/users/mfa/#sudo-mode). [Delete current user's messages](/http-api/users/content/#delete-current-users-messages) takes the same filter shape, destroys the messages, and requires it. :::caution[A completed archive has a seven day download deadline] A completed harvest records a deadline exactly seven days after the archive was written. After it, [Get data harvest download URL](#get-data-harvest-download-url) returns 400 `HARVEST_EXPIRED` and [Download data harvest archive](#download-data-harvest-archive) returns 404, while the record keeps reporting `completed`. Nothing extends or restores it. diff --git a/fluxer_docs/src/content/docs/http-api/users/email-and-password.mdx b/fluxer_docs/src/content/docs/http-api/users/email-and-password.mdx index db1352c28..ca742f8fb 100644 --- a/fluxer_docs/src/content/docs/http-api/users/email-and-password.mdx +++ b/fluxer_docs/src/content/docs/http-api/users/email-and-password.mdx @@ -8,7 +8,7 @@ import RouteHeader from '@/components/RouteHeader.astro'; Changing the email address or the password on an account takes several steps. Fluxer opens a ticket, emails a code, and every later step sends that ticket with the codes and proofs collected so far. An account whose address the mail provider rejected uses [bounced email recovery](#bounced-email-recovery) instead. -Every operation needs a non-bot user session. The email change routes accept a session with suspicious account state. Every password change route rejects that state with 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. +Every operation needs a non-bot user session. ## Ticket and code contract @@ -41,7 +41,7 @@ Every ticket, code, address, proof, token, and password failure named on this pa - An email token failure uses the path `email_token`. - A password failure uses the path `password` or `new_password`. -The account-level codes `ACCESS_DENIED`, `ACCOUNT_SUSPICIOUS_ACTIVITY`, `SUDO_MODE_REQUIRED`, and `RATE_LIMITED` arrive as the top-level `code`. +The account-level codes `ACCESS_DENIED`, `SUDO_MODE_REQUIRED`, and `RATE_LIMITED` arrive as the top-level `code`. ## Email send controls @@ -399,7 +399,7 @@ The ticket moves to the completed state and a 30-minute email token is issued fo Consumes an email token and writes its address to the account. Returns the updated [user](/http-api/users/#user-object) object on success. Emits a [User Update](/gateway/events/#user-update) Gateway event. -A claimed account proves [sudo mode](/http-api/users/mfa/#sudo-mode) before the route reads the token. An unclaimed account is exempt and applies the change with its session alone. The route accepts suspicious account state. +A claimed account proves [sudo mode](/http-api/users/mfa/#sudo-mode) before the route reads the token. An unclaimed account is exempt and applies the change with its session alone. A token that belongs to another account fails with `INVALID_EMAIL_TOKEN`, and one past its 30-minute lifetime fails with `EMAIL_TOKEN_EXPIRED`. An expired token is deleted when rejected. Fluxer checks the address against existing account ownership again here. An address another account has taken since fails with `EMAIL_ALREADY_IN_USE` without consuming the token. @@ -449,7 +449,7 @@ This operation replaces the email address only. Nothing on the path revokes a cr ### Side effects -Fluxer replaces the account email, marks it verified, and removes every email-clearable suspicious activity flag, which can empty `required_actions` and restore ordinary access. The bounced marker is not cleared, so an account that has it recovers through [bounced email recovery](#bounced-email-recovery). +Fluxer replaces the account email and marks it verified. The bounced marker is not cleared, so an account that has it recovers through [bounced email recovery](#bounced-email-recovery). For an ordinary change from an existing address, Fluxer sends a revert email to the original address so its holder can use [Revert an email change](/http-api/authentication/#revert-an-email-change). Fluxer deletes the email token, records the contact change in the account's contact change log, and emits [User Update](/gateway/events/#user-update). No public member field changes, so no [Guild Member Update](/gateway/events/#guild-member-update) follows. @@ -459,7 +459,7 @@ For an ordinary change from an existing address, Fluxer sends a revert email to ## Bounced email recovery -An account whose stored address the mail provider rejected has the bounced marker, reported as `email_bounced` on the [user object](/http-api/users/#user-object). The bounce also clears the verified email state and adds a required action. The operations below bind a replacement address and finish without the sudo-gated apply step. +An account whose stored address the mail provider rejected has the bounced marker, reported as `email_bounced` on the [user object](/http-api/users/#user-object). The bounce also clears the verified email state. The operations below bind a replacement address and finish without the sudo-gated apply step. Every one of them requires the bounced marker. An account without it is rejected with 403 `ACCESS_DENIED`, and an account with no address at all is rejected with `MUST_HAVE_EMAIL_TO_CHANGE_IT`. @@ -473,7 +473,7 @@ The codes and the 30-second cooldown in this flow follow [Ticket and code contra Starts the recovery flow. Returns a [new email request](#new-email-request-object) object on success. -This operation creates a ticket and binds the replacement address in the same call. The route accepts suspicious account state. Fluxer checks the address exactly as [Request new email](#request-new-email) does: the address must have a domain that publishes mail exchange or address records, belong to no other account, and differ from the bounced address. +This operation creates a ticket and binds the replacement address in the same call. Fluxer checks the address exactly as [Request new email](#request-new-email) does: the address must have a domain that publishes mail exchange or address records, belong to no other account, and differ from the bounced address. The send counts against the new address control. @@ -557,7 +557,7 @@ No sudo verification and no email token step applies. ### Side effects -The account gets the verified replacement address, `email_bounced` becomes false, and satisfied email requirements are removed from `required_actions`. The ticket is completed and cannot be reused. +The account gets the verified replacement address and `email_bounced` becomes false. The ticket is completed and cannot be reused. No revert email is sent. diff --git a/fluxer_docs/src/content/docs/http-api/users/mfa.mdx b/fluxer_docs/src/content/docs/http-api/users/mfa.mdx index fb151e189..9cb12bd67 100644 --- a/fluxer_docs/src/content/docs/http-api/users/mfa.mdx +++ b/fluxer_docs/src/content/docs/http-api/users/mfa.mdx @@ -10,7 +10,7 @@ Multi-factor authentication asks for a second proof of identity after the accoun Registering a WebAuthn credential does not make passkeys a second factor. A registered credential answers a [sudo mode](#sudo-mode) challenge and a passwordless login on its own, and only [Set WebAuthn two-factor authentication](#set-webauthn-two-factor-authentication) adds the WebAuthn [authenticator type](/http-api/users/#authenticator-types) that makes a passkey a required second factor at password login. -Every route here requires a non-bot user session. Fluxer rejects an account in suspicious activity state with 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`, including on the sudo routes. +Every route here requires a non-bot user session. :::caution[A challenge is one-use and context-bound] Fluxer consumes a backup code, a WebAuthn registration challenge, and a WebAuthn sudo challenge on first use. A challenge is bound to the user it was issued to and to the operation it was issued for. The operations are registration, sudo, MFA login, discoverable login, the passkey bridge, and the passkey update. It expires after five minutes, so a registration challenge cannot be redeemed as a sudo assertion. diff --git a/fluxer_docs/src/content/docs/http-api/users/notes.mdx b/fluxer_docs/src/content/docs/http-api/users/notes.mdx index 66d269a83..e0bdef4ab 100644 --- a/fluxer_docs/src/content/docs/http-api/users/notes.mdx +++ b/fluxer_docs/src/content/docs/http-api/users/notes.mdx @@ -8,7 +8,7 @@ import RouteHeader from '@/components/RouteHeader.astro'; A note is short private text the caller stores about another account. -Every route here requires a user session. A bot or OAuth2 bearer credential is refused with 403 `ACCESS_DENIED`. An account with an outstanding required action is refused with 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. +Every route here requires a user session. A bot or OAuth2 bearer credential is refused with 403 `ACCESS_DENIED`. :::note[A note is private to its author] The target account never receives the note in an HTTP response or [Gateway Dispatch](/gateway/events/). A note has no relationship requirement, so the caller can hold one for an account that is neither a friend nor blocked. diff --git a/fluxer_docs/src/content/docs/http-api/users/phone-verification.mdx b/fluxer_docs/src/content/docs/http-api/users/phone-verification.mdx deleted file mode 100644 index 8958ae4d9..000000000 --- a/fluxer_docs/src/content/docs/http-api/users/phone-verification.mdx +++ /dev/null @@ -1,320 +0,0 @@ ---- -# SPDX-License-Identifier: AGPL-3.0-or-later -title: Phone verification -description: Proving control of a phone number over outbound SMS or an inbound challenge, and setting a deferred requirement aside. ---- - -import RouteHeader from '@/components/RouteHeader.astro'; - -Phone verification proves that the current account controls a phone number. The account either receives a one-time code over outbound SMS, or texts an issued challenge code to a Fluxer number. Success sets the account's verified phone state, which the phone [required actions](/http-api/users/#required-actions) and the `VERY_HIGH` guild [verification level](/http-api/guilds/#verification-levels) check. - -Every route here needs a non-bot user session, and each one admits a session with suspicious account state. - -## Eligibility - -[Send phone verification](#send-phone-verification) and [Verify phone code](#verify-phone-code) admit only an account that satisfies at least one of these conditions. - -- The account already holds a verified phone. -- A TOTP [authenticator](/http-api/users/#authenticator-types) is enrolled on the account. -- The stored suspicious activity bitfield is non-zero. -- The account belongs to at least one guild whose [verification level](/http-api/guilds/#verification-levels) is `VERY_HIGH`, and the [instance features](/http-api/instance/#instance-features-object) report `phone_verification_enabled` as true. - -An account satisfying none of them is refused with 403 `PHONE_ADD_NOT_ELIGIBLE`. - -Both operations run the check before they examine the submitted number. A refused account receives no message and consumes no challenge. [Start inbound phone challenge](#start-inbound-phone-challenge) skips the check entirely and issues a challenge for any non-bot session. - -:::note[Visible required actions do not determine eligibility] -An account can qualify even when its [required actions](/http-api/users/#required-actions) array is empty. -::: - -## Deferred phone requirement - -An account can hold a phone requirement together with a marker that defers it. A deferred requirement is absent from the [required actions](/http-api/users/#required-actions) array and restricts nothing. An account whose deferred requirement was later made due owes `REQUIRE_VERIFIED_PHONE` or `REQUIRE_REVERIFIED_PHONE`, and every ordinary user route refuses it with 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. - -[Get phone gate escape preview](#get-phone-gate-escape-preview) and [Run phone gate escape](#run-phone-gate-escape) set a due requirement aside again without verifying a number and without leaving any guild. Both admit an account the rest of the API refuses. The escape is available only while all of these hold. - -- The account holds no verified phone. -- The account owes `REQUIRE_VERIFIED_PHONE` or `REQUIRE_REVERIFIED_PHONE`. -- The account does not owe `REQUIRE_INBOUND_PHONE_VERIFICATION`. -- The requirement was deferred before it became due, and it has not been deferred again. -- The account has at least one visible required action. - -## Number representation - -The `phone` field is a number already in canonical E.164 form. Fluxer strips control and formatting characters, trims the value, and then matches it against `^\+[1-9]\d{1,14}$`. A value that fails returns 400 `INVALID_FORM_BODY` with one [validation error](/http-api/#validation-error-object) entry whose `path` is `phone` and whose `code` is `PHONE_NUMBER_INVALID_FORMAT`. - -:::note[Only the verified state is exposed] -A successful verification sets a boolean on the account. The `phone` field of the [user object](/http-api/users/#user-object) is always null, and no route returns the submitted number. -::: - -:::danger[Numbers and codes are confidential] -Keep phone numbers, verification codes, and challenge codes out of logs, analytics, URLs, and messages to unintended recipients. -::: - -## Phone verification channel values - -| Value | Description | -| --- | --- | -| sms1 | Fluxer asks the SMS provider to deliver a one-time code to the submitted number | -| inbound_challenge2 | The user texts the issued challenge code to the returned Fluxer number | - -1 Requesting this value is equivalent to omitting the field - -2 Requesting this value always yields an inbound challenge, and neither the lookup provider nor the outbound SMS provider is contacted - -## Number checks - -Outbound SMS requires the number to pass a line check with the instance's phone provider. A number the provider cannot reach, or one on a line type that cannot receive a code, is refused with 400 `INVALID_PHONE_NUMBER`. Some numbers that pass are routed to an inbound challenge instead. A number the check cannot be run for is refused. - -## Inbound challenge reason values - -| Value | Description | -| --- | --- | -| verification_required | The instance requires inbound verification for this attempt | - -## SMS delivery object - -Confirmation that the SMS provider accepted a one-time code for delivery. [Send phone verification](#send-phone-verification) returns it on an outbound result. The client then sends the same number and the delivered code to [Verify phone code](#verify-phone-code). - -### Structure - -| Field | Type | Description | -| --- | --- | --- | -| channel | string | The delivery channel, always the literal `sms` | - -## Inbound challenge object - -The instructions for texting a code to Fluxer, returned by [Send phone verification](#send-phone-verification) when policy routed the attempt inbound. `channel` tells the response shapes apart. - -### Structure - -| Field | Type | Description | -| --- | --- | --- | -| channel | string | The delivery channel, always the literal `inbound_challenge` | -| challenge_code1 | string | The code the user texts to `our_number` | -| our_number | string | The Fluxer E.164 number that receives the code | -| expires_at2 | ISO8601 timestamp | The moment the challenge stops being redeemable | -| reason | string | The [inbound challenge reason](#inbound-challenge-reason-values), always `verification_required` | - -1 Six decimal digits - -2 15 minutes after the challenge was issued - -### Example - -```json -{ - "channel": "inbound_challenge", - "challenge_code": "418207", - "our_number": "+15550000000", - "expires_at": "2026-03-04T18:15:00.000Z", - "reason": "verification_required" -} -``` - -## Direct inbound challenge object - -The code and the Fluxer number for a caller that asked for an inbound challenge directly. [Start inbound phone challenge](#start-inbound-phone-challenge) returns it. - -### Structure - -| Field | Type | Description | -| --- | --- | --- | -| challenge_code1 | string | The code the user texts to `our_number` | -| our_number | string | The Fluxer E.164 number that receives the code | -| expires_at2 | ISO8601 timestamp | The moment the challenge stops being redeemable | - -1 Six decimal digits - -2 15 minutes after the challenge was issued - -## Phone verification result object - -Returned by [Verify phone code](#verify-phone-code) on a successful verification. - -### Structure - -| Field | Type | Description | -| --- | --- | --- | -| verified | boolean | Always the literal `true` | - -## Phone gate escape guild object - -One guild in a [phone gate escape preview](#phone-gate-escape-preview-object). - -### Structure - -| Field | Type | Description | -| --- | --- | --- | -| id | snowflake | The ID of the guild | -| name | string | The name the guild is listed under | - -## Phone gate escape preview object - -What [Run phone gate escape](#run-phone-gate-escape) would do for the current account. - -### Structure - -| Field | Type | Description | -| --- | --- | --- | -| available | boolean | Whether the escape is open to this account right now | -| guilds | array[[phone gate escape guild](#phone-gate-escape-guild-object) object] | Always empty, the escape leaves no guild | -| owned_guilds | array[[phone gate escape guild](#phone-gate-escape-guild-object) object] | Always empty, the escape leaves no guild | - -## Send phone verification - - - -Starts verification of the submitted number. Requires an account satisfying [eligibility](#eligibility). Returns an [SMS delivery](#sms-delivery-object) object or an [inbound challenge](#inbound-challenge-object) object on success. - -The instance can route the attempt to an inbound challenge instead of outbound SMS, and that overrides a requested `sms`. Requesting `inbound_challenge` always yields a challenge. - -The number then passes the [number checks](#number-checks). A number that has reached its verification limit is refused with 400 `PHONE_ALREADY_USED`. Sends are limited for each account and for each number, and a denial returns 429 `PHONE_RATE_LIMIT_EXCEEDED`. The phone verification service can also ask for a solved [CAPTCHA](/topics/captcha/) challenge. The route then answers 400 `CAPTCHA_REQUIRED` with a challenge, and a retry with the solved challenge in `X-Captcha-Token` continues the send. When the instance has the check turned off, or the account is exempt from it, that request returns 429 `PHONE_RATE_LIMIT_EXCEEDED` instead. Every other refusal returns 400 `SMS_VERIFICATION_UNAVAILABLE`, as does an instance with no phone verification service. - -### Request headers - -| Field | Type | Description | -| --- | --- | --- | -| X-Captcha-Token?1 | string | The solved ALTCHA challenge, see [CAPTCHA handling](/topics/captcha/) | - -1 Read only when the phone verification service asks for a CAPTCHA. A missing token then returns 400 `CAPTCHA_REQUIRED` and a rejected token returns 400 `INVALID_CAPTCHA`, each with a new challenge - -### JSON body - -| Field | Type | Description | -| --- | --- | --- | -| phone | string | The number in canonical E.164 form, matching `^\+[1-9]\d{1,14}$` | -| channel?1 | string | The preferred [verification channel](#phone-verification-channel-values) | - -1 Omitting the field requests outbound SMS. Requesting `inbound_challenge` always yields a challenge - -### Response - -| Status | Body | Condition | -| --- | --- | --- | -| 200 | [SMS delivery](#sms-delivery-object) object \| [inbound challenge](#inbound-challenge-object) object | Verification was started on the channel named by the response | -| 400 | [error response](/http-api/#error-response) | The number is refused with `INVALID_PHONE_NUMBER`, has reached its verification limit and returns `PHONE_ALREADY_USED`, the attempt asks for a CAPTCHA with `CAPTCHA_REQUIRED` or `INVALID_CAPTCHA`, or the send could not start and returns `SMS_VERIFICATION_UNAVAILABLE` | -| 403 | [error response](/http-api/#error-response) | The account is not eligible and the request returns `PHONE_ADD_NOT_ELIGIBLE` | -| 4291 | [rate limit response](/topics/rate-limits/#rate-limit-response-object) | A send limit or a provider throttle denies the request, which returns `PHONE_RATE_LIMIT_EXCEEDED` | - -1 A phone denial uses the rate limit envelope with `code` set to `PHONE_RATE_LIMIT_EXCEEDED`. An ordinary route denial returns `RATE_LIMITED` - -On the 429, `X-RateLimit-Scope` reports `shared` when the per-number control or a number-scoped provider throttle produced the denial. - -### Side effects - -On an outbound result, Fluxer asks the configured SMS provider to deliver a one-time code. On an inbound result, it creates a one-use challenge for the current account. - -### Rate limit - -5 requests per minute for each authenticated user, on the `phone:send_verification` bucket. - -## Start inbound phone challenge - - - -Issues an inbound challenge without submitting or examining a phone number. Returns a [direct inbound challenge](#direct-inbound-challenge-object) object on success. - -The [eligibility](#eligibility) check does not apply here. The challenge code is six decimal digits, lives for 15 minutes, and can be redeemed once. Requesting a further challenge does not revoke an earlier one, so several codes issued to the same account can be live at the same time until each expires or is redeemed. - -### Response - -| Status | Body | Condition | -| --- | --- | --- | -| 200 | [direct inbound challenge](#direct-inbound-challenge-object) object | A challenge was issued | -| 400 | [error response](/http-api/#error-response) | The instance cannot issue an inbound challenge and the request returns `SMS_VERIFICATION_UNAVAILABLE` | - -### Side effects - -Fluxer creates a one-use challenge for the current account. The challenge completes out of band when the provider delivers the matching inbound message, and the HTTP response has no part of it. On completion, Fluxer sets the verified phone state, clears the phone requirements from the stored suspicious activity bitfield, and dispatches [User Update](/gateway/events/#user-update). A completion from a number that has reached its verification limit does not verify the account. - -### Rate limit - -5 requests per minute for each authenticated user, on the `phone:send_verification` bucket, shared with [Send phone verification](#send-phone-verification). - -## Verify phone code - - - -Verifies an outbound SMS code. Requires an account satisfying [eligibility](#eligibility). Returns a [phone verification result](#phone-verification-result-object) object on success. Emits a [User Update](/gateway/events/#user-update) Gateway event. - -The number passes the [number checks](#number-checks) again before the code is checked, so a number that has become ineligible since the code was sent is refused. - -The phone provider checks the number and the code together, so the provider decides the code lifetime and the attempt allowance. A rejected code returns 400 `INVALID_PHONE_VERIFICATION_CODE`. A throttle returns 429 `PHONE_RATE_LIMIT_EXCEEDED`. An unavailable provider returns 400 `SMS_VERIFICATION_UNAVAILABLE`. A number that has reached its verification limit fails with 400 `PHONE_ALREADY_USED`. A deleted account, or one that can no longer be read, fails with 400 `PHONE_VERIFICATION_REQUIRED`. - -### JSON body - -| Field | Type | Description | -| --- | --- | --- | -| phone | string | The number in canonical E.164 form, matching `^\+[1-9]\d{1,14}$` | -| code1 | string | The code the outbound SMS delivered (1-32 characters) | - -1 Stripped of control and formatting characters and trimmed before the length check, and the normalised value is what the provider checks - -### Response - -| Status | Body | Condition | -| --- | --- | --- | -| 200 | [phone verification result](#phone-verification-result-object) object | The number is now verified for the account | -| 400 | [error response](/http-api/#error-response) | The number returns `INVALID_PHONE_NUMBER`, the code returns `INVALID_PHONE_VERIFICATION_CODE`, the provider returns `SMS_VERIFICATION_UNAVAILABLE`, the number returns `PHONE_ALREADY_USED`, or the account returns `PHONE_VERIFICATION_REQUIRED` | -| 403 | [error response](/http-api/#error-response) | The account is not eligible and the request returns `PHONE_ADD_NOT_ELIGIBLE` | -| 4291 | [rate limit response](/topics/rate-limits/#rate-limit-response-object) | A provider throttle denies the request, which returns `PHONE_RATE_LIMIT_EXCEEDED` | - -1 A phone denial uses the rate limit envelope with `code` set to `PHONE_RATE_LIMIT_EXCEEDED`. An ordinary route denial returns `RATE_LIMITED` - -On the 429, `X-RateLimit-Scope` reports `shared` when a number-scoped provider throttle produced the denial. - -### Side effects - -Fluxer marks the account as holding a verified phone. It then clears every phone requirement from the stored suspicious activity bitfield: `REQUIRE_VERIFIED_PHONE`, `REQUIRE_REVERIFIED_PHONE`, the combined email-or-phone requirements, `REQUIRE_INBOUND_PHONE_VERIFICATION`, and the markers of a deferred phone requirement. Email-only requirements remain, so an account that also owes email verification stays restricted. - -Fluxer dispatches [User Update](/gateway/events/#user-update) before the HTTP response returns. - -### Rate limit - -10 requests per minute for each authenticated user, on the `phone:verify_code` bucket. - -## Get phone gate escape preview - - - -Returns a [phone gate escape preview](#phone-gate-escape-preview-object) object for the current account. For an account outside the state [Deferred phone requirement](#deferred-phone-requirement) describes, `available` is false and both arrays are empty. - -### Response - -| Status | Body | Condition | -| --- | --- | --- | -| 200 | [phone gate escape preview](#phone-gate-escape-preview-object) object | The preview was returned | - -### Rate limit - -20 requests per minute for each authenticated user, on the `user:phone_gate_escape:preview` bucket. - -## Run phone gate escape - - - -Defers the phone requirement again without leaving any guild. Returns the [user](/http-api/users/#user-object) object. - -### Limitations - -- The account is in the state [Deferred phone requirement](#deferred-phone-requirement) defines, and one outside it is rejected with 400 [`PHONE_GATE_ESCAPE_UNAVAILABLE`](/http-api/errors/). - -### JSON body - -The body is an empty object. Fluxer reads an absent or empty body as an empty object and discards any supplied property. A body that is not valid JSON returns 400 `INVALID_FORM_BODY` with `INVALID_FORMAT` at the `body` path. Valid JSON that is not an object is rejected with 400. - -### Response - -| Status | Body | Condition | -| --- | --- | --- | -| 200 | [user](/http-api/users/#user-object) object | The requirement was deferred again | -| 400 | [error response](/http-api/#error-response) | The escape is unavailable and the request returns `PHONE_GATE_ESCAPE_UNAVAILABLE` | - -### Side effects - -Fluxer defers the requirement again and dispatches [User Update](/gateway/events/#user-update). Guild memberships are unchanged. - -### Rate limit - -5 requests per hour for each authenticated user, on the `user:phone_gate_escape:execute` bucket. diff --git a/fluxer_docs/src/content/docs/http-api/users/private-channels.mdx b/fluxer_docs/src/content/docs/http-api/users/private-channels.mdx index b24ce2cd0..a68347309 100644 --- a/fluxer_docs/src/content/docs/http-api/users/private-channels.mdx +++ b/fluxer_docs/src/content/docs/http-api/users/private-channels.mdx @@ -8,7 +8,7 @@ import RouteHeader from '@/components/RouteHeader.astro'; A private channel is a conversation outside any guild. It is either a direct message between two accounts or a group DM with its own participant set. Its fields come from the [channel object](/http-api/channels/#channel-object). -The routes here take a user session or a bot token. An OAuth2 bearer credential receives 403 `ACCESS_DENIED`, and an account with an outstanding required action receives 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. +The routes here take a user session or a bot token. An OAuth2 bearer credential receives 403 `ACCESS_DENIED`. :::note[Open state is per participant] A direct message channel exists once, and each participant holds its own open state. Closing one side leaves the channel and its messages in place, so a later [Create private channel](#create-private-channel) request for the same pair returns that stored channel. @@ -146,6 +146,7 @@ Fluxer holds a bot caller to no friendship. A recipient that has blocked the bot | 200 | [channel](/http-api/channels/#channel-object) object | The direct message was opened or the group DM was created | | 400 | [error response](/http-api/#error-response) | CAPTCHA, account eligibility, the recipient set, relationship policy, a group DM limit, or instance policy rejects creation | | 403 | [error response](/http-api/#error-response) | An ordinary caller's email address is unverified and the request returns `DIRECT_MESSAGE_EMAIL_VERIFICATION_REQUIRED`, or a limited caller opens a new conversation and the request returns `NEW_CONVERSATIONS_LIMITED` | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and creates a group direct message, and the request returns `ACCOUNT_LIMITED` | | 404 | [error response](/http-api/#error-response) | The caller or the direct message recipient does not resolve | ### Side effects diff --git a/fluxer_docs/src/content/docs/http-api/users/push-notifications.mdx b/fluxer_docs/src/content/docs/http-api/users/push-notifications.mdx index 54b31983d..d7ffff08c 100644 --- a/fluxer_docs/src/content/docs/http-api/users/push-notifications.mdx +++ b/fluxer_docs/src/content/docs/http-api/users/push-notifications.mdx @@ -8,7 +8,7 @@ import RouteHeader from '@/components/RouteHeader.astro'; Fluxer delivers a notification to a registered device as [RFC 8291](https://datatracker.ietf.org/doc/html/rfc8291) Web Push. The client generates a P-256 key pair and an auth secret, registers the public half of the pair, and decrypts each delivery with the private half. -Every route here requires a user session. A bot or OAuth2 bearer credential is refused with 403 `ACCESS_DENIED`. An account with an outstanding required action is refused with 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. +Every route here requires a user session. A bot or OAuth2 bearer credential is refused with 403 `ACCESS_DENIED`. ## Registration formats diff --git a/fluxer_docs/src/content/docs/http-api/users/relationships.mdx b/fluxer_docs/src/content/docs/http-api/users/relationships.mdx index 372ad8fbf..4911b6b18 100644 --- a/fluxer_docs/src/content/docs/http-api/users/relationships.mdx +++ b/fluxer_docs/src/content/docs/http-api/users/relationships.mdx @@ -8,7 +8,7 @@ import RouteHeader from '@/components/RouteHeader.astro'; A relationship describes a friendship, block, or pending friend request from the caller's perspective. Private notes belong to [User notes](/http-api/users/notes/). -The routes here are user-only. A bot or OAuth2 bearer credential receives 403 `ACCESS_DENIED`, and an account with an outstanding required action receives 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. +The routes here are user-only. A bot or OAuth2 bearer credential receives 403 `ACCESS_DENIED`. :::note[Relationship records are directional] A friendship is a FRIEND record on both accounts. A pending request is `OUTGOING_REQUEST` on the sender and `INCOMING_REQUEST` on the recipient. A block exists only on the account that created it, so the block adds no record to the blocked account and sends it no [Relationship Add](/gateway/events/#relationship-add). diff --git a/fluxer_docs/src/content/docs/http-api/users/settings-protobuf.md b/fluxer_docs/src/content/docs/http-api/users/settings-protobuf.md index 50ea6a3d5..3175e561c 100644 --- a/fluxer_docs/src/content/docs/http-api/users/settings-protobuf.md +++ b/fluxer_docs/src/content/docs/http-api/users/settings-protobuf.md @@ -523,7 +523,6 @@ The `nagbars` field stores dismissed account-wide notices as bools and dismissed | desktop_download | bool | Whether the desktop download notice is dismissed | | guild_membership_cta | bool | Whether the guild membership call to action notice is dismissed | | visionary_mfa1 | bool | Whether the lifetime premium MFA notice is dismissed | -| legacy_phone_unlink | bool | Whether the legacy phone unlink notice is dismissed | | pending_bulk_deletion | map[string, bool] | Dismissal state keyed by pending bulk deletion identifier | | invites_disabled2 | map[string, bool] | Dismissal state keyed by guild ID for disabled-invite notices | | guild_mfa_requirement2 | map[string, bool] | Dismissal state keyed by guild ID for MFA requirement notices | diff --git a/fluxer_docs/src/content/docs/http-api/users/settings.mdx b/fluxer_docs/src/content/docs/http-api/users/settings.mdx index b8410d315..54be57ce7 100644 --- a/fluxer_docs/src/content/docs/http-api/users/settings.mdx +++ b/fluxer_docs/src/content/docs/http-api/users/settings.mdx @@ -8,7 +8,7 @@ import RouteHeader from '@/components/RouteHeader.astro'; User settings include account-wide [preferences](/http-api/users/#user-settings-object) and [notification settings](#user-guild-settings-object) for each guild and for private channels. -Every route here is user-only and rejects a bot or OAuth2 bearer credential with 403 `ACCESS_DENIED`. Every route except [Get current user settings](#get-current-user-settings) also rejects an account with an outstanding required action, with 403 `ACCOUNT_SUSPICIOUS_ACTIVITY`. +Every route here is user-only and rejects a bot or OAuth2 bearer credential with 403 `ACCESS_DENIED`. ## Presence status values @@ -341,7 +341,7 @@ A new account starts with these values. Every field not listed starts empty, so Returns the [user settings](/http-api/users/#user-settings-object) object. -An account with an outstanding required action can still call this route. An account with no stored settings record returns 404 `UNKNOWN_USER`. +An account with no stored settings record returns 404 `UNKNOWN_USER`. ### Response @@ -375,6 +375,7 @@ The body uses the [user settings update object](#user-settings-update-object). | 200 | [user settings](/http-api/users/#user-settings-object) object | Settings were applied and returned | | 400 | [error response](/http-api/#error-response) | A field value, the custom status emoji, the trusted domain combination, an age-restricted filter, or the synced preferences snapshot is invalid | | 403 | [error response](/http-api/#error-response) | Custom status text is blocked and the request returns `CONTENT_BLOCKED` | +| 403 | [error response](/http-api/#error-response) | The account is [limited](/http-api/users/#account-limitation) and the body sets a custom status, and the request returns `ACCOUNT_LIMITED` | | 404 | [error response](/http-api/#error-response) | Settings do not exist and the request returns `UNKNOWN_USER` | ### Side effects diff --git a/fluxer_docs/src/content/docs/http-api/webhooks.mdx b/fluxer_docs/src/content/docs/http-api/webhooks.mdx index 282772259..f789b47ce 100644 --- a/fluxer_docs/src/content/docs/http-api/webhooks.mdx +++ b/fluxer_docs/src/content/docs/http-api/webhooks.mdx @@ -783,7 +783,6 @@ Returns an array of [webhook objects](#webhook-object) in a guild. The caller mu | 400 | [error response](/http-api/#error-response) | Path parameter is not a valid snowflake | | 4002 | [error response](/http-api/#error-response) | The caller holds `MANAGE_WEBHOOKS` with no enrolled authenticator in an elevated-MFA guild | | 4033 | [error response](/http-api/#error-response) | Credential is a bearer token | -| 4033 | [error response](/http-api/#error-response) | The account has an outstanding required action | | 4033 | [error response](/http-api/#error-response) | The guild is unavailable | | 4033 | [error response](/http-api/#error-response) | The caller is not a member of the guild or lacks `MANAGE_WEBHOOKS` | | 404 | [error response](/http-api/#error-response) | Guild does not exist, returning `UNKNOWN_GUILD` | @@ -792,7 +791,7 @@ Returns an array of [webhook objects](#webhook-object) in a guild. The caller mu 2 The missing-authenticator code is `TWO_FACTOR_REQUIRED`, returned only after Fluxer confirms the permission itself -3 `ACCOUNT_SUSPICIOUS_ACTIVITY` for an outstanding required action, `MISSING_ACCESS` for an unavailable guild, `MISSING_PERMISSIONS` for a membership or permission failure, and `ACCESS_DENIED` otherwise +3 `MISSING_ACCESS` for an unavailable guild, `MISSING_PERMISSIONS` for a membership or permission failure, and `ACCESS_DENIED` otherwise A webhook is returned only when the caller also holds both `VIEW_CHANNEL` and `MANAGE_WEBHOOKS` in that webhook's own channel. A webhook with no channel target is never returned. @@ -820,7 +819,6 @@ Returns an array of [webhook objects](#webhook-object) in a guild text, voice, o | 400 | [error response](/http-api/#error-response) | Path parameter is not a valid snowflake | | 4001 | [error response](/http-api/#error-response) | The caller holds `MANAGE_WEBHOOKS` with no enrolled authenticator in an elevated-MFA guild | | 4032 | [error response](/http-api/#error-response) | Credential is a bearer token | -| 4032 | [error response](/http-api/#error-response) | The account has an outstanding required action | | 4032 | [error response](/http-api/#error-response) | The guild is unavailable | | 4032 | [error response](/http-api/#error-response) | The caller is not a member of the channel's guild | | 4032 | [error response](/http-api/#error-response) | The caller lacks channel access or `MANAGE_WEBHOOKS` | @@ -830,7 +828,7 @@ Returns an array of [webhook objects](#webhook-object) in a guild text, voice, o 1 The missing-authenticator code is `TWO_FACTOR_REQUIRED`, returned only after Fluxer confirms the permission itself -2 `ACCOUNT_SUSPICIOUS_ACTIVITY` for an outstanding required action, `MISSING_ACCESS` for an unavailable guild, `NSFW_CONTENT_AGE_RESTRICTED` for an unverified account in an age restricted channel, `MISSING_PERMISSIONS` for a membership, channel access, or permission failure, and `ACCESS_DENIED` otherwise +2 `MISSING_ACCESS` for an unavailable guild, `NSFW_CONTENT_AGE_RESTRICTED` for an unverified account in an age restricted channel, `MISSING_PERMISSIONS` for a membership, channel access, or permission failure, and `ACCESS_DENIED` otherwise ### Rate limit @@ -872,7 +870,7 @@ The decoded bytes must be at most the resolved [avatar_max_size](/http-api/insta | 4002 | [error response](/http-api/#error-response) | The guild or channel webhook allowance is already reached | | 400 | [error response](/http-api/#error-response) | The caller holds `MANAGE_WEBHOOKS` with no enrolled authenticator in an elevated-MFA guild | | 403 | [error response](/http-api/#error-response) | Credential is a bearer token | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action | +| 403 | [error response](/http-api/#error-response) | The account is limited | | 403 | [error response](/http-api/#error-response) | The guild is unavailable | | 403 | [error response](/http-api/#error-response) | The caller is not a member of the channel's guild | | 403 | [error response](/http-api/#error-response) | The caller lacks channel access or `MANAGE_WEBHOOKS` | @@ -892,7 +890,7 @@ The decoded bytes must be at most the resolved [avatar_max_size](/http-api/insta | Caller holds the permission but has no enrolled authenticator | 400 `TWO_FACTOR_REQUIRED` | | Schema or image failure | 400 `INVALID_FORM_BODY` | | Name is blocked, or the avatar hash is banned | 403 `CONTENT_BLOCKED` | -| Account has an outstanding required action | 403 `ACCOUNT_SUSPICIOUS_ACTIVITY` | +| Account is limited | 403 `ACCOUNT_LIMITED` | | Guild is unavailable | 403 `MISSING_ACCESS` | | Unverified account in an age restricted channel | 403 `NSFW_CONTENT_AGE_RESTRICTED` | | Membership, channel access, or permission failure | 403 `MISSING_PERMISSIONS` | @@ -928,13 +926,12 @@ Returns a [webhook object](#webhook-object). The caller must be a member of the | 400 | [error response](/http-api/#error-response) | Path parameter is not a valid snowflake | | 4001 | [error response](/http-api/#error-response) | The caller holds `MANAGE_WEBHOOKS` with no enrolled authenticator in an elevated-MFA guild | | 4032 | [error response](/http-api/#error-response) | Credential is a bearer token | -| 4032 | [error response](/http-api/#error-response) | The account has an outstanding required action | | 4032 | [error response](/http-api/#error-response) | The caller is not a member of the webhook's guild or lacks `MANAGE_WEBHOOKS` in the webhook's channel | | 404 | [error response](/http-api/#error-response) | Webhook does not exist, returning `UNKNOWN_WEBHOOK`, or its guild does not resolve, returning `UNKNOWN_GUILD` | 1 The missing-authenticator code is `TWO_FACTOR_REQUIRED`, returned only after Fluxer confirms the permission itself -2 `ACCOUNT_SUSPICIOUS_ACTIVITY` for an outstanding required action, `MISSING_PERMISSIONS` for a membership or permission failure, and `ACCESS_DENIED` otherwise +2 `MISSING_PERMISSIONS` for a membership or permission failure, and `ACCESS_DENIED` otherwise ### Rate limit @@ -984,7 +981,6 @@ The returned webhook object has the destination channel. Copies a channel follow | 4003 | [error response](/http-api/#error-response) | A channel follower webhook cannot move into the destination channel | | 400 | [error response](/http-api/#error-response) | The caller holds `MANAGE_WEBHOOKS` with no enrolled authenticator in an elevated-MFA guild | | 403 | [error response](/http-api/#error-response) | Credential is a bearer token | -| 403 | [error response](/http-api/#error-response) | The account has an outstanding required action | | 403 | [error response](/http-api/#error-response) | The caller is not a member of the webhook's guild | | 403 | [error response](/http-api/#error-response) | The caller lacks `MANAGE_WEBHOOKS` in the current or destination channel | | 4032 | [error response](/http-api/#error-response) | The destination channel is age restricted and the account is not age verified | @@ -1010,7 +1006,6 @@ The returned webhook object has the destination channel. Copies a channel follow | Caller holds the permission but has no enrolled authenticator | 400 `TWO_FACTOR_REQUIRED` | | Schema or image failure, or an avatar on a channel follower webhook | 400 `INVALID_FORM_BODY` | | Name is blocked, or the avatar hash is banned | 403 `CONTENT_BLOCKED` | -| Account has an outstanding required action | 403 `ACCOUNT_SUSPICIOUS_ACTIVITY` | | Unverified account in an age restricted destination channel | 403 `NSFW_CONTENT_AGE_RESTRICTED` | | Membership, channel access, or permission failure | 403 `MISSING_PERMISSIONS` | | Any other credential refusal | 403 `ACCESS_DENIED` | @@ -1051,13 +1046,12 @@ No operation restores the webhook or reissues its token. Messages it already cre | 400 | [error response](/http-api/#error-response) | Path parameter is not a valid snowflake | | 4001 | [error response](/http-api/#error-response) | The caller holds `MANAGE_WEBHOOKS` with no enrolled authenticator in an elevated-MFA guild | | 4032 | [error response](/http-api/#error-response) | Credential is a bearer token | -| 4032 | [error response](/http-api/#error-response) | The account has an outstanding required action | | 4032 | [error response](/http-api/#error-response) | The caller is not a member of the webhook's guild or lacks `MANAGE_WEBHOOKS` in the webhook's channel | | 404 | [error response](/http-api/#error-response) | Webhook does not exist, returning `UNKNOWN_WEBHOOK`, or its guild does not resolve, returning `UNKNOWN_GUILD` | 1 The missing-authenticator code is `TWO_FACTOR_REQUIRED`, returned only after Fluxer confirms the permission itself -2 `ACCOUNT_SUSPICIOUS_ACTIVITY` for an outstanding required action, `MISSING_PERMISSIONS` for a membership or permission failure, and `ACCESS_DENIED` otherwise +2 `MISSING_PERMISSIONS` for a membership or permission failure, and `ACCESS_DENIED` otherwise ### Side effects diff --git a/fluxer_docs/src/content/docs/operator/configuration.mdx b/fluxer_docs/src/content/docs/operator/configuration.mdx index db15ac0fa..e249b1439 100644 --- a/fluxer_docs/src/content/docs/operator/configuration.mdx +++ b/fluxer_docs/src/content/docs/operator/configuration.mdx @@ -994,10 +994,6 @@ Defaults to the inverse of `FLUXER_SELF_HOSTED`. Off by default on a self-hosted With feeds off, Fluxer checks none of this data. The first worker start with feeds off removes the URL feed file and every `malware_bazaar` file-SHA ban that no Admin added. File-SHA bans added through the Admin API stay. Turning feeds back on downloads the URLs within six hours and the hashes within twelve. Compose forwards it from `.env`. -#### `FLUXER_PHONE_VERIFICATION_ENABLED` - -Defaults to the inverse of `FLUXER_SELF_HOSTED`. Phone verification needs an external responder on the `rpc.phone.v1` NATS subjects, and none ships with Fluxer. With it off, the `VERY_HIGH` guild verification level is evaluated as `HIGH`, the guild settings stop offering it, and the API rejects it. Turn it on only when your own responder answers those subjects. Compose forwards it from `.env`. - #### `FLUXER_BREACHED_PASSWORD_CHECK_ENABLED` Defaults to the inverse of `FLUXER_SELF_HOSTED`. Breached password rejection. Sends the first five characters of the password's SHA-1 hash to `api.pwnedpasswords.com`. Off by default on a self-hosted instance. Compose forwards it from `.env`. @@ -1082,7 +1078,7 @@ Default `development`. The runtime mode. `development`, `production`, or `test`. #### `FLUXER_SELF_HOSTED` -Default `false`. The self-host switch. Compose sets `true`. It relaxes the production Postgres SSL requirement, seeds the limit tier, gates registration, donation and discovery controllers, keeps premium billing off until it is set up as [Payments](#payments) describes, and turns blocklist feeds and phone verification off. +Default `false`. The self-host switch. Compose sets `true`. It relaxes the production Postgres SSL requirement, seeds the limit tier, gates registration, donation and discovery controllers, keeps premium billing off until it is set up as [Payments](#payments) describes, and turns blocklist feeds off. `/_metrics` on `api`, `media-proxy`, `gateway`, and `push`, plus the Gateway's `/_health/ready`, `/_health/drain`, and `/_health/undrain`, are gated to loopback peers, so no proxy reaches them. The probes that work from outside are `/api/_health`, `/gateway/_health`, `/media/_health`, and the edge's own `/_health`. diff --git a/fluxer_docs/src/content/docs/topics/captcha.md b/fluxer_docs/src/content/docs/topics/captcha.md index e622bf81b..424335f6a 100644 --- a/fluxer_docs/src/content/docs/topics/captcha.md +++ b/fluxer_docs/src/content/docs/topics/captcha.md @@ -51,8 +51,6 @@ The following operations verify a CAPTCHA while the check is on. Create private channel is gated only on the group direct message path, where the request body has a `recipients` member. A one-to-one direct message request omits the field and is never gated. -[Send phone verification](/http-api/users/phone-verification/#send-phone-verification) verifies a CAPTCHA only when the phone verification service asks for one. It then answers and accepts the handshake the same way. When the check is off or the account is exempt, that send is refused with `PHONE_RATE_LIMIT_EXCEEDED` instead. - ## Exemption Fluxer skips the check in three cases, and the operation then proceeds with no CAPTCHA header. The authenticated account's email address is on an exempt domain. The authenticated account holds the [`APP_STORE_REVIEWER`](/admin-api/users/#account-flags) flag. The request body has an `email` that belongs to an account holding that flag. Discovery does not report exemptions, so clients must handle a challenge on every gated operation. diff --git a/fluxer_docs/src/content/docs/topics/rate-limits.md b/fluxer_docs/src/content/docs/topics/rate-limits.md index 3cd339af4..c5ae35d70 100644 --- a/fluxer_docs/src/content/docs/topics/rate-limits.md +++ b/fluxer_docs/src/content/docs/topics/rate-limits.md @@ -88,9 +88,7 @@ The `X-RateLimit-Scope` header is the scope that produced a denial. | global | The denial came from the global bucket | | shared1 | The denial came from an allowance that several accounts can exhaust for each other | -1 No route bucket declares a scope of its own, so every route bucket denial reports `user`. Phone verification and the announcement channel allowances are the live sources of `shared` - -Phone verification reports `shared` when the per-number send allowance or a number-scoped provider cooldown produced the denial. Both are keyed by the submitted number, so two accounts sending to one number share the allowance. +1 No route bucket declares a scope of its own, so every route bucket denial reports `user`. The announcement channel allowances are the live sources of `shared` [Crosspost message](/http-api/messages/#crosspost-message) reports `shared` for its channel publish allowance, and an edit of a published message reports it for the per-message edit allowance. Every member who publishes or edits draws on the same allowance. @@ -158,12 +156,8 @@ The 400 shape has no `retry_after` member, no `X-RateLimit-*` header, and no `Re | [Report message](/http-api/reports/#report-message) | 3 per hour, keyed by the reporter and the channel together | `RATE_LIMITED` | | [Report message](/http-api/reports/#report-message) | 20 per hour, keyed by the reported message, across all reporters | `RATE_LIMITED` | | [Report message](/http-api/reports/#report-message) | 4 per hour, keyed by the reporter and the guild together, for a guild message | `RATE_LIMITED` | -| [Send phone verification](/http-api/users/phone-verification/#send-phone-verification) | 3 per 6 hours, keyed by the authenticated account | `PHONE_RATE_LIMIT_EXCEEDED` | -| [Send phone verification](/http-api/users/phone-verification/#send-phone-verification) | 3 per 5 days, keyed by the submitted number | `PHONE_RATE_LIMIT_EXCEEDED` | | [Resend IP authorisation](/http-api/authentication/#resend-ip-authorisation) | Nothing in the first 30 seconds after the ticket was issued, keyed by the authorisation ticket | `IP_AUTHORIZATION_RESEND_COOLDOWN` | -SMS provider throttling can impose an additional cooldown. It returns `PHONE_RATE_LIMIT_EXCEEDED` with the remaining delay. - The Resend IP authorisation cooldown has no `X-RateLimit-*` header. It has a `Retry-After` header in whole seconds, and the body reports that delay again as a top-level `resend_available_in` and `retry_after`. A second resend on one ticket returns 400 `IP_AUTHORIZATION_RESEND_LIMIT_EXCEEDED`. The allowance never refills, and the ticket expires 15 minutes after it was issued. ### Announcement channel allowances diff --git a/fluxer_users/src/shard_impl.rs b/fluxer_users/src/shard_impl.rs index b913db51e..b6a5d949a 100644 --- a/fluxer_users/src/shard_impl.rs +++ b/fluxer_users/src/shard_impl.rs @@ -43,7 +43,7 @@ const FULL_USER_COLUMNS: &str = "\ premium_will_cancel, premium_onboarding_dismissed_at, \ has_ever_purchased, stripe_subscription_id, stripe_customer_id, \ gift_inventory_server_seq, gift_inventory_client_seq, \ - suspicious_activity_flags, terms_agreed_at, privacy_agreed_at, \ + terms_agreed_at, privacy_agreed_at, \ last_active_at, last_active_ip, \ temp_banned_until, pending_deletion_at, \ pending_bulk_message_deletion_at, \ @@ -51,7 +51,7 @@ const FULL_USER_COLUMNS: &str = "\ pending_bulk_message_deletion_message_count, \ password_last_changed_at, acls, \ deletion_reason_code, deletion_public_reason, deletion_audit_log_reason, \ - first_refund_at, version, has_verified_phone, \ + first_refund_at, version, \ premium_grace_ends_at, mention_flags, \ last_voice_activity_sharing_change_at, \ timezone, timezone_privacy_flags"; @@ -146,7 +146,6 @@ struct FullUserDbRow { stripe_customer_id: Option, gift_inventory_server_seq: Option, gift_inventory_client_seq: Option, - suspicious_activity_flags: Option, terms_agreed_at: OptionalTimestamp, privacy_agreed_at: OptionalTimestamp, last_active_at: OptionalTimestamp, @@ -163,7 +162,6 @@ struct FullUserDbRow { deletion_audit_log_reason: Option, first_refund_at: OptionalTimestamp, version: Option, - has_verified_phone: Option, premium_grace_ends_at: OptionalTimestamp, mention_flags: Option, last_voice_activity_sharing_change_at: OptionalTimestamp, @@ -226,7 +224,6 @@ struct FullUserKvRow { stripe_customer_id: Option, gift_inventory_server_seq: Option, gift_inventory_client_seq: Option, - suspicious_activity_flags: Option, terms_agreed_at: Option, privacy_agreed_at: Option, last_active_at: Option, @@ -243,7 +240,6 @@ struct FullUserKvRow { deletion_audit_log_reason: Option, first_refund_at: Option, version: Option, - has_verified_phone: Option, premium_grace_ends_at: Option, mention_flags: Option, last_voice_activity_sharing_change_at: Option, @@ -658,7 +654,6 @@ fn fluxer_system_user() -> User { stripe_customer_id: None, gift_inventory_server_seq: None, gift_inventory_client_seq: None, - suspicious_activity_flags: None, terms_agreed_at: None, privacy_agreed_at: None, last_active_at: None, @@ -675,7 +670,6 @@ fn fluxer_system_user() -> User { deletion_audit_log_reason: None, first_refund_at: None, version: 1, - has_verified_phone: None, premium_grace_ends_at: None, mention_flags: None, last_voice_activity_sharing_change_at: None, @@ -832,7 +826,6 @@ impl From for User { stripe_customer_id: row.stripe_customer_id, gift_inventory_server_seq: row.gift_inventory_server_seq, gift_inventory_client_seq: row.gift_inventory_client_seq, - suspicious_activity_flags: row.suspicious_activity_flags, terms_agreed_at: optional_timestamp_millis(row.terms_agreed_at), privacy_agreed_at: optional_timestamp_millis(row.privacy_agreed_at), last_active_at: optional_timestamp_millis(row.last_active_at), @@ -856,7 +849,6 @@ impl From for User { deletion_audit_log_reason: row.deletion_audit_log_reason, first_refund_at: optional_timestamp_millis(row.first_refund_at), version: row.version.unwrap_or_default(), - has_verified_phone: row.has_verified_phone, premium_grace_ends_at: optional_timestamp_millis(row.premium_grace_ends_at), mention_flags: row.mention_flags, last_voice_activity_sharing_change_at: optional_timestamp_millis( @@ -906,7 +898,6 @@ impl From for User { stripe_customer_id: row.stripe_customer_id, gift_inventory_server_seq: row.gift_inventory_server_seq, gift_inventory_client_seq: row.gift_inventory_client_seq, - suspicious_activity_flags: row.suspicious_activity_flags, terms_agreed_at: row.terms_agreed_at, privacy_agreed_at: row.privacy_agreed_at, last_active_at: row.last_active_at, @@ -925,7 +916,6 @@ impl From for User { deletion_audit_log_reason: row.deletion_audit_log_reason, first_refund_at: row.first_refund_at, version: row.version.unwrap_or_default(), - has_verified_phone: row.has_verified_phone, premium_grace_ends_at: row.premium_grace_ends_at, mention_flags: row.mention_flags, last_voice_activity_sharing_change_at: row.last_voice_activity_sharing_change_at, diff --git a/fluxer_users/src/types.rs b/fluxer_users/src/types.rs index e120fc304..0686293b1 100644 --- a/fluxer_users/src/types.rs +++ b/fluxer_users/src/types.rs @@ -78,7 +78,6 @@ pub struct User { pub stripe_customer_id: Option, pub gift_inventory_server_seq: Option, pub gift_inventory_client_seq: Option, - pub suspicious_activity_flags: Option, pub terms_agreed_at: Option, pub privacy_agreed_at: Option, pub last_active_at: Option, @@ -95,7 +94,6 @@ pub struct User { pub deletion_audit_log_reason: Option, pub first_refund_at: Option, pub version: i32, - pub has_verified_phone: Option, pub premium_grace_ends_at: Option, pub mention_flags: Option, pub last_voice_activity_sharing_change_at: Option, @@ -275,7 +273,6 @@ mod tests { stripe_customer_id: Some("cus_123".to_owned()), gift_inventory_server_seq: Some(3), gift_inventory_client_seq: Some(3), - suspicious_activity_flags: Some(0), terms_agreed_at: Some(1_781_526_896_789), privacy_agreed_at: Some(1_781_526_896_789), last_active_at: Some(1_781_526_896_789), @@ -292,7 +289,6 @@ mod tests { deletion_audit_log_reason: None, first_refund_at: None, version: 3, - has_verified_phone: Some(true), premium_grace_ends_at: None, mention_flags: Some(2), last_voice_activity_sharing_change_at: None, diff --git a/packages/config/src/MasterConfig.ts b/packages/config/src/MasterConfig.ts index af37c59d3..512a10051 100644 --- a/packages/config/src/MasterConfig.ts +++ b/packages/config/src/MasterConfig.ts @@ -286,7 +286,6 @@ export interface MasterConfig { }; instance: { self_hosted: boolean; - phone_verification_enabled?: boolean; auto_join_invite_code?: string; visionaries_guild_id?: string; visionaries_guild_visionary_role_id?: string; diff --git a/packages/config/src/__tests__/EnvironmentOverrides.test.ts b/packages/config/src/__tests__/EnvironmentOverrides.test.ts index cb19aaaff..ae4e4371c 100644 --- a/packages/config/src/__tests__/EnvironmentOverrides.test.ts +++ b/packages/config/src/__tests__/EnvironmentOverrides.test.ts @@ -290,15 +290,6 @@ describe('buildNamedFluxerEnvOverrides', () => { }); }); - test('maps the phone verification switch onto instance.phone_verification_enabled', () => { - expect(buildNamedFluxerEnvOverrides({FLUXER_PHONE_VERIFICATION_ENABLED: 'true'})).toEqual({ - instance: {phone_verification_enabled: true}, - }); - expect(buildNamedFluxerEnvOverrides({FLUXER_PHONE_VERIFICATION_ENABLED: 'false'})).toEqual({ - instance: {phone_verification_enabled: false}, - }); - }); - test('rejects a store enabled flag that is not a boolean', () => { expect(() => buildNamedFluxerEnvOverrides({FLUXER_APP_STORE_ENABLED: 'yes'})).toThrow( 'FLUXER_APP_STORE_ENABLED must be true or false', diff --git a/packages/config/src/config_loader/EnvironmentOverrides.ts b/packages/config/src/config_loader/EnvironmentOverrides.ts index ffee9befd..7c4feba4f 100644 --- a/packages/config/src/config_loader/EnvironmentOverrides.ts +++ b/packages/config/src/config_loader/EnvironmentOverrides.ts @@ -265,7 +265,6 @@ const NAMED_FLUXER_ENV_OVERRIDES: Record = { parse: parseBoolean, }, FLUXER_SELF_HOSTED: {path: ['instance', 'self_hosted'], parse: parseBoolean}, - FLUXER_PHONE_VERIFICATION_ENABLED: {path: ['instance', 'phone_verification_enabled'], parse: parseBoolean}, FLUXER_AUTO_JOIN_INVITE_CODE: {path: ['instance', 'auto_join_invite_code']}, FLUXER_VISIONARIES_GUILD_ID: {path: ['instance', 'visionaries_guild_id']}, FLUXER_VISIONARIES_GUILD_VISIONARY_ROLE_ID: {path: ['instance', 'visionaries_guild_visionary_role_id']}, diff --git a/packages/constants/src/AdminACLs.ts b/packages/constants/src/AdminACLs.ts index 1baaeb618..f878e2121 100644 --- a/packages/constants/src/AdminACLs.ts +++ b/packages/constants/src/AdminACLs.ts @@ -43,7 +43,6 @@ export const AdminACLs = { BULK_DELETE_USERS: 'bulk:delete:users', BULK_DELETE_USER_MESSAGES: 'bulk:delete:user_messages', BULK_UPDATE_GUILD_FEATURES: 'bulk:update:guild_features', - BULK_UPDATE_SUSPICIOUS_ACTIVITY: 'bulk:update:suspicious_activity', BULK_UPDATE_USER_FLAGS: 'bulk:update:user_flags', CSAM_SUBMIT_NCMEC: 'csam:submit_ncmec', DISCOVERY_REMOVE: 'discovery:remove', @@ -79,7 +78,6 @@ export const AdminACLs = { SYSTEM_DM_SEND: 'system_dm:send', USER_CANCEL_BULK_MESSAGE_DELETION: 'user:cancel:bulk_message_deletion', USER_DELETE: 'user:delete', - USER_DISABLE_SUSPICIOUS: 'user:disable:suspicious', USER_LIST_DM_CHANNELS: 'user:list:dm_channels', USER_LIST_GUILDS: 'user:list:guilds', USER_LIST_RELATIONSHIPS: 'user:list:relationships', @@ -96,9 +94,7 @@ export const AdminACLs = { USER_UPDATE_EMAIL: 'user:update:email', USER_UPDATE_FLAGS: 'user:update:flags', USER_UPDATE_MFA: 'user:update:mfa', - USER_UPDATE_PHONE: 'user:update:phone', USER_UPDATE_PROFILE: 'user:update:profile', - USER_UPDATE_SUSPICIOUS_ACTIVITY: 'user:update:suspicious_activity', USER_UPDATE_TRAITS: 'user:update:traits', USER_UPDATE_USERNAME: 'user:update:username', VOICE_REGION_CREATE: 'voice:region:create', diff --git a/packages/constants/src/ApiErrorCodes.ts b/packages/constants/src/ApiErrorCodes.ts index 463f51281..dff33122c 100644 --- a/packages/constants/src/ApiErrorCodes.ts +++ b/packages/constants/src/ApiErrorCodes.ts @@ -9,9 +9,9 @@ export const APIErrorCodes = { BAD_REQUEST: 'BAD_REQUEST', BLUESKY_OAUTH_AUTHORIZATION_FAILED: 'BLUESKY_OAUTH_AUTHORIZATION_FAILED', BLUESKY_OAUTH_NOT_ENABLED: 'BLUESKY_OAUTH_NOT_ENABLED', + ACCOUNT_LIMITED: 'ACCOUNT_LIMITED', ACCOUNT_SUSPENDED_PERMANENTLY: 'ACCOUNT_SUSPENDED_PERMANENTLY', ACCOUNT_SUSPENDED_TEMPORARILY: 'ACCOUNT_SUSPENDED_TEMPORARILY', - ACCOUNT_SUSPICIOUS_ACTIVITY: 'ACCOUNT_SUSPICIOUS_ACTIVITY', ACCOUNT_TOO_NEW_FOR_GUILD: 'ACCOUNT_TOO_NEW_FOR_GUILD', ACLS_MUST_BE_NON_EMPTY: 'ACLS_MUST_BE_NON_EMPTY', ADMIN_API_KEY_NOT_FOUND: 'ADMIN_API_KEY_NOT_FOUND', @@ -96,7 +96,6 @@ export const APIErrorCodes = { GENERAL_ERROR: 'GENERAL_ERROR', GONE: 'GONE', GIFT_CODE_ALREADY_REDEEMED: 'GIFT_CODE_ALREADY_REDEEMED', - GUILD_PHONE_VERIFICATION_REQUIRED: 'GUILD_PHONE_VERIFICATION_REQUIRED', GUILD_TEMPLATE_INVALID: 'GUILD_TEMPLATE_INVALID', GUILD_VERIFICATION_REQUIRED: 'GUILD_VERIFICATION_REQUIRED', HANDOFF_CODE_EXPIRED: 'HANDOFF_CODE_EXPIRED', @@ -121,12 +120,9 @@ export const APIErrorCodes = { INVALID_PASSKEY_BRIDGE_NONCE: 'INVALID_PASSKEY_BRIDGE_NONCE', INVALID_PERMISSIONS_INTEGER: 'INVALID_PERMISSIONS_INTEGER', INVALID_PERMISSIONS_NEGATIVE: 'INVALID_PERMISSIONS_NEGATIVE', - INVALID_PHONE_NUMBER: 'INVALID_PHONE_NUMBER', - INVALID_PHONE_VERIFICATION_CODE: 'INVALID_PHONE_VERIFICATION_CODE', INVALID_REQUEST: 'INVALID_REQUEST', INVALID_STREAM_KEY_FORMAT: 'INVALID_STREAM_KEY_FORMAT', INVALID_STREAM_THUMBNAIL_PAYLOAD: 'INVALID_STREAM_THUMBNAIL_PAYLOAD', - INVALID_SUSPICIOUS_FLAGS_FORMAT: 'INVALID_SUSPICIOUS_FLAGS_FORMAT', INVALID_SYSTEM_FLAG: 'INVALID_SYSTEM_FLAG', INVALID_TIMESTAMP: 'INVALID_TIMESTAMP', INVALID_TOKEN: 'INVALID_TOKEN', @@ -179,17 +175,6 @@ export const APIErrorCodes = { NOT_FRIENDS_WITH_USER: 'NOT_FRIENDS_WITH_USER', NSFW_CONTENT_AGE_RESTRICTED: 'NSFW_CONTENT_AGE_RESTRICTED', PASSKEY_AUTHENTICATION_FAILED: 'PASSKEY_AUTHENTICATION_FAILED', - PHONE_ADD_NOT_ELIGIBLE: 'PHONE_ADD_NOT_ELIGIBLE', - PHONE_ALREADY_USED: 'PHONE_ALREADY_USED', - PHONE_COUNTRY_NOT_SUPPORTED: 'PHONE_COUNTRY_NOT_SUPPORTED', - PHONE_GATE_ESCAPE_UNAVAILABLE: 'PHONE_GATE_ESCAPE_UNAVAILABLE', - PHONE_INBOUND_VERIFICATION_REQUIRED: 'PHONE_INBOUND_VERIFICATION_REQUIRED', - PHONE_LOOKUP_UNAVAILABLE: 'PHONE_LOOKUP_UNAVAILABLE', - PHONE_NUMBER_NOT_IN_SERVICE: 'PHONE_NUMBER_NOT_IN_SERVICE', - PHONE_NUMBER_NOT_MOBILE: 'PHONE_NUMBER_NOT_MOBILE', - PHONE_RATE_LIMIT_EXCEEDED: 'PHONE_RATE_LIMIT_EXCEEDED', - PHONE_VERIFICATION_NEEDS_REVIEW: 'PHONE_VERIFICATION_NEEDS_REVIEW', - PHONE_VERIFICATION_REQUIRED: 'PHONE_VERIFICATION_REQUIRED', PREMIUM_PURCHASE_BLOCKED: 'PREMIUM_PURCHASE_BLOCKED', PREVIEW_MUST_BE_JPEG: 'PREVIEW_MUST_BE_JPEG', PROCESSING_FAILED: 'PROCESSING_FAILED', @@ -205,7 +190,6 @@ export const APIErrorCodes = { SINGLE_COMMUNITY_CANNOT_LEAVE: 'SINGLE_COMMUNITY_CANNOT_LEAVE', INSTANCE_POLICY_TRANSITION_NOT_ALLOWED: 'INSTANCE_POLICY_TRANSITION_NOT_ALLOWED', SLOWMODE_RATE_LIMITED: 'SLOWMODE_RATE_LIMITED', - SMS_VERIFICATION_UNAVAILABLE: 'SMS_VERIFICATION_UNAVAILABLE', SSO_REQUIRED: 'SSO_REQUIRED', STORE_BILLING_UNAVAILABLE: 'STORE_BILLING_UNAVAILABLE', STORE_NOTIFICATION_UNAUTHORIZED: 'STORE_NOTIFICATION_UNAUTHORIZED', @@ -271,7 +255,6 @@ export const APIErrorCodes = { UNKNOWN_ROLE: 'UNKNOWN_ROLE', UNKNOWN_STICKER: 'UNKNOWN_STICKER', UNKNOWN_STORE_PURCHASE: 'UNKNOWN_STORE_PURCHASE', - UNKNOWN_SUSPICIOUS_FLAG: 'UNKNOWN_SUSPICIOUS_FLAG', UNKNOWN_USER_FLAG: 'UNKNOWN_USER_FLAG', UNKNOWN_USER: 'UNKNOWN_USER', UNKNOWN_VOICE_REGION: 'UNKNOWN_VOICE_REGION', diff --git a/packages/constants/src/GuildConstants.test.ts b/packages/constants/src/GuildConstants.test.ts index fa98a1ac0..19c39b27b 100644 --- a/packages/constants/src/GuildConstants.test.ts +++ b/packages/constants/src/GuildConstants.test.ts @@ -63,31 +63,18 @@ describe('resolveVoiceChannelBitrate', () => { }); describe('getEffectiveGuildVerificationLevel', () => { - it('returns the stored level when phone verification is available', () => { - expect(getEffectiveGuildVerificationLevel(GuildVerificationLevel.VERY_HIGH, false, true)).toBe( - GuildVerificationLevel.VERY_HIGH, - ); - expect(getEffectiveGuildVerificationLevel(GuildVerificationLevel.NONE, false, true)).toBe( - GuildVerificationLevel.NONE, - ); - }); - it('treats very high as high when phone verification is unavailable', () => { - expect(getEffectiveGuildVerificationLevel(GuildVerificationLevel.VERY_HIGH, false, false)).toBe( - GuildVerificationLevel.HIGH, - ); - expect(getEffectiveGuildVerificationLevel(GuildVerificationLevel.VERY_HIGH, true, false)).toBe( - GuildVerificationLevel.HIGH, - ); - expect(getEffectiveGuildVerificationLevel(GuildVerificationLevel.MEDIUM, false, false)).toBe( + it('returns the stored level for a guild outside discovery', () => { + expect(getEffectiveGuildVerificationLevel(GuildVerificationLevel.NONE, false)).toBe(GuildVerificationLevel.NONE); + expect(getEffectiveGuildVerificationLevel(GuildVerificationLevel.MEDIUM, false)).toBe( GuildVerificationLevel.MEDIUM, ); + expect(getEffectiveGuildVerificationLevel(GuildVerificationLevel.HIGH, false)).toBe(GuildVerificationLevel.HIGH); + }); + it('clamps a retired stored level to high', () => { + expect(getEffectiveGuildVerificationLevel(4, false)).toBe(GuildVerificationLevel.HIGH); + expect(getEffectiveGuildVerificationLevel(4, true)).toBe(GuildVerificationLevel.HIGH); }); it('raises a discoverable guild to at least low', () => { - expect(getEffectiveGuildVerificationLevel(GuildVerificationLevel.NONE, true, true)).toBe( - GuildVerificationLevel.LOW, - ); - expect(getEffectiveGuildVerificationLevel(GuildVerificationLevel.NONE, true, false)).toBe( - GuildVerificationLevel.LOW, - ); + expect(getEffectiveGuildVerificationLevel(GuildVerificationLevel.NONE, true)).toBe(GuildVerificationLevel.LOW); }); }); diff --git a/packages/constants/src/GuildConstants.ts b/packages/constants/src/GuildConstants.ts index 9d8cd41a4..fe638a624 100644 --- a/packages/constants/src/GuildConstants.ts +++ b/packages/constants/src/GuildConstants.ts @@ -15,17 +15,12 @@ export const GuildVerificationLevel = { LOW: 1, MEDIUM: 2, HIGH: 3, - VERY_HIGH: 4, } as const; export type GuildVerificationLevelValue = ValueOf; -export function getEffectiveGuildVerificationLevel( - verificationLevel: number, - isDiscoverable: boolean, - phoneVerificationEnabled: boolean, -): number { - const level = phoneVerificationEnabled ? verificationLevel : Math.min(verificationLevel, GuildVerificationLevel.HIGH); +export function getEffectiveGuildVerificationLevel(verificationLevel: number, isDiscoverable: boolean): number { + const level = Math.min(verificationLevel, GuildVerificationLevel.HIGH); if (!isDiscoverable) { return level; } diff --git a/packages/constants/src/UserConstants.ts b/packages/constants/src/UserConstants.ts index d53140141..efe579e87 100644 --- a/packages/constants/src/UserConstants.ts +++ b/packages/constants/src/UserConstants.ts @@ -58,19 +58,18 @@ export const UserFlags = { FRIENDLY_BOT_MANUAL_APPROVAL: 1n << 5n, SPAMMER: 1n << 6n, DELETED: 1n << 34n, - DISABLED_SUSPICIOUS_ACTIVITY: 1n << 35n, SELF_DELETED: 1n << 36n, DISABLED: 1n << 38n, HAS_SESSION_STARTED: 1n << 39n, RATE_LIMIT_BYPASS: 1n << 47n, REPORT_BANNED: 1n << 48n, VERIFIED_NOT_UNDERAGE: 1n << 49n, + ACCOUNT_LIMITED: 1n << 50n, HAS_DISMISSED_PREMIUM_ONBOARDING: 1n << 51n, APP_STORE_REVIEWER: 1n << 53n, STAFF_HIDDEN: 1n << 57n, AGE_VERIFIED_ADULT: 1n << 60n, - FORCE_INBOUND_PHONE_VERIFICATION: 1n << 61n, - NOT_SUSPICIOUS: 1n << 62n, + LIMIT_EXEMPT: 1n << 62n, } as const; export const UserFlagsDescriptions: Record = { STAFF: 'User is a staff member', @@ -81,19 +80,18 @@ export const UserFlagsDescriptions: Record = { FRIENDLY_BOT_MANUAL_APPROVAL: 'Bot requires manual approval for friend requests', SPAMMER: 'User is flagged as a spammer', DELETED: 'User account has been deleted', - DISABLED_SUSPICIOUS_ACTIVITY: 'User account disabled due to suspicious activity', SELF_DELETED: 'User account was self-deleted', DISABLED: 'User account is disabled', HAS_SESSION_STARTED: 'User has started a session', RATE_LIMIT_BYPASS: 'User can bypass rate limits', REPORT_BANNED: 'User is banned from reporting', VERIFIED_NOT_UNDERAGE: 'User is verified as not underage', + ACCOUNT_LIMITED: 'User account is limited', HAS_DISMISSED_PREMIUM_ONBOARDING: 'User has dismissed premium onboarding', APP_STORE_REVIEWER: 'User is an app store reviewer', STAFF_HIDDEN: 'User staff status is hidden from public flags', AGE_VERIFIED_ADULT: 'User has verified their age as an adult via credit card verification', - FORCE_INBOUND_PHONE_VERIFICATION: 'User is forced through inbound phone verification, for debugging', - NOT_SUSPICIOUS: 'User is permanently exempt from automatic suspicious-activity flagging', + LIMIT_EXEMPT: 'User is permanently exempt from account limitation', }; export const PremiumFlags = { DISCRIMINATOR: 1 << 0, @@ -131,7 +129,8 @@ export const LEGACY_PREMIUM_FLAGS_MASK: bigint = LEGACY_PREMIUM_FLAG_BITS_TO_NEW (mask, [legacy]) => mask | legacy, 0n, ); -export const LEGACY_DEAD_USER_FLAGS_MASK: bigint = (1n << 52n) | (1n << 54n) | (1n << 55n) | (1n << 56n) | (1n << 58n); +export const LEGACY_DEAD_USER_FLAGS_MASK: bigint = + (1n << 35n) | (1n << 52n) | (1n << 54n) | (1n << 55n) | (1n << 56n) | (1n << 58n) | (1n << 61n); export function extractPremiumFlagsFromLegacyUserFlags(legacyFlags: bigint): number { let result = 0; @@ -170,49 +169,6 @@ export const PublicUserFlagsDescriptions: Record = { - REQUIRE_VERIFIED_EMAIL: 'Requires verified email address', - REQUIRE_REVERIFIED_EMAIL: 'Requires re-verified email address', - REQUIRE_VERIFIED_PHONE: 'Requires verified phone number', - REQUIRE_REVERIFIED_PHONE: 'Requires re-verified phone number', - REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE: 'Requires verified email or verified phone', - REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE: 'Requires re-verified email or re-verified phone', - REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE: 'Requires verified email or re-verified phone', - REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE: 'Requires re-verified email or re-verified phone', - REQUIRE_INBOUND_PHONE_VERIFICATION: 'Requires inbound SMS verification (user must text code to platform number)', -}; -export const ALL_SUSPICIOUS_ACTIVITY_FLAGS = Object.values(SuspiciousActivityFlags).reduce( - (mask, flag) => mask | flag, - 0, -); -export const DEFERRED_PHONE_ON_COMMUNITY_JOIN = 1 << 16; -export const PHONE_GATE_PROMOTED_FROM_DEFERRAL = 1 << 17; -export const DEFERRABLE_PHONE_FLAGS = - SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | SuspiciousActivityFlags.REQUIRE_REVERIFIED_PHONE; -export const NEVER_DEFERRABLE_PHONE_FLAGS = SuspiciousActivityFlags.REQUIRE_INBOUND_PHONE_VERIFICATION; -export function imposePhoneRequirements(currentFlags: number, addedFlags: number): number { - const nextFlags = currentFlags | addedFlags; - if ((addedFlags & DEFERRABLE_PHONE_FLAGS) === 0) { - return nextFlags; - } - return nextFlags & ~DEFERRED_PHONE_ON_COMMUNITY_JOIN & ~PHONE_GATE_PROMOTED_FROM_DEFERRAL; -} -export const ADMIN_PHONE_TOGGLE_CLEARABLE_FLAGS = - DEFERRED_PHONE_ON_COMMUNITY_JOIN | - PHONE_GATE_PROMOTED_FROM_DEFERRAL | - SuspiciousActivityFlags.REQUIRE_VERIFIED_PHONE | - SuspiciousActivityFlags.REQUIRE_INBOUND_PHONE_VERIFICATION; export const ThemeTypes = { DARK: 'dark', DARK_LEGACY: 'dark_legacy', diff --git a/packages/constants/src/ValidationErrorCodes.ts b/packages/constants/src/ValidationErrorCodes.ts index 7ea414322..87995799c 100644 --- a/packages/constants/src/ValidationErrorCodes.ts +++ b/packages/constants/src/ValidationErrorCodes.ts @@ -172,7 +172,6 @@ export const ValidationErrorCodes = { PASSWORD_IS_TOO_COMMON: 'PASSWORD_IS_TOO_COMMON', PASSWORD_LENGTH_INVALID: 'PASSWORD_LENGTH_INVALID', PASSWORD_NOT_SET: 'PASSWORD_NOT_SET', - PHONE_NUMBER_INVALID_FORMAT: 'PHONE_NUMBER_INVALID_FORMAT', PRECEDING_CHANNEL_MUST_SHARE_PARENT: 'PRECEDING_CHANNEL_MUST_SHARE_PARENT', PRECEDING_CHANNEL_NOT_IN_GUILD: 'PRECEDING_CHANNEL_NOT_IN_GUILD', PRONOUNS_CHANGED_TOO_MANY_TIMES: 'PRONOUNS_CHANGED_TOO_MANY_TIMES', diff --git a/packages/errors/src/__tests__/DomainErrors.test.ts b/packages/errors/src/__tests__/DomainErrors.test.ts index 10f881b55..536a1bd81 100644 --- a/packages/errors/src/__tests__/DomainErrors.test.ts +++ b/packages/errors/src/__tests__/DomainErrors.test.ts @@ -3,13 +3,6 @@ import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; import {HttpStatus} from '@fluxer/constants/src/HttpConstants'; import {ValidationErrorCodes} from '@fluxer/constants/src/ValidationErrorCodes'; -import {InvalidPhoneNumberError} from '@fluxer/errors/src/domains/auth/InvalidPhoneNumberError'; -import {PhoneCountryNotSupportedError} from '@fluxer/errors/src/domains/auth/PhoneCountryNotSupportedError'; -import {PhoneInboundVerificationRequiredError} from '@fluxer/errors/src/domains/auth/PhoneInboundVerificationRequiredError'; -import {PhoneLookupUnavailableError} from '@fluxer/errors/src/domains/auth/PhoneLookupUnavailableError'; -import {PhoneNumberNotInServiceError} from '@fluxer/errors/src/domains/auth/PhoneNumberNotInServiceError'; -import {PhoneNumberNotMobileError} from '@fluxer/errors/src/domains/auth/PhoneNumberNotMobileError'; -import {PhoneVerificationNeedsReviewError} from '@fluxer/errors/src/domains/auth/PhoneVerificationNeedsReviewError'; import {UnknownChannelError} from '@fluxer/errors/src/domains/channel/UnknownChannelError'; import {UnknownMessageError} from '@fluxer/errors/src/domains/channel/UnknownMessageError'; import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; @@ -25,6 +18,7 @@ import {StorePurchaseInvalidError} from '@fluxer/errors/src/domains/payment/Stor import {StorePurchaseOwnedByOtherAccountError} from '@fluxer/errors/src/domains/payment/StorePurchaseOwnedByOtherAccountError'; import {StorePurchaseSandboxNotEntitledError} from '@fluxer/errors/src/domains/payment/StorePurchaseSandboxNotEntitledError'; import {UnknownStorePurchaseError} from '@fluxer/errors/src/domains/payment/UnknownStorePurchaseError'; +import {AccountLimitedError} from '@fluxer/errors/src/domains/user/AccountLimitedError'; import {FluxerError} from '@fluxer/errors/src/FluxerError'; import {describe, expect, it} from 'vitest'; @@ -71,23 +65,7 @@ it.each([BadRequestError, ForbiddenError, NotFoundError])( ); describe.each([ - [APIErrorCodes.INVALID_PHONE_NUMBER, InvalidPhoneNumberError, BadRequestError, HttpStatus.BAD_REQUEST], - [APIErrorCodes.PHONE_COUNTRY_NOT_SUPPORTED, PhoneCountryNotSupportedError, BadRequestError, HttpStatus.BAD_REQUEST], - [ - APIErrorCodes.PHONE_INBOUND_VERIFICATION_REQUIRED, - PhoneInboundVerificationRequiredError, - BadRequestError, - HttpStatus.BAD_REQUEST, - ], - [APIErrorCodes.PHONE_LOOKUP_UNAVAILABLE, PhoneLookupUnavailableError, BadRequestError, HttpStatus.BAD_REQUEST], - [APIErrorCodes.PHONE_NUMBER_NOT_IN_SERVICE, PhoneNumberNotInServiceError, BadRequestError, HttpStatus.BAD_REQUEST], - [APIErrorCodes.PHONE_NUMBER_NOT_MOBILE, PhoneNumberNotMobileError, BadRequestError, HttpStatus.BAD_REQUEST], - [ - APIErrorCodes.PHONE_VERIFICATION_NEEDS_REVIEW, - PhoneVerificationNeedsReviewError, - BadRequestError, - HttpStatus.BAD_REQUEST, - ], + [APIErrorCodes.ACCOUNT_LIMITED, AccountLimitedError, ForbiddenError, HttpStatus.FORBIDDEN], [APIErrorCodes.UNKNOWN_CHANNEL, UnknownChannelError, NotFoundError, HttpStatus.NOT_FOUND], [APIErrorCodes.UNKNOWN_MESSAGE, UnknownMessageError, NotFoundError, HttpStatus.NOT_FOUND], [APIErrorCodes.STORE_PURCHASE_INVALID, StorePurchaseInvalidError, BadRequestError, HttpStatus.BAD_REQUEST], diff --git a/packages/errors/src/domains/auth/GuildPhoneVerificationRequiredError.ts b/packages/errors/src/domains/auth/GuildPhoneVerificationRequiredError.ts deleted file mode 100644 index b4295919c..000000000 --- a/packages/errors/src/domains/auth/GuildPhoneVerificationRequiredError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {ForbiddenError} from '@fluxer/errors/src/domains/core/ForbiddenError'; - -export class GuildPhoneVerificationRequiredError extends ForbiddenError { - constructor() { - super({ - code: APIErrorCodes.GUILD_PHONE_VERIFICATION_REQUIRED, - }); - } -} diff --git a/packages/errors/src/domains/auth/InvalidPhoneNumberError.ts b/packages/errors/src/domains/auth/InvalidPhoneNumberError.ts deleted file mode 100644 index a6a5fc68a..000000000 --- a/packages/errors/src/domains/auth/InvalidPhoneNumberError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class InvalidPhoneNumberError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.INVALID_PHONE_NUMBER, - }); - } -} diff --git a/packages/errors/src/domains/auth/InvalidPhoneVerificationCodeError.ts b/packages/errors/src/domains/auth/InvalidPhoneVerificationCodeError.ts deleted file mode 100644 index 4585538ed..000000000 --- a/packages/errors/src/domains/auth/InvalidPhoneVerificationCodeError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class InvalidPhoneVerificationCodeError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.INVALID_PHONE_VERIFICATION_CODE, - }); - } -} diff --git a/packages/errors/src/domains/auth/PhoneAlreadyUsedError.ts b/packages/errors/src/domains/auth/PhoneAlreadyUsedError.ts deleted file mode 100644 index 7c555d57f..000000000 --- a/packages/errors/src/domains/auth/PhoneAlreadyUsedError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class PhoneAlreadyUsedError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.PHONE_ALREADY_USED, - }); - } -} diff --git a/packages/errors/src/domains/auth/PhoneCountryNotSupportedError.ts b/packages/errors/src/domains/auth/PhoneCountryNotSupportedError.ts deleted file mode 100644 index a6a100a22..000000000 --- a/packages/errors/src/domains/auth/PhoneCountryNotSupportedError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class PhoneCountryNotSupportedError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.PHONE_COUNTRY_NOT_SUPPORTED, - }); - } -} diff --git a/packages/errors/src/domains/auth/PhoneInboundVerificationRequiredError.ts b/packages/errors/src/domains/auth/PhoneInboundVerificationRequiredError.ts deleted file mode 100644 index d59d64611..000000000 --- a/packages/errors/src/domains/auth/PhoneInboundVerificationRequiredError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class PhoneInboundVerificationRequiredError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.PHONE_INBOUND_VERIFICATION_REQUIRED, - }); - } -} diff --git a/packages/errors/src/domains/auth/PhoneLookupUnavailableError.ts b/packages/errors/src/domains/auth/PhoneLookupUnavailableError.ts deleted file mode 100644 index 35ad53163..000000000 --- a/packages/errors/src/domains/auth/PhoneLookupUnavailableError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class PhoneLookupUnavailableError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.PHONE_LOOKUP_UNAVAILABLE, - }); - } -} diff --git a/packages/errors/src/domains/auth/PhoneNumberNotInServiceError.ts b/packages/errors/src/domains/auth/PhoneNumberNotInServiceError.ts deleted file mode 100644 index 7554bb8cf..000000000 --- a/packages/errors/src/domains/auth/PhoneNumberNotInServiceError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class PhoneNumberNotInServiceError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.PHONE_NUMBER_NOT_IN_SERVICE, - }); - } -} diff --git a/packages/errors/src/domains/auth/PhoneNumberNotMobileError.ts b/packages/errors/src/domains/auth/PhoneNumberNotMobileError.ts deleted file mode 100644 index b1507d279..000000000 --- a/packages/errors/src/domains/auth/PhoneNumberNotMobileError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class PhoneNumberNotMobileError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.PHONE_NUMBER_NOT_MOBILE, - }); - } -} diff --git a/packages/errors/src/domains/auth/PhoneVerificationNeedsReviewError.ts b/packages/errors/src/domains/auth/PhoneVerificationNeedsReviewError.ts deleted file mode 100644 index 5061e6c5e..000000000 --- a/packages/errors/src/domains/auth/PhoneVerificationNeedsReviewError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class PhoneVerificationNeedsReviewError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.PHONE_VERIFICATION_NEEDS_REVIEW, - }); - } -} diff --git a/packages/errors/src/domains/auth/PhoneVerificationRequiredError.ts b/packages/errors/src/domains/auth/PhoneVerificationRequiredError.ts deleted file mode 100644 index 5a3d8eb35..000000000 --- a/packages/errors/src/domains/auth/PhoneVerificationRequiredError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class PhoneVerificationRequiredError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.PHONE_VERIFICATION_REQUIRED, - }); - } -} diff --git a/packages/errors/src/domains/auth/SmsVerificationUnavailableError.ts b/packages/errors/src/domains/auth/SmsVerificationUnavailableError.ts deleted file mode 100644 index 5aa1ae05f..000000000 --- a/packages/errors/src/domains/auth/SmsVerificationUnavailableError.ts +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class SmsVerificationUnavailableError extends BadRequestError { - constructor() { - super({code: APIErrorCodes.SMS_VERIFICATION_UNAVAILABLE}); - } -} diff --git a/packages/errors/src/domains/core/InvalidSuspiciousFlagsFormatError.ts b/packages/errors/src/domains/core/InvalidSuspiciousFlagsFormatError.ts deleted file mode 100644 index 83c822e5c..000000000 --- a/packages/errors/src/domains/core/InvalidSuspiciousFlagsFormatError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class InvalidSuspiciousFlagsFormatError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.INVALID_SUSPICIOUS_FLAGS_FORMAT, - }); - } -} diff --git a/packages/errors/src/domains/core/UnknownSuspiciousFlagError.ts b/packages/errors/src/domains/core/UnknownSuspiciousFlagError.ts deleted file mode 100644 index c8fae5589..000000000 --- a/packages/errors/src/domains/core/UnknownSuspiciousFlagError.ts +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class UnknownSuspiciousFlagError extends BadRequestError { - constructor() { - super({code: APIErrorCodes.UNKNOWN_SUSPICIOUS_FLAG}); - } -} diff --git a/packages/errors/src/domains/auth/PhoneAddNotEligibleError.ts b/packages/errors/src/domains/user/AccountLimitedError.ts similarity index 63% rename from packages/errors/src/domains/auth/PhoneAddNotEligibleError.ts rename to packages/errors/src/domains/user/AccountLimitedError.ts index 740c0cd40..cc65bcc91 100644 --- a/packages/errors/src/domains/auth/PhoneAddNotEligibleError.ts +++ b/packages/errors/src/domains/user/AccountLimitedError.ts @@ -3,10 +3,8 @@ import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; import {ForbiddenError} from '@fluxer/errors/src/domains/core/ForbiddenError'; -export class PhoneAddNotEligibleError extends ForbiddenError { +export class AccountLimitedError extends ForbiddenError { constructor() { - super({ - code: APIErrorCodes.PHONE_ADD_NOT_ELIGIBLE, - }); + super({code: APIErrorCodes.ACCOUNT_LIMITED}); } } diff --git a/packages/errors/src/domains/user/AccountSuspiciousActivityError.ts b/packages/errors/src/domains/user/AccountSuspiciousActivityError.ts deleted file mode 100644 index fc3452c64..000000000 --- a/packages/errors/src/domains/user/AccountSuspiciousActivityError.ts +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {ForbiddenError} from '@fluxer/errors/src/domains/core/ForbiddenError'; - -export class AccountSuspiciousActivityError extends ForbiddenError { - constructor(suspiciousActivityFlags: number) { - super({ - code: APIErrorCodes.ACCOUNT_SUSPICIOUS_ACTIVITY, - data: { - data: { - suspicious_activity_flags: suspiciousActivityFlags, - }, - }, - }); - } -} diff --git a/packages/errors/src/domains/user/PhoneGateEscapeUnavailableError.ts b/packages/errors/src/domains/user/PhoneGateEscapeUnavailableError.ts deleted file mode 100644 index f7c1ad156..000000000 --- a/packages/errors/src/domains/user/PhoneGateEscapeUnavailableError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-License-Identifier: AGPL-3.0-or-later - -import {APIErrorCodes} from '@fluxer/constants/src/ApiErrorCodes'; -import {BadRequestError} from '@fluxer/errors/src/domains/core/BadRequestError'; - -export class PhoneGateEscapeUnavailableError extends BadRequestError { - constructor() { - super({ - code: APIErrorCodes.PHONE_GATE_ESCAPE_UNAVAILABLE, - }); - } -} diff --git a/packages/errors/src/i18n/ErrorCodeMappings.ts b/packages/errors/src/i18n/ErrorCodeMappings.ts index d4f9442eb..24a69dc50 100644 --- a/packages/errors/src/i18n/ErrorCodeMappings.ts +++ b/packages/errors/src/i18n/ErrorCodeMappings.ts @@ -10,9 +10,9 @@ type AllErrorCodes = APIErrorCode | ValidationErrorCode; export const ErrorCodeToI18nKey = { [APIErrorCodes.ACCESS_DENIED]: 'permissions.missing_access', + [APIErrorCodes.ACCOUNT_LIMITED]: 'account.limited', [APIErrorCodes.ACCOUNT_SUSPENDED_PERMANENTLY]: 'account.suspended_permanently', [APIErrorCodes.ACCOUNT_SUSPENDED_TEMPORARILY]: 'account.suspended_temporarily', - [APIErrorCodes.ACCOUNT_SUSPICIOUS_ACTIVITY]: 'account.locked_suspicious_activity', [APIErrorCodes.ACCOUNT_TOO_NEW_FOR_GUILD]: 'account.too_new_for_guild', [APIErrorCodes.ACLS_MUST_BE_NON_EMPTY]: 'admin_and_system.acls_must_be_non_empty', [APIErrorCodes.ADMIN_API_KEY_NOT_FOUND]: 'admin_and_system.admin_api_key_not_found', @@ -114,7 +114,6 @@ export const ErrorCodeToI18nKey = { [APIErrorCodes.GENERAL_ERROR]: 'admin_and_system.general_error', [APIErrorCodes.GIFT_CODE_ALREADY_REDEEMED]: 'invites_and_gifts.gift_code_already_redeemed', [APIErrorCodes.GONE]: 'http.gone', - [APIErrorCodes.GUILD_PHONE_VERIFICATION_REQUIRED]: 'account.phone_required_for_guild', [APIErrorCodes.GUILD_TEMPLATE_INVALID]: 'channels_and_guilds.guild_template_invalid', [APIErrorCodes.GUILD_VERIFICATION_REQUIRED]: 'account.guild_verification_required', [APIErrorCodes.HANDOFF_CODE_EXPIRED]: 'auth_and_oauth.handoff_code_expired', @@ -149,8 +148,6 @@ export const ErrorCodeToI18nKey = { [APIErrorCodes.INVALID_PASSKEY_BRIDGE_NONCE]: 'auth_and_oauth.passkey_bridge_nonce_invalid', [APIErrorCodes.INVALID_PERMISSIONS_INTEGER]: 'misc.invalid_permissions_integer', [APIErrorCodes.INVALID_PERMISSIONS_NEGATIVE]: 'misc.invalid_permissions_negative', - [APIErrorCodes.INVALID_PHONE_NUMBER]: 'phone.invalid_number', - [APIErrorCodes.INVALID_PHONE_VERIFICATION_CODE]: 'phone.verification_code_invalid', [ValidationErrorCodes.INVALID_PASSWORD]: 'email.invalid_or_password', [ValidationErrorCodes.INVALID_MFA_CODE]: 'mfa_and_passkeys.invalid_mfa_code', [ValidationErrorCodes.INVALID_SSO_AUTHORIZATION_CODE]: 'auth_and_oauth.invalid_sso_authorization_code', @@ -176,7 +173,6 @@ export const ErrorCodeToI18nKey = { 'messages.forward_reference_requires_channel_and_message', [APIErrorCodes.INVALID_STREAM_KEY_FORMAT]: 'calls_and_voice.invalid_stream_key_format', [APIErrorCodes.INVALID_STREAM_THUMBNAIL_PAYLOAD]: 'calls_and_voice.invalid_stream_thumbnail_payload', - [APIErrorCodes.INVALID_SUSPICIOUS_FLAGS_FORMAT]: 'admin_and_system.invalid_suspicious_flags_format', [APIErrorCodes.INVALID_SYSTEM_FLAG]: 'admin_and_system.invalid_system_flag', [APIErrorCodes.INVALID_TIMESTAMP]: 'admin_and_system.invalid_timestamp', [APIErrorCodes.INVALID_TOKEN]: 'auth_and_oauth.invalid_or_expired_authorization_token', @@ -231,17 +227,6 @@ export const ErrorCodeToI18nKey = { [APIErrorCodes.NOT_IMPLEMENTED]: 'http.not_implemented', [APIErrorCodes.NSFW_CONTENT_AGE_RESTRICTED]: 'content_and_safety.nsfw_age_restricted', [APIErrorCodes.PASSKEY_AUTHENTICATION_FAILED]: 'mfa_and_passkeys.passkey_authentication_failed', - [APIErrorCodes.PHONE_ADD_NOT_ELIGIBLE]: 'phone.add_not_eligible', - [APIErrorCodes.PHONE_ALREADY_USED]: 'phone.number_already_used', - [APIErrorCodes.PHONE_COUNTRY_NOT_SUPPORTED]: 'phone.country_not_supported', - [APIErrorCodes.PHONE_GATE_ESCAPE_UNAVAILABLE]: 'account.phone_gate_escape_unavailable', - [APIErrorCodes.PHONE_INBOUND_VERIFICATION_REQUIRED]: 'phone.inbound_verification_required', - [APIErrorCodes.PHONE_LOOKUP_UNAVAILABLE]: 'phone.lookup_unavailable', - [APIErrorCodes.PHONE_NUMBER_NOT_IN_SERVICE]: 'phone.number_not_in_service', - [APIErrorCodes.PHONE_NUMBER_NOT_MOBILE]: 'phone.number_not_mobile', - [APIErrorCodes.PHONE_RATE_LIMIT_EXCEEDED]: 'rate_limits.phone_rate_limit_exceeded', - [APIErrorCodes.PHONE_VERIFICATION_NEEDS_REVIEW]: 'phone.verification_needs_review', - [APIErrorCodes.PHONE_VERIFICATION_REQUIRED]: 'phone.verification_required', [APIErrorCodes.PREMIUM_PURCHASE_BLOCKED]: 'premium_and_plans.no_active_subscription', [APIErrorCodes.PREVIEW_MUST_BE_JPEG]: 'attachments_and_uploads.preview_must_be_jpeg', [APIErrorCodes.PROCESSING_FAILED]: 'admin_and_system.processing_failed', @@ -257,7 +242,6 @@ export const ErrorCodeToI18nKey = { [APIErrorCodes.SERVICE_UNAVAILABLE]: 'http.service_unavailable', [APIErrorCodes.SESSION_TOKEN_MISMATCH]: 'account.session_token_mismatch', [APIErrorCodes.SLOWMODE_RATE_LIMITED]: 'rate_limits.slowmode_rate_limited', - [APIErrorCodes.SMS_VERIFICATION_UNAVAILABLE]: 'http.service_unavailable', [APIErrorCodes.SSO_REQUIRED]: 'misc.invalid_request_generic', [APIErrorCodes.STORE_BILLING_UNAVAILABLE]: 'store_billing.unavailable', [APIErrorCodes.STORE_NOTIFICATION_UNAUTHORIZED]: 'store_billing.notification_unauthorized', @@ -322,7 +306,6 @@ export const ErrorCodeToI18nKey = { [APIErrorCodes.UNKNOWN_ROLE]: 'unknown_entities.unknown_role', [APIErrorCodes.UNKNOWN_STICKER]: 'stickers_and_emojis.unknown_sticker', [APIErrorCodes.UNKNOWN_STORE_PURCHASE]: 'store_billing.unknown_purchase', - [APIErrorCodes.UNKNOWN_SUSPICIOUS_FLAG]: 'admin_and_system.unknown_suspicious_flag', [APIErrorCodes.UNKNOWN_USER_FLAG]: 'unknown_entities.unknown_user_flag', [APIErrorCodes.UNKNOWN_USER]: 'unknown_entities.unknown_user', [APIErrorCodes.UNKNOWN_VOICE_REGION]: 'calls_and_voice.unknown_voice_region', @@ -546,7 +529,6 @@ export const ErrorCodeToI18nKey = { 'mfa_and_passkeys.must_enable_2fa_before_enforcing_for_mods', [ValidationErrorCodes.TOTP_NOT_ENABLED]: 'mfa_and_passkeys.totp_not_enabled', [ValidationErrorCodes.NAME_EMPTY_AFTER_NORMALIZATION]: 'names_and_normalization.name_empty_after_normalization', - [ValidationErrorCodes.PHONE_NUMBER_INVALID_FORMAT]: 'phone.number_format_required', [ValidationErrorCodes.ROWS_IS_REQUIRED]: 'limits.rows_required', [ValidationErrorCodes.SNOWFLAKE_OUT_OF_RANGE]: 'misc.invalid_snowflake', [ValidationErrorCodes.STRING_LENGTH_EXACT]: 'limits.string_length_exact', diff --git a/packages/errors/src/i18n/ErrorI18n.test.ts b/packages/errors/src/i18n/ErrorI18n.test.ts index 4d5baf86f..0c23570a1 100644 --- a/packages/errors/src/i18n/ErrorI18n.test.ts +++ b/packages/errors/src/i18n/ErrorI18n.test.ts @@ -140,68 +140,15 @@ describe('ErrorI18n', () => { } }); }); - describe('phone rejection messages', () => { - it.each([ - [ - 'PHONE_COUNTRY_NOT_SUPPORTED', - "We don't send verification texts to this country. Use a mobile number from another country, or email support@fluxer.app and a person will review your account.", - ], - [ - 'PHONE_INBOUND_VERIFICATION_REQUIRED', - 'This number is verified by texting us instead of us texting you. Start phone verification again to get the code and the number to text.', - ], - [ - 'PHONE_LOOKUP_UNAVAILABLE', - 'Our phone number check is down right now, so we stopped before sending your code. This is on us, not your number. Wait a few minutes and try the same number again.', - ], - [ - 'PHONE_NUMBER_NOT_IN_SERVICE', - "Your carrier says this number isn't in service. Check the number and try again, or email support@fluxer.app if it's correct.", - ], - [ - 'PHONE_NUMBER_NOT_MOBILE', - "This isn't a mobile number, so it can't receive our text. Use a mobile number, or email support@fluxer.app if you think that's wrong.", - ], - [ - 'PHONE_VERIFICATION_NEEDS_REVIEW', - "We couldn't verify this number automatically. Email support@fluxer.app and a person will review your account.", - ], - ])('resolves %s to its own message', (code, expected) => { - const message = getErrorMessageUnsafe(code, 'en-US'); - expect(message).toBe(expected); + describe('account limited message', () => { + it('resolves ACCOUNT_LIMITED to its own message', () => { + expect(getErrorMessageUnsafe('ACCOUNT_LIMITED', 'en-US')).toBe( + 'Your account is limited. Check your email for how to lift it.', + ); expect(consoleWarnSpy).not.toHaveBeenCalled(); }); - it.each([ - 'PHONE_COUNTRY_NOT_SUPPORTED', - 'PHONE_NUMBER_NOT_IN_SERVICE', - 'PHONE_NUMBER_NOT_MOBILE', - 'PHONE_VERIFICATION_NEEDS_REVIEW', - ])('routes %s to support', (code) => { - expect(getErrorMessageUnsafe(code, 'en-US')).toContain('support@fluxer.app'); - }); - it('blames us for a lookup outage and invites the same number again', () => { - const message = getErrorMessage('phone.lookup_unavailable', 'en-US'); - expect(message).toContain('This is on us, not your number.'); - expect(message).toContain('try the same number again'); - expect(message.toLowerCase()).not.toContain('invalid'); - }); - it('leaves the two fraud reasons indistinguishable', () => { - expect(getErrorMessageUnsafe('PHONE_VERIFICATION_NEEDS_REVIEW', 'en-US')).toBe( - getErrorMessage('phone.verification_needs_review', 'en-US'), - ); - }); it('falls back to the source message when the locale has no catalog', () => { - expect(getErrorMessage('phone.lookup_unavailable', 'zz-ZZ')).toBe( - getErrorMessage('phone.lookup_unavailable', 'en-US'), - ); - }); - - it('serves a real translation for a locale that has one', () => { - for (const locale of ['fr', 'de', 'ja', 'pt-BR']) { - expect(getErrorMessage('phone.lookup_unavailable', locale)).not.toBe( - getErrorMessage('phone.lookup_unavailable', 'en-US'), - ); - } + expect(getErrorMessage('account.limited', 'zz-ZZ')).toBe(getErrorMessage('account.limited', 'en-US')); }); }); }); diff --git a/packages/errors/src/i18n/ErrorI18nMessages.ts b/packages/errors/src/i18n/ErrorI18nMessages.ts index eb11f2a97..de05cebb7 100644 --- a/packages/errors/src/i18n/ErrorI18nMessages.ts +++ b/packages/errors/src/i18n/ErrorI18nMessages.ts @@ -7,9 +7,7 @@ export const ERROR_I18N_MESSAGES = { 'account.email_verification_required': 'Email verification is required for this action.', 'account.guild_verification_required': 'Community verification is required.', 'account.ip_authorization_required': 'IP authorization is required.', - 'account.locked_suspicious_activity': 'Your account is locked due to suspicious activity.', - 'account.phone_gate_escape_unavailable': 'This account cannot postpone the phone verification check.', - 'account.phone_required_for_guild': 'You need to add a phone number to send messages in this community.', + 'account.limited': 'Your account is limited. Check your email for how to lift it.', 'account.sensitive_content_filter_age_restricted': "This sensitive content filter isn't available for your age group.", 'account.session_timeout': 'Session timed out. Refresh the page and log in again.', @@ -34,7 +32,6 @@ export const ERROR_I18N_MESSAGES = { 'admin_and_system.guild_id_required_for_search_index': 'Community ID is required for channel message and member search indexes.', 'admin_and_system.invalid_integer_format': 'Invalid integer format.', - 'admin_and_system.invalid_suspicious_flags_format': 'Invalid suspicious flags format.', 'admin_and_system.invalid_system_flag': 'Invalid system flag.', 'admin_and_system.invalid_timeout_value': 'Invalid timeout value.', 'admin_and_system.invalid_timestamp': 'Invalid timestamp.', @@ -46,7 +43,6 @@ export const ERROR_I18N_MESSAGES = { 'admin_and_system.resource_locked': 'This resource is being modified. Please try again shortly.', 'admin_and_system.test_harness_disabled': 'Test harness is disabled.', 'admin_and_system.test_harness_forbidden': 'Test harness is forbidden.', - 'admin_and_system.unknown_suspicious_flag': 'Unknown suspicious flag.', 'admin_and_system.update_failed': "We couldn't update the resource. Please try again.", 'admin_and_system.user_must_be_bot_for_system_user': 'User must be a bot to be marked as a system user.', 'age_verification.already_verified': "You've already completed age verification.", @@ -459,24 +455,6 @@ export const ERROR_I18N_MESSAGES = { 'permissions.user_not_in_channel': "This user isn't in the channel.", 'permissions.user_not_in_voice': "This user isn't in voice.", 'permissions.user_owns_guilds': 'This user owns communities.', - 'phone.add_not_eligible': 'You are not eligible to add a phone number to your account.', - 'phone.country_not_supported': - "We don't send verification texts to this country. Use a mobile number from another country, or email support@fluxer.app and a person will review your account.", - 'phone.inbound_verification_required': - 'This number is verified by texting us instead of us texting you. Start phone verification again to get the code and the number to text.', - 'phone.invalid_number': 'Invalid phone number.', - 'phone.lookup_unavailable': - 'Our phone number check is down right now, so we stopped before sending your code. This is on us, not your number. Wait a few minutes and try the same number again.', - 'phone.number_already_used': 'Phone number is already in use.', - 'phone.number_format_required': 'Phone number must be in E.164 format (for example, +1234567890).', - 'phone.number_not_in_service': - "Your carrier says this number isn't in service. Check the number and try again, or email support@fluxer.app if it's correct.", - 'phone.number_not_mobile': - "This isn't a mobile number, so it can't receive our text. Use a mobile number, or email support@fluxer.app if you think that's wrong.", - 'phone.verification_code_invalid': 'Invalid phone verification code.', - 'phone.verification_needs_review': - "We couldn't verify this number automatically. Email support@fluxer.app and a person will review your account.", - 'phone.verification_required': 'Phone verification is required.', 'premium_and_plans.animated_avatars_require_premium': 'Animated avatars require Premium.', 'premium_and_plans.banners_require_premium': 'Banners require Premium.', 'premium_and_plans.bio_requires_premium_for_length': 'A bio longer than {maxLength} characters requires Premium.', @@ -502,7 +480,6 @@ export const ERROR_I18N_MESSAGES = { 'rate_limits.ip_authorization_resend_limit_exceeded': 'IP authorization resend limit exceeded.', 'rate_limits.message_crosspost_rate_limited': 'This channel has reached its publishing limit. It can publish 10 messages in a row, then one more every 6 minutes.', - 'rate_limits.phone_rate_limit_exceeded': 'Phone rate limit exceeded.', 'rate_limits.pronouns_changed_too_often': "You've changed your pronouns too often recently. Please try again in {minutes, plural, one {# minute} other {# minutes}}.", 'rate_limits.published_message_edit_rate_limited': diff --git a/packages/errors/src/i18n/locales/ar.ts b/packages/errors/src/i18n/locales/ar.ts index 011ac83a2..00db0ba78 100644 --- a/packages/errors/src/i18n/locales/ar.ts +++ b/packages/errors/src/i18n/locales/ar.ts @@ -7,9 +7,7 @@ const ERROR_I18N_AR_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "يلزم التحقق من بريدك الإلكتروني لهذا الإجراء.", "account.guild_verification_required": "يلزم استيفاء متطلبات التحقق في هذا المجتمع.", "account.ip_authorization_required": "يلزم تفويض عنوان IP.", - "account.locked_suspicious_activity": "حسابك مغلق بسبب نشاط مشبوه.", - "account.phone_gate_escape_unavailable": "لا يمكن تأجيل التحقق من الهاتف لهذا الحساب.", - "account.phone_required_for_guild": "يجب إضافة رقم هاتف لإرسال الرسائل في هذا المجتمع.", + "account.limited": "حسابك مقيّد. راجع بريدك الإلكتروني لمعرفة كيفية رفع التقييد.", "account.sensitive_content_filter_age_restricted": "فلتر المحتوى الحساس هذا غير متاح لفئتك العمرية.", "account.session_timeout": "انتهت صلاحية الجلسة. حدّث الصفحة وسجّل الدخول مرة أخرى.", "account.session_token_mismatch": "عدم تطابق رمز الجلسة.", @@ -32,7 +30,6 @@ const ERROR_I18N_AR_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "محتوى النموذج غير صالح.", "admin_and_system.invalid_format": "القيمة المقدمة بتنسيق غير صالح.", "admin_and_system.invalid_integer_format": "تنسيق العدد الصحيح غير صالح.", - "admin_and_system.invalid_suspicious_flags_format": "تنسيق إشارات الاشتباه غير صالح.", "admin_and_system.invalid_system_flag": "إشارة النظام غير صالحة.", "admin_and_system.invalid_timeout_value": "قيمة المهلة غير صالحة.", "admin_and_system.invalid_timestamp": "الطابع الزمني غير صالح.", @@ -44,7 +41,6 @@ const ERROR_I18N_AR_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "فشل التحقق من الاستجابة: {errors}.", "admin_and_system.test_harness_disabled": "أداة الاختبار معطلة.", "admin_and_system.test_harness_forbidden": "أداة الاختبار محظورة.", - "admin_and_system.unknown_suspicious_flag": "إشارة اشتباه غير معروفة.", "admin_and_system.update_failed": "لم نتمكن من تحديث المورد. حاول مجددًا.", "admin_and_system.user_must_be_bot_for_system_user": "يجب أن يكون المستخدم بوتًا ليتم تحديده كمستخدم نظام.", "age_verification.already_verified": "لقد أكملت التحقق من العمر بالفعل.", @@ -394,18 +390,6 @@ const ERROR_I18N_AR_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "المستخدم ليس في القناة.", "permissions.user_not_in_voice": "المستخدم ليس في قناة صوتية.", "permissions.user_owns_guilds": "المستخدم يمتلك مجتمعات.", - "phone.add_not_eligible": "لست مؤهلًا لإضافة رقم هاتف إلى حسابك.", - "phone.country_not_supported": "لا نرسل رسائل التحقق النصية إلى هذا البلد. استخدم رقم هاتف محمول من بلد آخر، أو راسل support@fluxer.app وسيراجع أحد الأشخاص حسابك.", - "phone.inbound_verification_required": "يتم التحقق من هذا الرقم بأن ترسل أنت رسالة نصية إلينا، لا بأن نرسل نحن رسالة إليك. ابدأ التحقق من الهاتف من جديد للحصول على الرمز وعلى الرقم الذي سترسل الرسالة إليه.", - "phone.invalid_number": "رقم هاتف غير صالح.", - "phone.lookup_unavailable": "خدمة التحقق من أرقام الهواتف لدينا متوقفة حاليًا، لذلك توقفنا قبل إرسال الرمز إليك. الخلل من جهتنا، لا في رقمك. انتظر بضع دقائق ثم جرب الرقم نفسه مرة أخرى.", - "phone.number_already_used": "رقم الهاتف قيد الاستخدام بالفعل.", - "phone.number_format_required": "يجب أن يكون رقم الهاتف بتنسيق E.164 (مثال: +1234567890).", - "phone.number_not_in_service": "تفيد شركة الاتصالات بأن هذا الرقم غير قيد الخدمة. تحقق من الرقم وحاول مرة أخرى، أو راسل support@fluxer.app إذا كان الرقم صحيحًا.", - "phone.number_not_mobile": "هذا ليس رقم هاتف محمول، لذلك لا يمكنه استقبال رسالتنا النصية. استخدم رقم هاتف محمول، أو راسل support@fluxer.app إذا كنت تعتقد أن هذا خطأ.", - "phone.verification_code_invalid": "رمز تحقق الهاتف غير صالح.", - "phone.verification_needs_review": "لم نتمكن من التحقق من هذا الرقم تلقائيًا. راسل support@fluxer.app وسيراجع أحد الأشخاص حسابك.", - "phone.verification_required": "التحقق من رقم الهاتف مطلوب.", "premium_and_plans.animated_avatars_require_premium": "الصور الرمزية المتحركة تتطلب Premium.", "premium_and_plans.banners_require_premium": "اللافتات تتطلب Premium.", "premium_and_plans.bio_requires_premium_for_length": "السيرة الذاتية التي تزيد عن {maxLength} حرفًا تتطلب Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_AR_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "يجب الانتظار قبل إعادة إرسال تفويض IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "تم تجاوز حد إعادة إرسال تفويض IP.", "rate_limits.message_crosspost_rate_limited": "وصلت هذه القناة إلى حد النشر. يمكنها نشر 10 رسائل متتالية، ثم رسالة واحدة إضافية كل 6 دقائق.", - "rate_limits.phone_rate_limit_exceeded": "تم تجاوز حد طلبات الهاتف.", "rate_limits.pronouns_changed_too_often": "لقد غيّرت ضمائرك مرات كثيرة مؤخرًا. حاول مجددًا بعد {minutes, plural, zero {# دقيقة} one {دقيقة واحدة} two {دقيقتين} few {# دقائق} many {# دقيقة} other {# دقيقة}}.", "rate_limits.published_message_edit_rate_limited": "وصلت هذه الرسالة المنشورة إلى حد التعديل. يمكن تعديلها 3 مرات متتالية، ثم مرة واحدة إضافية كل 20 دقيقة.", "rate_limits.rate_limited": "يتم تقييد معدل طلباتك.", diff --git a/packages/errors/src/i18n/locales/bg.ts b/packages/errors/src/i18n/locales/bg.ts index 318492dae..81402f4ad 100644 --- a/packages/errors/src/i18n/locales/bg.ts +++ b/packages/errors/src/i18n/locales/bg.ts @@ -7,9 +7,7 @@ const ERROR_I18N_BG_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "За това действие се изисква потвърден имейл.", "account.guild_verification_required": "Изисква се потвърждение за общността.", "account.ip_authorization_required": "Необходимо е IP удостоверяване.", - "account.locked_suspicious_activity": "Акаунтът ти е заключен поради подозрителна активност.", - "account.phone_gate_escape_unavailable": "Отлагането на телефонната проверка не е достъпно за този акаунт.", - "account.phone_required_for_guild": "Трябва да добавиш телефонен номер, за да изпращаш съобщения в тази общност.", + "account.limited": "Акаунтът ти е ограничен. Провери имейла си, за да разбереш как да премахнеш ограничението.", "account.sensitive_content_filter_age_restricted": "Този филтър за чувствително съдържание не е наличен за твоята възрастова група.", "account.session_timeout": "Сесията изтече. Презареди страницата и влез отново.", "account.session_token_mismatch": "Несъответствие на токена за сесия.", @@ -32,7 +30,6 @@ const ERROR_I18N_BG_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Невалидно тяло на формуляра.", "admin_and_system.invalid_format": "Предоставената стойност е с невалиден формат.", "admin_and_system.invalid_integer_format": "Невалиден формат на цяло число.", - "admin_and_system.invalid_suspicious_flags_format": "Невалиден формат на подозрителните флагове.", "admin_and_system.invalid_system_flag": "Невалиден системен флаг.", "admin_and_system.invalid_timeout_value": "Невалидна стойност за изчакването.", "admin_and_system.invalid_timestamp": "Невалиден времеви печат.", @@ -44,7 +41,6 @@ const ERROR_I18N_BG_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Валидацията на отговора е неуспешна: {errors}.", "admin_and_system.test_harness_disabled": "Тестовата система е деактивирана.", "admin_and_system.test_harness_forbidden": "Тестовата система е забранена.", - "admin_and_system.unknown_suspicious_flag": "Неизвестен подозрителен флаг.", "admin_and_system.update_failed": "Не успяхме да актуализираме ресурса. Опитай отново.", "admin_and_system.user_must_be_bot_for_system_user": "Потребителят трябва да бъде бот, за да бъде маркиран като системен потребител.", "age_verification.already_verified": "Вече премина проверката за възраст.", @@ -394,18 +390,6 @@ const ERROR_I18N_BG_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Този потребител не е в канала.", "permissions.user_not_in_voice": "Този потребител не е в гласов канал.", "permissions.user_owns_guilds": "Този потребител притежава общности.", - "phone.add_not_eligible": "Не можеш да добавяш телефонен номер към акаунта си.", - "phone.country_not_supported": "Не изпращаме SMS с код за потвърждение до тази държава. Използвай мобилен номер от друга държава или пиши на support@fluxer.app и човек ще прегледа акаунта ти.", - "phone.inbound_verification_required": "Този номер се потвърждава, като ти ни изпратиш SMS, а не ние на теб. Започни потвърждението на телефона отново, за да получиш кода и номера, на който да го изпратиш.", - "phone.invalid_number": "Невалиден телефонен номер.", - "phone.lookup_unavailable": "Проверката ни на телефонни номера в момента не работи, затова спряхме, преди да изпратим кода ти. Вината е наша, не на номера ти. Изчакай няколко минути и опитай отново със същия номер.", - "phone.number_already_used": "Телефонният номер вече се използва.", - "phone.number_format_required": "Телефонният номер трябва да е във формат E.164 (например +1234567890).", - "phone.number_not_in_service": "Операторът ти съобщава, че този номер не е активен. Провери номера и опитай отново или пиши на support@fluxer.app, ако номерът е верен.", - "phone.number_not_mobile": "Това не е мобилен номер, затова не може да получи нашия SMS. Използвай мобилен номер или пиши на support@fluxer.app, ако смяташ, че това е грешка.", - "phone.verification_code_invalid": "Невалиден код за потвърждение на телефон.", - "phone.verification_needs_review": "Не успяхме да потвърдим този номер автоматично. Пиши на support@fluxer.app и човек ще прегледа акаунта ти.", - "phone.verification_required": "Изисква се потвърждение на телефон.", "premium_and_plans.animated_avatars_require_premium": "Анимираните аватари изискват Premium.", "premium_and_plans.banners_require_premium": "Банерите изискват Premium.", "premium_and_plans.bio_requires_premium_for_length": "Биография с повече от {maxLength} знака изисква Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_BG_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Повторното изпращане на IP оторизация е в период на изчакване.", "rate_limits.ip_authorization_resend_limit_exceeded": "Лимитът за повторно изпращане на IP оторизация е надвишен.", "rate_limits.message_crosspost_rate_limited": "Този канал достигна лимита си за публикуване. Може да публикува 10 съобщения подред, след което още едно на всеки 6 минути.", - "rate_limits.phone_rate_limit_exceeded": "Лимитът на заявките за телефон е надвишен.", "rate_limits.pronouns_changed_too_often": "Сменяш местоименията си твърде често напоследък. Опитай отново след {minutes} {minutes, plural, one {минута} other {минути}}.", "rate_limits.published_message_edit_rate_limited": "Това публикувано съобщение достигна лимита си за редакции. Може да бъде редактирано 3 пъти подред, след което още веднъж на всеки 20 минути.", "rate_limits.rate_limited": "Достигна лимита на заявките.", diff --git a/packages/errors/src/i18n/locales/cs.ts b/packages/errors/src/i18n/locales/cs.ts index 63643a4b5..e09a9180f 100644 --- a/packages/errors/src/i18n/locales/cs.ts +++ b/packages/errors/src/i18n/locales/cs.ts @@ -7,9 +7,7 @@ const ERROR_I18N_CS_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Pro tuto akci je vyžadováno ověření e-mailu.", "account.guild_verification_required": "Vyžaduje se ověření komunity.", "account.ip_authorization_required": "Vyžaduje se autorizace IP adresy.", - "account.locked_suspicious_activity": "Váš účet je uzamčen kvůli podezřelé aktivitě.", - "account.phone_gate_escape_unavailable": "Odložení ověření telefonu není pro tento účet dostupné.", - "account.phone_required_for_guild": "Pro odesílání zpráv v této komunitě musíte přidat telefonní číslo.", + "account.limited": "Váš účet je omezený. Jak omezení zrušit, najdete ve svém e-mailu.", "account.sensitive_content_filter_age_restricted": "Tento filtr citlivého obsahu není pro vaši věkovou skupinu dostupný.", "account.session_timeout": "Platnost relace vypršela. Obnovte stránku a přihlaste se znovu.", "account.session_token_mismatch": "Token relace nesouhlasí.", @@ -32,7 +30,6 @@ const ERROR_I18N_CS_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Neplatný obsah formuláře.", "admin_and_system.invalid_format": "Zadaná hodnota je v neplatném formátu.", "admin_and_system.invalid_integer_format": "Neplatný formát celého čísla.", - "admin_and_system.invalid_suspicious_flags_format": "Neplatný formát podezřelých příznaků.", "admin_and_system.invalid_system_flag": "Neplatný systémový příznak.", "admin_and_system.invalid_timeout_value": "Neplatná hodnota časového limitu.", "admin_and_system.invalid_timestamp": "Neplatné časové razítko.", @@ -44,7 +41,6 @@ const ERROR_I18N_CS_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Ověření odpovědi selhalo: {errors}.", "admin_and_system.test_harness_disabled": "Testovací prostředí je vypnuté.", "admin_and_system.test_harness_forbidden": "Přístup k testovacímu prostředí je zakázán.", - "admin_and_system.unknown_suspicious_flag": "Neznámý příznak podezřelé aktivity.", "admin_and_system.update_failed": "Nepodařilo se aktualizovat zdroj. Zkuste to znovu.", "admin_and_system.user_must_be_bot_for_system_user": "Uživatel musí být bot, aby mohl být označen jako systémový uživatel.", "age_verification.already_verified": "Ověření věku už bylo dokončeno.", @@ -394,18 +390,6 @@ const ERROR_I18N_CS_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Tento uživatel není v kanálu.", "permissions.user_not_in_voice": "Tento uživatel není v hlasovém hovoru.", "permissions.user_owns_guilds": "Tento uživatel vlastní komunity.", - "phone.add_not_eligible": "Nesplňujete podmínky pro přidání telefonního čísla ke svému účtu.", - "phone.country_not_supported": "Do této země ověřovací SMS neposíláme. Použijte mobilní číslo z jiné země nebo napište na support@fluxer.app a váš účet posoudí člověk.", - "phone.inbound_verification_required": "Toto číslo se ověřuje tak, že SMS pošlete vy nám, ne my vám. Spusťte ověření telefonu znovu a získáte kód i číslo, na které ho máte poslat.", - "phone.invalid_number": "Neplatné telefonní číslo.", - "phone.lookup_unavailable": "Ověřování telefonních čísel momentálně nefunguje, proto jsme kód neodeslali. Chyba je na naší straně, ne ve vašem čísle. Počkejte několik minut a zkuste stejné číslo znovu.", - "phone.number_already_used": "Telefonní číslo je již používáno.", - "phone.number_format_required": "Telefonní číslo musí být ve formátu E.164 (například +1234567890).", - "phone.number_not_in_service": "Váš operátor hlásí, že toto číslo není v provozu. Zkontrolujte číslo a zkuste to znovu, nebo napište na support@fluxer.app, pokud je správné.", - "phone.number_not_mobile": "Toto není mobilní číslo, takže na něj naše SMS nemůže dorazit. Použijte mobilní číslo, nebo napište na support@fluxer.app, pokud se domníváte, že jde o omyl.", - "phone.verification_code_invalid": "Neplatný ověřovací kód telefonu.", - "phone.verification_needs_review": "Toto číslo se nepodařilo ověřit automaticky. Napište na support@fluxer.app a váš účet posoudí člověk.", - "phone.verification_required": "Je vyžadováno ověření telefonu.", "premium_and_plans.animated_avatars_require_premium": "Animované avatary vyžadují tarif Premium.", "premium_and_plans.banners_require_premium": "Bannery vyžadují tarif Premium.", "premium_and_plans.bio_requires_premium_for_length": "Bio delší než {maxLength} znaků vyžaduje tarif Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_CS_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Před opětovným odesláním autorizace IP adresy je nutné počkat.", "rate_limits.ip_authorization_resend_limit_exceeded": "Byl překročen limit opětovného odesílání autorizace IP adresy.", "rate_limits.message_crosspost_rate_limited": "Tento kanál dosáhl limitu pro zveřejňování. Může zveřejnit 10 zpráv za sebou a potom jednu další každých 6 minut.", - "rate_limits.phone_rate_limit_exceeded": "Byl překročen limit četnosti požadavků pro telefonní číslo.", "rate_limits.pronouns_changed_too_often": "V poslední době jste měnili svá zájmena příliš často. Zkuste to znovu za {minutes, plural, one {# minutu} few {# minuty} many {# minuty} other {# minut}}.", "rate_limits.published_message_edit_rate_limited": "Tato zveřejněná zpráva dosáhla limitu úprav. Lze ji upravit 3krát za sebou a potom jednou každých 20 minut.", "rate_limits.rate_limited": "Byl překročen limit četnosti požadavků.", diff --git a/packages/errors/src/i18n/locales/da.ts b/packages/errors/src/i18n/locales/da.ts index ed0b24d5e..3f1242609 100644 --- a/packages/errors/src/i18n/locales/da.ts +++ b/packages/errors/src/i18n/locales/da.ts @@ -7,9 +7,7 @@ const ERROR_I18N_DA_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "E-mailbekræftelse er påkrævet for denne handling.", "account.guild_verification_required": "Verificering i fællesskabet er påkrævet.", "account.ip_authorization_required": "Godkendelse af IP-adressen er påkrævet.", - "account.locked_suspicious_activity": "Din konto er låst på grund af mistænkelig aktivitet.", - "account.phone_gate_escape_unavailable": "Bekræftelsen af telefonnummeret kan ikke udsættes for denne konto.", - "account.phone_required_for_guild": "Du skal tilføje et telefonnummer for at sende beskeder i dette fællesskab.", + "account.limited": "Din konto er begrænset. Tjek din e-mail for at se, hvordan du ophæver begrænsningen.", "account.sensitive_content_filter_age_restricted": "Dette filter til følsomt indhold er ikke tilgængeligt for din aldersgruppe.", "account.session_timeout": "Sessionen er udløbet. Opdater siden, og log ind igen.", "account.session_token_mismatch": "Sessionstokenet stemmer ikke overens.", @@ -32,7 +30,6 @@ const ERROR_I18N_DA_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Ugyldigt formularindhold.", "admin_and_system.invalid_format": "Den angivne værdi er i et ugyldigt format.", "admin_and_system.invalid_integer_format": "Ugyldigt heltalsformat.", - "admin_and_system.invalid_suspicious_flags_format": "Ugyldigt format for mistænkelige flag.", "admin_and_system.invalid_system_flag": "Ugyldigt systemflag.", "admin_and_system.invalid_timeout_value": "Ugyldig timeout-værdi.", "admin_and_system.invalid_timestamp": "Ugyldigt tidsstempel.", @@ -44,7 +41,6 @@ const ERROR_I18N_DA_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Validering af svar mislykkedes: {errors}.", "admin_and_system.test_harness_disabled": "Testmiljøet er deaktiveret.", "admin_and_system.test_harness_forbidden": "Adgang til testmiljøet er ikke tilladt.", - "admin_and_system.unknown_suspicious_flag": "Ukendt mistænkeligt flag.", "admin_and_system.update_failed": "Ressourcen kunne ikke opdateres. Prøv igen.", "admin_and_system.user_must_be_bot_for_system_user": "Brugeren skal være en bot for at kunne markeres som systembruger.", "age_verification.already_verified": "Du har allerede gennemført aldersbekræftelse.", @@ -394,18 +390,6 @@ const ERROR_I18N_DA_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Denne bruger er ikke i kanalen.", "permissions.user_not_in_voice": "Denne bruger er ikke i et taleopkald.", "permissions.user_owns_guilds": "Denne bruger ejer fællesskaber.", - "phone.add_not_eligible": "Du opfylder ikke kravene til at tilføje et telefonnummer til din konto.", - "phone.country_not_supported": "Vi sender ikke bekræftelses-sms'er til dette land. Brug et mobilnummer fra et andet land, eller skriv til support@fluxer.app, så gennemgår en medarbejder din konto.", - "phone.inbound_verification_required": "Dette nummer bekræftes ved, at du sender os en sms, og ikke ved, at vi sender dig en. Start telefonbekræftelsen igen for at få koden og det nummer, du skal sende den til.", - "phone.invalid_number": "Ugyldigt telefonnummer.", - "phone.lookup_unavailable": "Vores kontrol af telefonnumre er nede lige nu, så vi stoppede, inden din kode blev sendt. Fejlen ligger hos os, ikke i dit nummer. Vent et par minutter, og prøv det samme nummer igen.", - "phone.number_already_used": "Telefonnummeret er allerede i brug.", - "phone.number_format_required": "Telefonnummeret skal være i E.164-format (f.eks. +1234567890).", - "phone.number_not_in_service": "Dit teleselskab oplyser, at dette nummer ikke er aktivt. Kontroller nummeret, og prøv igen, eller skriv til support@fluxer.app, hvis det er korrekt.", - "phone.number_not_mobile": "Dette er ikke et mobilnummer, så det kan ikke modtage vores sms. Brug et mobilnummer, eller skriv til support@fluxer.app, hvis du mener, at det er forkert.", - "phone.verification_code_invalid": "Ugyldig telefonbekræftelseskode.", - "phone.verification_needs_review": "Vi kunne ikke bekræfte dette nummer automatisk. Skriv til support@fluxer.app, så gennemgår en medarbejder din konto.", - "phone.verification_required": "Telefonbekræftelse er påkrævet.", "premium_and_plans.animated_avatars_require_premium": "Animerede avatarer kræver et Premium-abonnement.", "premium_and_plans.banners_require_premium": "Bannere kræver et Premium-abonnement.", "premium_and_plans.bio_requires_premium_for_length": "En biografi længere end {maxLength} tegn kræver et Premium-abonnement.", @@ -423,7 +407,6 @@ const ERROR_I18N_DA_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Du skal vente, før du kan få godkendelsen af IP-adressen sendt igen.", "rate_limits.ip_authorization_resend_limit_exceeded": "Du har nået grænsen for at få godkendelsen af IP-adressen sendt igen.", "rate_limits.message_crosspost_rate_limited": "Denne kanal har nået sin grænse for offentliggørelser. Den kan offentliggøre 10 beskeder i træk og derefter én mere hvert 6. minut.", - "rate_limits.phone_rate_limit_exceeded": "Grænsen for telefonanmodninger er overskredet.", "rate_limits.pronouns_changed_too_often": "Du har ændret dine pronominer for ofte for nylig. Prøv igen om {minutes, plural, one {# minut} other {# minutter}}.", "rate_limits.published_message_edit_rate_limited": "Denne offentliggjorte besked har nået sin grænse for redigeringer. Den kan redigeres 3 gange i træk og derefter én gang mere hvert 20. minut.", "rate_limits.rate_limited": "Du sender for mange anmodninger.", diff --git a/packages/errors/src/i18n/locales/de.ts b/packages/errors/src/i18n/locales/de.ts index e267f6dd4..59eb69dfd 100644 --- a/packages/errors/src/i18n/locales/de.ts +++ b/packages/errors/src/i18n/locales/de.ts @@ -7,9 +7,7 @@ const ERROR_I18N_DE_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Für diese Aktion ist eine Bestätigung deiner E-Mail-Adresse erforderlich.", "account.guild_verification_required": "Community-Verifizierung ist erforderlich.", "account.ip_authorization_required": "IP-Autorisierung ist erforderlich.", - "account.locked_suspicious_activity": "Dein Account ist wegen verdächtiger Aktivitäten gesperrt.", - "account.phone_gate_escape_unavailable": "Für diesen Account kann die Verifizierung der Telefonnummer nicht aufgeschoben werden.", - "account.phone_required_for_guild": "Du musst eine Telefonnummer hinzufügen, um Nachrichten in dieser Community senden zu können.", + "account.limited": "Dein Account ist eingeschränkt. In deinen E-Mails erfährst du, wie du die Einschränkung aufhebst.", "account.sensitive_content_filter_age_restricted": "Dieser Filter für sensible Inhalte ist für deine Altersgruppe nicht verfügbar.", "account.session_timeout": "Sitzung abgelaufen. Lade die Seite neu und melde dich erneut an.", "account.session_token_mismatch": "Das Sitzungstoken stimmt nicht überein.", @@ -32,7 +30,6 @@ const ERROR_I18N_DE_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Ungültiger Formularinhalt.", "admin_and_system.invalid_format": "Der angegebene Wert hat ein ungültiges Format.", "admin_and_system.invalid_integer_format": "Ungültiges Ganzzahlformat.", - "admin_and_system.invalid_suspicious_flags_format": "Ungültiges Format für verdächtige Flags.", "admin_and_system.invalid_system_flag": "Ungültiges System-Flag.", "admin_and_system.invalid_timeout_value": "Ungültiger Timeout-Wert.", "admin_and_system.invalid_timestamp": "Ungültiger Zeitstempel.", @@ -44,7 +41,6 @@ const ERROR_I18N_DE_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Antwortvalidierung fehlgeschlagen: {errors}.", "admin_and_system.test_harness_disabled": "Test-Harness ist deaktiviert.", "admin_and_system.test_harness_forbidden": "Test-Harness ist verboten.", - "admin_and_system.unknown_suspicious_flag": "Unbekanntes verdächtiges Flag.", "admin_and_system.update_failed": "Wir konnten die Ressource nicht aktualisieren. Bitte versuche es erneut.", "admin_and_system.user_must_be_bot_for_system_user": "Ein Benutzer muss ein Bot sein, um als Systembenutzer markiert zu werden.", "age_verification.already_verified": "Du hast die Altersbestätigung bereits abgeschlossen.", @@ -394,18 +390,6 @@ const ERROR_I18N_DE_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Dieser Benutzer ist nicht im Kanal.", "permissions.user_not_in_voice": "Dieser Benutzer ist nicht im Sprachkanal.", "permissions.user_owns_guilds": "Dieser Benutzer besitzt Communitys.", - "phone.add_not_eligible": "Du kannst deinem Account keine Telefonnummer hinzufügen.", - "phone.country_not_supported": "Wir senden keine Bestätigungs-SMS in dieses Land. Verwende eine Mobilnummer aus einem anderen Land oder schreibe an support@fluxer.app, dann prüft eine Person deinen Account.", - "phone.inbound_verification_required": "Diese Nummer wird bestätigt, indem du uns eine SMS schickst, und nicht, indem wir dir eine schicken. Starte die Telefonbestätigung erneut, um den Code und die Nummer zu erhalten, an die du ihn senden musst.", - "phone.invalid_number": "Ungültige Telefonnummer.", - "phone.lookup_unavailable": "Unsere Prüfung von Telefonnummern ist gerade gestört, deshalb haben wir abgebrochen, bevor dein Code gesendet wurde. Das liegt an uns, nicht an deiner Nummer. Warte ein paar Minuten und versuche es dann mit derselben Nummer erneut.", - "phone.number_already_used": "Telefonnummer wird bereits verwendet.", - "phone.number_format_required": "Die Telefonnummer muss dem E.164-Format entsprechen (z. B. +1234567890).", - "phone.number_not_in_service": "Dein Mobilfunkanbieter meldet, dass diese Nummer nicht aktiv ist. Überprüfe die Nummer und versuche es erneut, oder schreibe an support@fluxer.app, wenn sie korrekt ist.", - "phone.number_not_mobile": "Das ist keine Mobilnummer, deshalb kann sie unsere SMS nicht empfangen. Verwende eine Mobilnummer oder schreibe an support@fluxer.app, wenn das deiner Meinung nach nicht stimmt.", - "phone.verification_code_invalid": "Ungültiger Telefonbestätigungscode.", - "phone.verification_needs_review": "Wir konnten diese Nummer nicht automatisch bestätigen. Schreibe an support@fluxer.app, dann prüft eine Person deinen Account.", - "phone.verification_required": "Telefonbestätigung ist erforderlich.", "premium_and_plans.animated_avatars_require_premium": "Animierte Avatare erfordern Premium.", "premium_and_plans.banners_require_premium": "Banner erfordern Premium.", "premium_and_plans.bio_requires_premium_for_length": "Eine Bio mit mehr als {maxLength} Zeichen erfordert Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_DE_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Die Anfrage zur IP-Autorisierung kann noch nicht erneut gesendet werden.", "rate_limits.ip_authorization_resend_limit_exceeded": "Das Limit für das erneute Senden von IP-Autorisierungsanfragen wurde überschritten.", "rate_limits.message_crosspost_rate_limited": "Dieser Kanal hat sein Veröffentlichungslimit erreicht. Er kann 10 Nachrichten am Stück veröffentlichen und danach alle 6 Minuten eine weitere.", - "rate_limits.phone_rate_limit_exceeded": "Das Anfragelimit für die Telefonverifizierung wurde überschritten.", "rate_limits.pronouns_changed_too_often": "Du hast deine Pronomen in letzter Zeit zu oft geändert. Bitte versuche es in {minutes, plural, one {# Minute} other {# Minuten}} erneut.", "rate_limits.published_message_edit_rate_limited": "Diese veröffentlichte Nachricht hat ihr Bearbeitungslimit erreicht. Sie kann 3-mal am Stück bearbeitet werden und danach alle 20 Minuten ein weiteres Mal.", "rate_limits.rate_limited": "Du stellst zu viele Anfragen.", diff --git a/packages/errors/src/i18n/locales/el.ts b/packages/errors/src/i18n/locales/el.ts index dd13080c2..ebd6bc40a 100644 --- a/packages/errors/src/i18n/locales/el.ts +++ b/packages/errors/src/i18n/locales/el.ts @@ -7,9 +7,7 @@ const ERROR_I18N_EL_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Απαιτείται επιβεβαίωση της διεύθυνσης email σου για αυτήν την ενέργεια.", "account.guild_verification_required": "Απαιτείται επαλήθευση κοινότητας.", "account.ip_authorization_required": "Απαιτείται εξουσιοδότηση IP.", - "account.locked_suspicious_activity": "Ο λογαριασμός σου είναι κλειδωμένος λόγω ύποπτης δραστηριότητας.", - "account.phone_gate_escape_unavailable": "Η αναβολή του ελέγχου επαλήθευσης τηλεφώνου δεν είναι διαθέσιμη για αυτόν τον λογαριασμό.", - "account.phone_required_for_guild": "Πρέπει να προσθέσεις έναν αριθμό τηλεφώνου για να στείλεις μηνύματα σε αυτήν την κοινότητα.", + "account.limited": "Ο λογαριασμός σου είναι περιορισμένος. Έλεγξε το email σου για να δεις πώς να άρεις τον περιορισμό.", "account.sensitive_content_filter_age_restricted": "Αυτό το φίλτρο ευαίσθητου περιεχομένου δεν είναι διαθέσιμο για την ηλικιακή σου ομάδα.", "account.session_timeout": "Η συνεδρία έληξε. Ανανέωσε τη σελίδα και συνδέσου ξανά.", "account.session_token_mismatch": "Ασυμφωνία token συνεδρίας.", @@ -32,7 +30,6 @@ const ERROR_I18N_EL_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Μη έγκυρο σώμα φόρμας.", "admin_and_system.invalid_format": "Η παρεχόμενη τιμή είναι σε μη έγκυρη μορφή.", "admin_and_system.invalid_integer_format": "Μη έγκυρη μορφή ακέραιου αριθμού.", - "admin_and_system.invalid_suspicious_flags_format": "Μη έγκυρη μορφή ύποπτων σημαιών.", "admin_and_system.invalid_system_flag": "Μη έγκυρη σημαία συστήματος.", "admin_and_system.invalid_timeout_value": "Μη έγκυρη τιμή χρονικού ορίου.", "admin_and_system.invalid_timestamp": "Μη έγκυρη χρονική σήμανση.", @@ -44,7 +41,6 @@ const ERROR_I18N_EL_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Απέτυχε η επικύρωση της απάντησης: {errors}.", "admin_and_system.test_harness_disabled": "Το test harness είναι απενεργοποιημένο.", "admin_and_system.test_harness_forbidden": "Το test harness απαγορεύεται.", - "admin_and_system.unknown_suspicious_flag": "Άγνωστη ύποπτη σημαία.", "admin_and_system.update_failed": "Δεν μπορέσαμε να ενημερώσουμε τον πόρο. Δοκίμασε ξανά.", "admin_and_system.user_must_be_bot_for_system_user": "Ο χρήστης πρέπει να είναι bot για να οριστεί ως χρήστης συστήματος.", "age_verification.already_verified": "Έχεις ήδη ολοκληρώσει την επαλήθευση ηλικίας.", @@ -394,18 +390,6 @@ const ERROR_I18N_EL_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Αυτός ο χρήστης δεν βρίσκεται στο κανάλι.", "permissions.user_not_in_voice": "Αυτός ο χρήστης δεν είναι σε φωνητικό κανάλι.", "permissions.user_owns_guilds": "Αυτός ο χρήστης είναι κάτοχος κοινοτήτων.", - "phone.add_not_eligible": "Δεν πληροίς τις προϋποθέσεις για να προσθέσεις αριθμό τηλεφώνου στον λογαριασμό σου.", - "phone.country_not_supported": "Δεν στέλνουμε μηνύματα επαλήθευσης σε αυτήν τη χώρα. Χρησιμοποίησε έναν αριθμό κινητού από άλλη χώρα ή στείλε email στο support@fluxer.app και ένα άτομο θα ελέγξει τον λογαριασμό σου.", - "phone.inbound_verification_required": "Αυτός ο αριθμός επαληθεύεται με μήνυμα που στέλνεις εσύ σε εμάς, όχι με μήνυμα που σου στέλνουμε εμείς. Ξεκίνησε ξανά την επαλήθευση τηλεφώνου για να πάρεις τον κωδικό και τον αριθμό στον οποίο θα στείλεις το μήνυμα.", - "phone.invalid_number": "Μη έγκυρος αριθμός τηλεφώνου.", - "phone.lookup_unavailable": "Η υπηρεσία μας για τον έλεγχο αριθμών τηλεφώνου δεν λειτουργεί αυτή τη στιγμή, οπότε σταματήσαμε πριν στείλουμε τον κωδικό σου. Η ευθύνη είναι δική μας, όχι του αριθμού σου. Περίμενε λίγα λεπτά και δοκίμασε ξανά τον ίδιο αριθμό.", - "phone.number_already_used": "Ο αριθμός τηλεφώνου χρησιμοποιείται ήδη.", - "phone.number_format_required": "Ο αριθμός τηλεφώνου πρέπει να είναι σε μορφή E.164 (για παράδειγμα, +1234567890).", - "phone.number_not_in_service": "Ο πάροχός σου αναφέρει ότι αυτός ο αριθμός δεν είναι σε χρήση. Έλεγξε τον αριθμό και δοκίμασε ξανά ή στείλε email στο support@fluxer.app αν είναι σωστός.", - "phone.number_not_mobile": "Αυτός δεν είναι αριθμός κινητού, οπότε δεν μπορεί να λάβει το μήνυμά μας. Χρησιμοποίησε έναν αριθμό κινητού ή στείλε email στο support@fluxer.app αν πιστεύεις ότι αυτό είναι λάθος.", - "phone.verification_code_invalid": "Μη έγκυρος κωδικός επαλήθευσης τηλεφώνου.", - "phone.verification_needs_review": "Δεν μπορέσαμε να επαληθεύσουμε αυτόν τον αριθμό αυτόματα. Στείλε email στο support@fluxer.app και ένα άτομο θα ελέγξει τον λογαριασμό σου.", - "phone.verification_required": "Απαιτείται επαλήθευση τηλεφώνου.", "premium_and_plans.animated_avatars_require_premium": "Τα κινούμενα avatar απαιτούν Premium.", "premium_and_plans.banners_require_premium": "Τα banner απαιτούν Premium.", "premium_and_plans.bio_requires_premium_for_length": "Ένα βιογραφικό μεγαλύτερο από {maxLength} χαρακτήρες απαιτεί Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_EL_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Πρέπει να περιμένεις πριν στείλεις ξανά την εξουσιοδότηση IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "Το όριο εκ νέου αποστολής εξουσιοδότησης IP έχει ξεπεραστεί.", "rate_limits.message_crosspost_rate_limited": "Αυτό το κανάλι έφτασε το όριο δημοσιεύσεών του. Μπορεί να δημοσιεύσει 10 μηνύματα στη σειρά και μετά ένα ακόμα κάθε 6 λεπτά.", - "rate_limits.phone_rate_limit_exceeded": "Το όριο αιτημάτων τηλεφώνου έχει ξεπεραστεί.", "rate_limits.pronouns_changed_too_often": "Άλλαξες τις αντωνυμίες σου πολύ συχνά πρόσφατα. Δοκίμασε ξανά μετά από {minutes} {minutes, plural, one {λεπτό} other {λεπτά}}.", "rate_limits.published_message_edit_rate_limited": "Αυτό το δημοσιευμένο μήνυμα έφτασε το όριο επεξεργασιών του. Μπορεί να επεξεργαστεί 3 φορές στη σειρά και μετά μία ακόμα φορά κάθε 20 λεπτά.", "rate_limits.rate_limited": "Έχεις ξεπεράσει το όριο αιτημάτων.", diff --git a/packages/errors/src/i18n/locales/en-GB.ts b/packages/errors/src/i18n/locales/en-GB.ts index a97d47926..7909440b8 100644 --- a/packages/errors/src/i18n/locales/en-GB.ts +++ b/packages/errors/src/i18n/locales/en-GB.ts @@ -7,9 +7,7 @@ const ERROR_I18N_EN_GB_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Email verification is required for this action.", "account.guild_verification_required": "Community verification is required.", "account.ip_authorization_required": "IP authorisation is required.", - "account.locked_suspicious_activity": "Your account is locked due to suspicious activity.", - "account.phone_gate_escape_unavailable": "This account cannot postpone the phone verification check.", - "account.phone_required_for_guild": "You need to add a phone number to send messages in this community.", + "account.limited": "Your account is limited. Check your email for how to lift it.", "account.sensitive_content_filter_age_restricted": "This sensitive content filter isn't available for your age group.", "account.session_timeout": "Session timed out. Refresh the page and log in again.", "account.session_token_mismatch": "Session token mismatch.", @@ -32,7 +30,6 @@ const ERROR_I18N_EN_GB_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Invalid form body.", "admin_and_system.invalid_format": "The provided value is in an invalid format.", "admin_and_system.invalid_integer_format": "Invalid integer format.", - "admin_and_system.invalid_suspicious_flags_format": "Invalid suspicious flags format.", "admin_and_system.invalid_system_flag": "Invalid system flag.", "admin_and_system.invalid_timeout_value": "Invalid timeout value.", "admin_and_system.invalid_timestamp": "Invalid timestamp.", @@ -44,7 +41,6 @@ const ERROR_I18N_EN_GB_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Response validation failed: {errors}.", "admin_and_system.test_harness_disabled": "Test harness is disabled.", "admin_and_system.test_harness_forbidden": "Test harness is forbidden.", - "admin_and_system.unknown_suspicious_flag": "Unknown suspicious flag.", "admin_and_system.update_failed": "We couldn't update the resource. Please try again.", "admin_and_system.user_must_be_bot_for_system_user": "User must be a bot to be marked as a system user.", "age_verification.already_verified": "You've already completed age verification.", @@ -394,18 +390,6 @@ const ERROR_I18N_EN_GB_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "This user isn't in the channel.", "permissions.user_not_in_voice": "This user isn't in voice.", "permissions.user_owns_guilds": "This user owns communities.", - "phone.add_not_eligible": "You are not eligible to add a phone number to your account.", - "phone.country_not_supported": "We don't send verification texts to this country. Use a mobile number from another country, or email support@fluxer.app and a person will review your account.", - "phone.inbound_verification_required": "This number is verified by texting us instead of us texting you. Start phone verification again to get the code and the number to text.", - "phone.invalid_number": "Invalid phone number.", - "phone.lookup_unavailable": "Our phone number check is down right now, so we stopped before sending your code. This is on us, not your number. Wait a few minutes and try the same number again.", - "phone.number_already_used": "Phone number is already in use.", - "phone.number_format_required": "Phone number must be in E.164 format (for example, +1234567890).", - "phone.number_not_in_service": "Your carrier says this number isn't in service. Check the number and try again, or email support@fluxer.app if it's correct.", - "phone.number_not_mobile": "This isn't a mobile number, so it can't receive our text. Use a mobile number, or email support@fluxer.app if you think that's wrong.", - "phone.verification_code_invalid": "Invalid phone verification code.", - "phone.verification_needs_review": "We couldn't verify this number automatically. Email support@fluxer.app and a person will review your account.", - "phone.verification_required": "Phone verification is required.", "premium_and_plans.animated_avatars_require_premium": "Animated avatars require Premium.", "premium_and_plans.banners_require_premium": "Banners require Premium.", "premium_and_plans.bio_requires_premium_for_length": "A bio longer than {maxLength} characters requires Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_EN_GB_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "IP authorisation resend is on cooldown.", "rate_limits.ip_authorization_resend_limit_exceeded": "IP authorisation resend limit exceeded.", "rate_limits.message_crosspost_rate_limited": "This channel has reached its publishing limit. It can publish 10 messages in a row, then one more every 6 minutes.", - "rate_limits.phone_rate_limit_exceeded": "Phone rate limit exceeded.", "rate_limits.pronouns_changed_too_often": "You've changed your pronouns too often recently. Please try again in {minutes, plural, one {# minute} other {# minutes}}.", "rate_limits.published_message_edit_rate_limited": "This published message has reached its editing limit. It allows 3 quick edits, then 1 every 20 minutes.", "rate_limits.rate_limited": "You're being rate limited.", diff --git a/packages/errors/src/i18n/locales/es-419.ts b/packages/errors/src/i18n/locales/es-419.ts index 88e789e16..734f7cdf6 100644 --- a/packages/errors/src/i18n/locales/es-419.ts +++ b/packages/errors/src/i18n/locales/es-419.ts @@ -7,9 +7,7 @@ const ERROR_I18N_ES_419_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Se requiere verificar tu correo electrónico para esta acción.", "account.guild_verification_required": "Se requiere verificación de la comunidad.", "account.ip_authorization_required": "Se requiere autorización de IP.", - "account.locked_suspicious_activity": "Tu cuenta está bloqueada debido a actividad sospechosa.", - "account.phone_gate_escape_unavailable": "Esta cuenta no puede posponer la verificación del teléfono.", - "account.phone_required_for_guild": "Necesitas agregar un número de teléfono para enviar mensajes en esta comunidad.", + "account.limited": "Tu cuenta está limitada. Revisa tu correo electrónico para saber cómo quitar la limitación.", "account.sensitive_content_filter_age_restricted": "Este filtro de contenido sensible no está disponible para tu edad.", "account.session_timeout": "Tu sesión expiró. Actualiza la página e inicia sesión de nuevo.", "account.session_token_mismatch": "El token de sesión no coincide.", @@ -32,7 +30,6 @@ const ERROR_I18N_ES_419_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Cuerpo de formulario inválido.", "admin_and_system.invalid_format": "El formato del valor proporcionado es inválido.", "admin_and_system.invalid_integer_format": "Formato de entero inválido.", - "admin_and_system.invalid_suspicious_flags_format": "Formato de indicadores sospechosos inválido.", "admin_and_system.invalid_system_flag": "Indicador de sistema inválido.", "admin_and_system.invalid_timeout_value": "Fecha de fin del aislamiento temporal inválida.", "admin_and_system.invalid_timestamp": "Marca de tiempo inválida.", @@ -44,7 +41,6 @@ const ERROR_I18N_ES_419_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Error de validación de la respuesta: {errors}.", "admin_and_system.test_harness_disabled": "El entorno de prueba está deshabilitado.", "admin_and_system.test_harness_forbidden": "El entorno de prueba está prohibido.", - "admin_and_system.unknown_suspicious_flag": "Indicador sospechoso desconocido.", "admin_and_system.update_failed": "No se pudo actualizar el recurso. Inténtalo de nuevo.", "admin_and_system.user_must_be_bot_for_system_user": "El usuario debe ser un bot para ser marcado como usuario del sistema.", "age_verification.already_verified": "Ya completaste la verificación de edad.", @@ -394,18 +390,6 @@ const ERROR_I18N_ES_419_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Este usuario no se encuentra en el canal.", "permissions.user_not_in_voice": "Este usuario no está en el canal de voz.", "permissions.user_owns_guilds": "Este usuario es propietario de comunidades.", - "phone.add_not_eligible": "No cumples los requisitos para agregar un número de teléfono a tu cuenta.", - "phone.country_not_supported": "No enviamos SMS de verificación a este país. Usa un número de celular de otro país o escribe a support@fluxer.app y una persona revisará tu cuenta.", - "phone.inbound_verification_required": "Este número se verifica con un SMS que nos envías tú, no con uno que te enviamos nosotros. Inicia de nuevo la verificación de teléfono para obtener el código y el número al que debes enviarlo.", - "phone.invalid_number": "Número de teléfono no válido.", - "phone.lookup_unavailable": "Nuestra verificación de números de teléfono no está funcionando en este momento, así que nos detuvimos antes de enviarte el código. La falla es nuestra, no de tu número. Espera unos minutos e inténtalo de nuevo con el mismo número.", - "phone.number_already_used": "El número de teléfono ya está en uso.", - "phone.number_format_required": "El número de teléfono debe estar en formato E.164 (por ejemplo, +1234567890).", - "phone.number_not_in_service": "Tu operador dice que este número no está en servicio. Revisa el número e inténtalo de nuevo, o escribe a support@fluxer.app si es correcto.", - "phone.number_not_mobile": "Este no es un número de celular, así que no puede recibir nuestro SMS. Usa un número de celular o escribe a support@fluxer.app si crees que es un error.", - "phone.verification_code_invalid": "Código de verificación de teléfono no válido.", - "phone.verification_needs_review": "No pudimos verificar este número automáticamente. Escribe a support@fluxer.app y una persona revisará tu cuenta.", - "phone.verification_required": "Se requiere verificación de teléfono.", "premium_and_plans.animated_avatars_require_premium": "Los avatares animados requieren un plan premium.", "premium_and_plans.banners_require_premium": "Los banners requieren un plan premium.", "premium_and_plans.bio_requires_premium_for_length": "Una biografía de más de {maxLength} caracteres requiere un plan premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_ES_419_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "El reenvío de autorización IP está en espera.", "rate_limits.ip_authorization_resend_limit_exceeded": "Se excedió el límite de reenvío de autorización IP.", "rate_limits.message_crosspost_rate_limited": "Este canal alcanzó su límite de publicaciones. Puede publicar 10 mensajes seguidos y luego uno más cada 6 minutos.", - "rate_limits.phone_rate_limit_exceeded": "Se excedió el límite de solicitudes del teléfono.", "rate_limits.pronouns_changed_too_often": "Has cambiado tus pronombres con demasiada frecuencia últimamente. Inténtalo de nuevo en {minutes} {minutes, plural, one {minuto} other {minutos}}.", "rate_limits.published_message_edit_rate_limited": "Este mensaje publicado alcanzó su límite de ediciones. Puede editarse 3 veces seguidas y luego una vez más cada 20 minutos.", "rate_limits.rate_limited": "Has alcanzado el límite de solicitudes.", diff --git a/packages/errors/src/i18n/locales/es-ES.ts b/packages/errors/src/i18n/locales/es-ES.ts index fbe44ab47..5bf69afe2 100644 --- a/packages/errors/src/i18n/locales/es-ES.ts +++ b/packages/errors/src/i18n/locales/es-ES.ts @@ -7,9 +7,7 @@ const ERROR_I18N_ES_ES_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Se requiere verificar tu correo electrónico para esta acción.", "account.guild_verification_required": "Se requiere verificación de la comunidad.", "account.ip_authorization_required": "Se requiere autorización de IP.", - "account.locked_suspicious_activity": "Tu cuenta está bloqueada debido a actividad sospechosa.", - "account.phone_gate_escape_unavailable": "Esta cuenta no puede posponer la verificación del teléfono.", - "account.phone_required_for_guild": "Necesitas añadir un número de teléfono para enviar mensajes en esta comunidad.", + "account.limited": "Tu cuenta está limitada. Revisa tu correo electrónico para saber cómo quitar la limitación.", "account.sensitive_content_filter_age_restricted": "Este filtro de contenido sensible no está disponible para tu edad.", "account.session_timeout": "La sesión ha caducado. Actualiza la página e inicia sesión de nuevo.", "account.session_token_mismatch": "El token de sesión no coincide.", @@ -32,7 +30,6 @@ const ERROR_I18N_ES_ES_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Cuerpo de formulario no válido.", "admin_and_system.invalid_format": "El valor proporcionado tiene un formato no válido.", "admin_and_system.invalid_integer_format": "Formato de entero no válido.", - "admin_and_system.invalid_suspicious_flags_format": "Formato de indicadores sospechosos no válido.", "admin_and_system.invalid_system_flag": "Indicador de sistema no válido.", "admin_and_system.invalid_timeout_value": "Fecha de fin del aislamiento temporal no válida.", "admin_and_system.invalid_timestamp": "Marca de tiempo no válida.", @@ -44,7 +41,6 @@ const ERROR_I18N_ES_ES_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "La validación de la respuesta falló: {errors}.", "admin_and_system.test_harness_disabled": "El entorno de pruebas está deshabilitado.", "admin_and_system.test_harness_forbidden": "El entorno de pruebas está prohibido.", - "admin_and_system.unknown_suspicious_flag": "Indicador sospechoso desconocido.", "admin_and_system.update_failed": "No se pudo actualizar el recurso. Inténtalo de nuevo.", "admin_and_system.user_must_be_bot_for_system_user": "El usuario debe ser un bot para ser marcado como usuario del sistema.", "age_verification.already_verified": "Ya has completado la verificación de edad.", @@ -394,18 +390,6 @@ const ERROR_I18N_ES_ES_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Este usuario no está en el canal.", "permissions.user_not_in_voice": "Este usuario no está en el canal de voz.", "permissions.user_owns_guilds": "Este usuario es propietario de comunidades.", - "phone.add_not_eligible": "No cumples los requisitos para añadir un número de teléfono a tu cuenta.", - "phone.country_not_supported": "No enviamos SMS de verificación a este país. Usa un número de móvil de otro país o escribe a support@fluxer.app y una persona revisará tu cuenta.", - "phone.inbound_verification_required": "Este número se verifica con un SMS que nos envías tú, no con uno que te enviamos nosotros. Vuelve a iniciar la verificación del teléfono para obtener el código y el número al que enviarlo.", - "phone.invalid_number": "Número de teléfono no válido.", - "phone.lookup_unavailable": "Nuestra comprobación de números de teléfono no funciona ahora mismo, así que hemos parado antes de enviarte el código. El fallo es nuestro, no de tu número. Espera unos minutos y vuelve a intentarlo con el mismo número.", - "phone.number_already_used": "El número de teléfono ya está en uso.", - "phone.number_format_required": "El número de teléfono debe tener el formato E.164 (por ejemplo, +1234567890).", - "phone.number_not_in_service": "Tu operador dice que este número no está en servicio. Comprueba el número y vuelve a intentarlo, o escribe a support@fluxer.app si es correcto.", - "phone.number_not_mobile": "Este no es un número de móvil, así que no puede recibir nuestro SMS. Usa un número de móvil o escribe a support@fluxer.app si crees que es un error.", - "phone.verification_code_invalid": "Código de verificación del teléfono no válido.", - "phone.verification_needs_review": "No hemos podido verificar este número automáticamente. Escribe a support@fluxer.app y una persona revisará tu cuenta.", - "phone.verification_required": "Se requiere verificación del teléfono.", "premium_and_plans.animated_avatars_require_premium": "Los avatares animados requieren Premium.", "premium_and_plans.banners_require_premium": "Los banners requieren Premium.", "premium_and_plans.bio_requires_premium_for_length": "Una biografía de más de {maxLength} caracteres requiere Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_ES_ES_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "El reenvío de autorización IP está en período de espera.", "rate_limits.ip_authorization_resend_limit_exceeded": "Límite de reenvío de autorización de IP superado.", "rate_limits.message_crosspost_rate_limited": "Este canal ha alcanzado su límite de publicaciones. Puede publicar 10 mensajes seguidos y después uno más cada 6 minutos.", - "rate_limits.phone_rate_limit_exceeded": "Límite de solicitudes del teléfono superado.", "rate_limits.pronouns_changed_too_often": "Has cambiado tus pronombres demasiadas veces últimamente. Vuelve a intentarlo en {minutes} {minutes, plural, one {minuto} other {minutos}}.", "rate_limits.published_message_edit_rate_limited": "Este mensaje publicado ha alcanzado su límite de ediciones. Puede editarse 3 veces seguidas y después una vez más cada 20 minutos.", "rate_limits.rate_limited": "Has alcanzado el límite de solicitudes.", diff --git a/packages/errors/src/i18n/locales/fi.ts b/packages/errors/src/i18n/locales/fi.ts index 5700a5abd..2e0c6fec9 100644 --- a/packages/errors/src/i18n/locales/fi.ts +++ b/packages/errors/src/i18n/locales/fi.ts @@ -7,9 +7,7 @@ const ERROR_I18N_FI_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Tämä toiminto vaatii sähköpostiosoitteesi vahvistamisen.", "account.guild_verification_required": "Yhteisön vahvistus vaaditaan.", "account.ip_authorization_required": "IP-osoitteen valtuutus vaaditaan.", - "account.locked_suspicious_activity": "Tilisi on lukittu epäilyttävän toiminnan vuoksi.", - "account.phone_gate_escape_unavailable": "Tällä tilillä ei voi lykätä puhelinnumeron vahvistusta.", - "account.phone_required_for_guild": "Sinun on lisättävä puhelinnumero lähettääksesi viestejä tässä yhteisössä.", + "account.limited": "Tilisi on rajoitettu. Katso sähköpostistasi, miten voit poistaa rajoituksen.", "account.sensitive_content_filter_age_restricted": "Tätä arkaluontoista sisältöä koskevaa suodatinta ei ole saatavilla ikäsi vuoksi.", "account.session_timeout": "Istunto aikakatkesi. Päivitä sivu ja kirjaudu sisään uudelleen.", "account.session_token_mismatch": "Istuntotunnus ei täsmää.", @@ -32,7 +30,6 @@ const ERROR_I18N_FI_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Virheellinen lomakkeen runko.", "admin_and_system.invalid_format": "Annettu arvo on virheellisessä muodossa.", "admin_and_system.invalid_integer_format": "Virheellinen kokonaislukumuoto.", - "admin_and_system.invalid_suspicious_flags_format": "Virheellinen epäilyttävien lippujen muoto.", "admin_and_system.invalid_system_flag": "Virheellinen järjestelmän lippu.", "admin_and_system.invalid_timeout_value": "Virheellinen aikakatkaisuarvo.", "admin_and_system.invalid_timestamp": "Virheellinen aikaleima.", @@ -44,7 +41,6 @@ const ERROR_I18N_FI_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Vastauksen validointi epäonnistui: {errors}.", "admin_and_system.test_harness_disabled": "Testausympäristö on poistettu käytöstä.", "admin_and_system.test_harness_forbidden": "Testausympäristö on kielletty.", - "admin_and_system.unknown_suspicious_flag": "Tuntematon epäilyttävä lippu.", "admin_and_system.update_failed": "Resurssia ei voitu päivittää. Yritä uudelleen.", "admin_and_system.user_must_be_bot_for_system_user": "Käyttäjän on oltava botti, jotta sen voi merkitä järjestelmäkäyttäjäksi.", "age_verification.already_verified": "Olet jo suorittanut iän vahvistuksen.", @@ -394,18 +390,6 @@ const ERROR_I18N_FI_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Tämä käyttäjä ei ole kanavassa.", "permissions.user_not_in_voice": "Tämä käyttäjä ei ole äänikanavalla.", "permissions.user_owns_guilds": "Tämä käyttäjä omistaa yhteisöjä.", - "phone.add_not_eligible": "Et voi lisätä puhelinnumeroa tilillesi.", - "phone.country_not_supported": "Emme lähetä vahvistustekstiviestejä tähän maahan. Käytä toisen maan matkapuhelinnumeroa tai lähetä sähköpostia osoitteeseen support@fluxer.app, niin tiimimme jäsen tarkistaa tilisi.", - "phone.inbound_verification_required": "Tämä numero vahvistetaan niin, että sinä lähetät meille tekstiviestin, emme me sinulle. Aloita puhelinvahvistus uudelleen, niin saat koodin ja numeron, johon lähetät viestin.", - "phone.invalid_number": "Virheellinen puhelinnumero.", - "phone.lookup_unavailable": "Puhelinnumeroiden tarkistuksemme ei toimi juuri nyt, joten keskeytimme ennen koodisi lähettämistä. Tämä on meidän vikamme, ei numerosi. Odota muutama minuutti ja yritä samaa numeroa uudelleen.", - "phone.number_already_used": "Puhelinnumero on jo käytössä.", - "phone.number_format_required": "Puhelinnumeron on oltava E.164-muodossa (esimerkiksi +1234567890).", - "phone.number_not_in_service": "Operaattorisi mukaan tämä numero ei ole käytössä. Tarkista numero ja yritä uudelleen tai lähetä sähköpostia osoitteeseen support@fluxer.app, jos numero on oikein.", - "phone.number_not_mobile": "Tämä ei ole matkapuhelinnumero, joten se ei voi vastaanottaa tekstiviestiämme. Käytä matkapuhelinnumeroa tai lähetä sähköpostia osoitteeseen support@fluxer.app, jos uskot tämän olevan virhe.", - "phone.verification_code_invalid": "Virheellinen puhelinvahvistuskoodi.", - "phone.verification_needs_review": "Emme voineet vahvistaa tätä numeroa automaattisesti. Lähetä sähköpostia osoitteeseen support@fluxer.app, niin tiimimme jäsen tarkistaa tilisi.", - "phone.verification_required": "Puhelinvahvistus vaaditaan.", "premium_and_plans.animated_avatars_require_premium": "Animoidut avatarit vaativat Premiumin.", "premium_and_plans.banners_require_premium": "Bannerit vaativat Premiumin.", "premium_and_plans.bio_requires_premium_for_length": "Yli {maxLength} merkin pituinen esittelyteksti vaatii Premiumin.", @@ -423,7 +407,6 @@ const ERROR_I18N_FI_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Odota ennen kuin pyydät IP-osoitteen valtuutusviestin uudelleenlähetystä.", "rate_limits.ip_authorization_resend_limit_exceeded": "IP-osoitteen valtuutusviestin uudelleenlähetyksen enimmäismäärä on ylitetty.", "rate_limits.message_crosspost_rate_limited": "Tämä kanava on saavuttanut julkaisurajansa. Se voi julkaista 10 viestiä peräkkäin ja sen jälkeen yhden lisää 6 minuutin välein.", - "rate_limits.phone_rate_limit_exceeded": "Liian monta puhelinvahvistuspyyntöä.", "rate_limits.pronouns_changed_too_often": "Olet vaihtanut pronominejasi liian usein viime aikoina. Yritä uudelleen {minutes, plural, one {# minuutin} other {# minuutin}} kuluttua.", "rate_limits.published_message_edit_rate_limited": "Tämä julkaistu viesti on saavuttanut muokkausrajansa. Sitä voi muokata 3 kertaa peräkkäin ja sen jälkeen kerran lisää 20 minuutin välein.", "rate_limits.rate_limited": "Olet tehnyt liian monta pyyntöä liian nopeasti.", diff --git a/packages/errors/src/i18n/locales/fr.ts b/packages/errors/src/i18n/locales/fr.ts index 97774850b..e75d90e02 100644 --- a/packages/errors/src/i18n/locales/fr.ts +++ b/packages/errors/src/i18n/locales/fr.ts @@ -7,9 +7,7 @@ const ERROR_I18N_FR_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Vous devez vérifier votre adresse e-mail pour effectuer cette action.", "account.guild_verification_required": "La vérification de la communauté est requise.", "account.ip_authorization_required": "L'autorisation IP est requise.", - "account.locked_suspicious_activity": "Votre compte est verrouillé en raison d’une activité suspecte.", - "account.phone_gate_escape_unavailable": "Ce compte ne peut pas reporter la vérification du numéro de téléphone.", - "account.phone_required_for_guild": "Vous devez ajouter un numéro de téléphone pour envoyer des messages dans cette communauté.", + "account.limited": "Votre compte est limité. Consultez vos e-mails pour savoir comment lever cette limitation.", "account.sensitive_content_filter_age_restricted": "Ce filtre de contenu sensible n’est pas disponible pour votre tranche d’âge.", "account.session_timeout": "La session a expiré. Actualisez la page et reconnectez-vous.", "account.session_token_mismatch": "Incompatibilité du jeton de session.", @@ -32,7 +30,6 @@ const ERROR_I18N_FR_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Corps du formulaire invalide.", "admin_and_system.invalid_format": "La valeur fournie est dans un format invalide.", "admin_and_system.invalid_integer_format": "Format d'entier invalide.", - "admin_and_system.invalid_suspicious_flags_format": "Format des indicateurs d’activité suspecte invalide.", "admin_and_system.invalid_system_flag": "Indicateur système invalide.", "admin_and_system.invalid_timeout_value": "Date de fin de restriction temporaire non valide.", "admin_and_system.invalid_timestamp": "Horodatage invalide.", @@ -44,7 +41,6 @@ const ERROR_I18N_FR_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Échec de la validation de la réponse : {errors}.", "admin_and_system.test_harness_disabled": "Le banc de test est désactivé.", "admin_and_system.test_harness_forbidden": "Le banc de test est interdit.", - "admin_and_system.unknown_suspicious_flag": "Indicateur d’activité suspecte inconnu.", "admin_and_system.update_failed": "Impossible de mettre à jour la ressource. Réessayez.", "admin_and_system.user_must_be_bot_for_system_user": "L'utilisateur doit être un bot pour être marqué comme utilisateur système.", "age_verification.already_verified": "Vous avez déjà effectué la vérification de l’âge.", @@ -394,18 +390,6 @@ const ERROR_I18N_FR_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Cet utilisateur n'est pas présent dans le salon.", "permissions.user_not_in_voice": "Cet utilisateur n'est pas dans un salon vocal.", "permissions.user_owns_guilds": "Cet utilisateur est propriétaire de communautés.", - "phone.add_not_eligible": "Votre compte ne remplit pas les conditions requises pour ajouter un numéro de téléphone.", - "phone.country_not_supported": "Nous n’envoyons pas de SMS de vérification dans ce pays. Utilisez un numéro de mobile d’un autre pays ou écrivez à support@fluxer.app pour qu’une personne examine votre compte.", - "phone.inbound_verification_required": "Pour vérifier ce numéro, vous devez nous envoyer un SMS au lieu d’en recevoir un. Relancez la vérification du téléphone pour obtenir le code et le numéro auquel l’envoyer.", - "phone.invalid_number": "Numéro de téléphone invalide.", - "phone.lookup_unavailable": "Notre service de vérification des numéros de téléphone est indisponible. Nous avons donc interrompu l’opération avant l’envoi de votre code. Le problème vient de notre service, pas de votre numéro. Attendez quelques minutes et réessayez avec le même numéro.", - "phone.number_already_used": "Le numéro de téléphone est déjà utilisé.", - "phone.number_format_required": "Le numéro de téléphone doit être au format E.164 (par exemple, +1234567890).", - "phone.number_not_in_service": "Votre opérateur indique que ce numéro n’est pas en service. Vérifiez-le et réessayez, ou écrivez à support@fluxer.app s’il est correct.", - "phone.number_not_mobile": "Ce numéro n’est pas un numéro de mobile et ne peut donc pas recevoir notre SMS. Utilisez un numéro de mobile ou écrivez à support@fluxer.app si vous pensez qu’il s’agit d’une erreur.", - "phone.verification_code_invalid": "Code de vérification téléphonique invalide.", - "phone.verification_needs_review": "Impossible de vérifier ce numéro automatiquement. Écrivez à support@fluxer.app pour qu’une personne examine votre compte.", - "phone.verification_required": "La vérification téléphonique est requise.", "premium_and_plans.animated_avatars_require_premium": "Les avatars animés nécessitent une formule Premium.", "premium_and_plans.banners_require_premium": "Les bannières nécessitent une formule Premium.", "premium_and_plans.bio_requires_premium_for_length": "Une bio de plus de {maxLength} caractères nécessite une formule Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_FR_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Veuillez patienter avant de renvoyer l’autorisation IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "La limite de renvois d’autorisation IP a été dépassée.", "rate_limits.message_crosspost_rate_limited": "Ce salon a atteint sa limite de publication. Il peut publier 10 messages d'affilée, puis un de plus toutes les 6 minutes.", - "rate_limits.phone_rate_limit_exceeded": "La limite de tentatives de vérification téléphonique a été dépassée.", "rate_limits.pronouns_changed_too_often": "Vous avez changé vos pronoms trop souvent récemment. Réessayez dans {minutes, plural, =1 {# minute} other {# minutes}}.", "rate_limits.published_message_edit_rate_limited": "Ce message publié a atteint sa limite de modification. Il peut être modifié 3 fois d'affilée, puis une fois de plus toutes les 20 minutes.", "rate_limits.rate_limited": "Vous avez atteint la limite de requêtes.", diff --git a/packages/errors/src/i18n/locales/he.ts b/packages/errors/src/i18n/locales/he.ts index 7aca2fc4f..98451d031 100644 --- a/packages/errors/src/i18n/locales/he.ts +++ b/packages/errors/src/i18n/locales/he.ts @@ -7,9 +7,7 @@ const ERROR_I18N_HE_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "נדרש אימות כתובת האימייל עבור פעולה זו.", "account.guild_verification_required": "נדרש אימות קהילה.", "account.ip_authorization_required": "נדרשת הרשאת IP.", - "account.locked_suspicious_activity": "החשבון שלך ננעל בגלל פעילות חשודה.", - "account.phone_gate_escape_unavailable": "לא ניתן לדחות את אימות הטלפון למועד מאוחר יותר בחשבון זה.", - "account.phone_required_for_guild": "נדרש להוסיף מספר טלפון כדי לשלוח הודעות בקהילה זו.", + "account.limited": "החשבון שלך מוגבל. ניתן לבדוק בתיבת הדואר האלקטרוני איך להסיר את ההגבלה.", "account.sensitive_content_filter_age_restricted": "מסנן התוכן הרגיש הזה אינו זמין לקבוצת הגיל שלך.", "account.session_timeout": "הסשן פג. יש לרענן את הדף ולהתחבר שוב.", "account.session_token_mismatch": "אי-התאמה באסימון הסשן.", @@ -32,7 +30,6 @@ const ERROR_I18N_HE_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "גוף טופס שגוי.", "admin_and_system.invalid_format": "הערך שסופק הוא בפורמט שגוי.", "admin_and_system.invalid_integer_format": "פורמט מספר שלם שגוי.", - "admin_and_system.invalid_suspicious_flags_format": "פורמט דגלים חשודים שגוי.", "admin_and_system.invalid_system_flag": "דגל מערכת שגוי.", "admin_and_system.invalid_timeout_value": "ערך פסק זמן שגוי.", "admin_and_system.invalid_timestamp": "חותמת זמן שגויה.", @@ -44,7 +41,6 @@ const ERROR_I18N_HE_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "אימות התגובה נכשל: {errors}.", "admin_and_system.test_harness_disabled": "כלי הבדיקה מושבת.", "admin_and_system.test_harness_forbidden": "השימוש בכלי הבדיקה אסור.", - "admin_and_system.unknown_suspicious_flag": "דגל חשוד לא מוכר.", "admin_and_system.update_failed": "לא הצלחנו לעדכן את המשאב. ניתן לנסות שוב.", "admin_and_system.user_must_be_bot_for_system_user": "המשתמש חייב להיות בוט כדי להיות מוגדר כמשתמש מערכת.", "age_verification.already_verified": "כבר השלמת את אימות הגיל.", @@ -394,18 +390,6 @@ const ERROR_I18N_HE_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "משתמש זה לא נמצא בערוץ.", "permissions.user_not_in_voice": "משתמש זה לא נמצא בערוץ קולי.", "permissions.user_owns_guilds": "משתמש זה הוא הבעלים של קהילות.", - "phone.add_not_eligible": "אין באפשרותך להוסיף מספר טלפון לחשבון שלך.", - "phone.country_not_supported": "אנחנו לא שולחים הודעות אימות למדינה הזו. אפשר להשתמש במספר נייד ממדינה אחרת, או לפנות אל support@fluxer.app ונציג יבדוק את החשבון שלך.", - "phone.inbound_verification_required": "המספר הזה מאומת באמצעות הודעה שנשלחת ממנו אלינו, ולא באמצעות הודעה שאנחנו שולחים אליו. יש להתחיל את אימות הטלפון מחדש כדי לקבל את הקוד ואת המספר שאליו יש לשלוח אותו.", - "phone.invalid_number": "מספר טלפון שגוי.", - "phone.lookup_unavailable": "בדיקת מספרי הטלפון שלנו אינה זמינה כרגע, ולכן עצרנו לפני שליחת הקוד. התקלה אצלנו, לא במספר שלך. כדאי להמתין כמה דקות ולנסות שוב עם אותו מספר.", - "phone.number_already_used": "מספר הטלפון כבר בשימוש.", - "phone.number_format_required": "מספר הטלפון חייב להיות בפורמט E.164 (לדוגמה +1234567890).", - "phone.number_not_in_service": "לפי חברת הסלולר שלך, המספר הזה אינו פעיל. יש לבדוק את המספר ולנסות שוב, או לפנות אל support@fluxer.app אם המספר נכון.", - "phone.number_not_mobile": "זה אינו מספר נייד, ולכן הוא לא יכול לקבל את ההודעה שלנו. יש להשתמש במספר נייד, או לפנות אל support@fluxer.app אם לדעתך זו טעות.", - "phone.verification_code_invalid": "קוד אימות טלפון שגוי.", - "phone.verification_needs_review": "לא הצלחנו לאמת את המספר הזה באופן אוטומטי. אפשר לפנות אל support@fluxer.app ונציג יבדוק את החשבון שלך.", - "phone.verification_required": "נדרש אימות טלפון.", "premium_and_plans.animated_avatars_require_premium": "אווטרים מונפשים דורשים מסלול פרימיום.", "premium_and_plans.banners_require_premium": "באנרים דורשים מסלול פרימיום.", "premium_and_plans.bio_requires_premium_for_length": "ביוגרפיה באורך של יותר מ-{maxLength} תווים דורשת מסלול פרימיום.", @@ -423,7 +407,6 @@ const ERROR_I18N_HE_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "שליחה חוזרת של הרשאת IP נמצאת בהשהיה.", "rate_limits.ip_authorization_resend_limit_exceeded": "חריגה ממגבלת שליחה חוזרת של הרשאת IP.", "rate_limits.message_crosspost_rate_limited": "הערוץ הזה הגיע למגבלת הפרסום שלו. הוא יכול לפרסם 10 הודעות ברצף, ואז הודעה אחת נוספת כל 6 דקות.", - "rate_limits.phone_rate_limit_exceeded": "חריגה ממגבלת קצב הטלפון.", "rate_limits.pronouns_changed_too_often": "שינית את כינויי הגוף יותר מדי פעמים לאחרונה. ניתן לנסות שוב בעוד {minutes} {minutes, plural, one {דקה} other {דקות}}.", "rate_limits.published_message_edit_rate_limited": "ההודעה המפורסמת הזו הגיעה למגבלת העריכה שלה. אפשר לערוך אותה 3 פעמים ברצף, ואז פעם אחת נוספת כל 20 דקות.", "rate_limits.rate_limited": "הגעת למגבלת קצב.", diff --git a/packages/errors/src/i18n/locales/hi.ts b/packages/errors/src/i18n/locales/hi.ts index 41d0cbc1c..321e6b1d2 100644 --- a/packages/errors/src/i18n/locales/hi.ts +++ b/packages/errors/src/i18n/locales/hi.ts @@ -7,9 +7,7 @@ const ERROR_I18N_HI_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "इस कार्रवाई के लिए ईमेल वेरिफ़िकेशन ज़रूरी है।", "account.guild_verification_required": "कम्युनिटी वेरिफ़िकेशन ज़रूरी है।", "account.ip_authorization_required": "IP ऑथराइज़ेशन ज़रूरी है।", - "account.locked_suspicious_activity": "संदिग्ध एक्टिविटी के कारण आपका अकाउंट लॉक कर दिया गया है।", - "account.phone_gate_escape_unavailable": "इस अकाउंट के लिए फ़ोन वेरिफ़िकेशन को टाला नहीं जा सकता।", - "account.phone_required_for_guild": "इस कम्युनिटी में मैसेज भेजने के लिए आपको एक फ़ोन नंबर जोड़ना होगा।", + "account.limited": "आपका अकाउंट सीमित है। इसे हटाने का तरीका जानने के लिए अपना ईमेल देखें।", "account.sensitive_content_filter_age_restricted": "यह संवेदनशील सामग्री फ़िल्टर आपके उम्र वर्ग के लिए उपलब्ध नहीं है।", "account.session_timeout": "सेशन टाइमआउट हो गया है। पेज रिफ़्रेश करें और दोबारा लॉगिन करें।", "account.session_token_mismatch": "सेशन टोकन मेल नहीं खा रहा।", @@ -32,7 +30,6 @@ const ERROR_I18N_HI_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "अमान्य फ़ॉर्म बॉडी।", "admin_and_system.invalid_format": "दी गई वैल्यू का फ़ॉर्मेट अमान्य है।", "admin_and_system.invalid_integer_format": "अमान्य इंटीजर फ़ॉर्मेट।", - "admin_and_system.invalid_suspicious_flags_format": "अमान्य संदिग्ध फ़्लैग फ़ॉर्मेट।", "admin_and_system.invalid_system_flag": "अमान्य सिस्टम फ़्लैग।", "admin_and_system.invalid_timeout_value": "अमान्य टाइमआउट वैल्यू।", "admin_and_system.invalid_timestamp": "अमान्य टाइमस्टैम्प।", @@ -44,7 +41,6 @@ const ERROR_I18N_HI_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "रिस्पॉन्स वैलिडेशन फेल हुआ: {errors}।", "admin_and_system.test_harness_disabled": "Test harness डिसेबल है।", "admin_and_system.test_harness_forbidden": "Test harness की अनुमति नहीं है।", - "admin_and_system.unknown_suspicious_flag": "अज्ञात संदिग्ध फ़्लैग।", "admin_and_system.update_failed": "रिसोर्स अपडेट नहीं किया जा सका। कृपया फिर से कोशिश करें।", "admin_and_system.user_must_be_bot_for_system_user": "सिस्टम यूज़र के रूप में मार्क किए जाने के लिए यूज़र का बॉट होना ज़रूरी है।", "age_verification.already_verified": "आपने पहले ही एज वेरिफ़िकेशन पूरा कर लिया है।", @@ -394,18 +390,6 @@ const ERROR_I18N_HI_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "यह यूज़र चैनल में नहीं है।", "permissions.user_not_in_voice": "यह यूज़र वॉइस में नहीं है।", "permissions.user_owns_guilds": "यह यूज़र कम्युनिटी का मालिक है।", - "phone.add_not_eligible": "आप अपने अकाउंट में फ़ोन नंबर जोड़ने के योग्य नहीं हैं।", - "phone.country_not_supported": "हम इस देश में वेरिफ़िकेशन मैसेज नहीं भेजते। किसी दूसरे देश का मोबाइल नंबर इस्तेमाल करें, या support@fluxer.app पर ईमेल करें और कोई व्यक्ति आपके अकाउंट की समीक्षा करेगा।", - "phone.inbound_verification_required": "इस नंबर का वेरिफ़िकेशन इस तरह होता है कि आप हमें मैसेज भेजते हैं, हम आपको मैसेज नहीं भेजते। कोड और जिस नंबर पर मैसेज भेजना है, वह पाने के लिए फ़ोन वेरिफ़िकेशन दोबारा शुरू करें।", - "phone.invalid_number": "अमान्य फ़ोन नंबर।", - "phone.lookup_unavailable": "फ़ोन नंबर जाँचने वाली हमारी सेवा अभी काम नहीं कर रही है, इसलिए हमने आपका कोड भेजने से पहले ही रोक दिया। यह गड़बड़ी हमारी तरफ़ से है, आपके नंबर में कोई दिक्कत नहीं है। कुछ मिनट रुकें और वही नंबर दोबारा आज़माएँ।", - "phone.number_already_used": "फ़ोन नंबर पहले ही इस्तेमाल में है।", - "phone.number_format_required": "फ़ोन नंबर E.164 फ़ॉर्मेट में होना चाहिए (उदाहरण के लिए, +1234567890)।", - "phone.number_not_in_service": "आपकी टेलीकॉम कंपनी के अनुसार यह नंबर सेवा में नहीं है। नंबर जाँचें और दोबारा कोशिश करें, या अगर नंबर सही है तो support@fluxer.app पर ईमेल करें।", - "phone.number_not_mobile": "यह मोबाइल नंबर नहीं है, इसलिए इस पर हमारा मैसेज नहीं आ सकता। मोबाइल नंबर इस्तेमाल करें, या अगर आपको लगता है कि यह गलत है तो support@fluxer.app पर ईमेल करें।", - "phone.verification_code_invalid": "अमान्य फ़ोन वेरिफ़िकेशन कोड।", - "phone.verification_needs_review": "हम इस नंबर को अपने आप वेरिफ़ाई नहीं कर पाए। support@fluxer.app पर ईमेल करें और कोई व्यक्ति आपके अकाउंट की समीक्षा करेगा।", - "phone.verification_required": "फ़ोन वेरिफ़िकेशन ज़रूरी है।", "premium_and_plans.animated_avatars_require_premium": "एनिमेटेड अवतार के लिए प्रीमियम ज़रूरी है।", "premium_and_plans.banners_require_premium": "बैनर के लिए प्रीमियम ज़रूरी है।", "premium_and_plans.bio_requires_premium_for_length": "{maxLength} कैरेक्टर से लंबे बायो के लिए प्रीमियम ज़रूरी है।", @@ -423,7 +407,6 @@ const ERROR_I18N_HI_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "IP ऑथराइज़ेशन दोबारा भेजने के लिए कूलडाउन चल रहा है।", "rate_limits.ip_authorization_resend_limit_exceeded": "IP ऑथराइज़ेशन दोबारा भेजने की सीमा पार हो गई।", "rate_limits.message_crosspost_rate_limited": "यह चैनल अपनी प्रकाशन सीमा तक पहुँच गया है। यह लगातार 10 मैसेज प्रकाशित कर सकता है, फिर हर 6 मिनट में एक और।", - "rate_limits.phone_rate_limit_exceeded": "फ़ोन रेट लिमिट पार हो गई।", "rate_limits.pronouns_changed_too_often": "आपने हाल ही में अपने प्रोनाउंस बहुत बार बदले हैं। कृपया {minutes} {minutes, plural, one {मिनट} other {मिनट}} में फिर से प्रयास करें।", "rate_limits.published_message_edit_rate_limited": "यह प्रकाशित मैसेज अपनी संपादन सीमा तक पहुँच गया है। इसे लगातार 3 बार संपादित किया जा सकता है, फिर हर 20 मिनट में एक बार और।", "rate_limits.rate_limited": "आप पर रेट लिमिट लागू है।", diff --git a/packages/errors/src/i18n/locales/hr.ts b/packages/errors/src/i18n/locales/hr.ts index 972e4d078..875e1843e 100644 --- a/packages/errors/src/i18n/locales/hr.ts +++ b/packages/errors/src/i18n/locales/hr.ts @@ -7,9 +7,7 @@ const ERROR_I18N_HR_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Za ovu je radnju potrebna potvrda e-maila.", "account.guild_verification_required": "Potrebna je provjera zajednice.", "account.ip_authorization_required": "Potrebna je IP autorizacija.", - "account.locked_suspicious_activity": "Tvoj je račun zaključan zbog sumnjive aktivnosti.", - "account.phone_gate_escape_unavailable": "Odgoda provjere telefona nije dostupna za ovaj račun.", - "account.phone_required_for_guild": "Moraš dodati telefonski broj za slanje poruka u ovoj zajednici.", + "account.limited": "Tvoj je račun ograničen. Provjeri e-poštu kako bi saznao kako ukloniti ograničenje.", "account.sensitive_content_filter_age_restricted": "Ovaj filtar osjetljivog sadržaja nije dostupan za tvoju dobnu skupinu.", "account.session_timeout": "Sesija je istekla. Osvježi stranicu i prijavi se ponovno.", "account.session_token_mismatch": "Token sesije se ne podudara.", @@ -32,7 +30,6 @@ const ERROR_I18N_HR_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Nevažeći sadržaj obrasca.", "admin_and_system.invalid_format": "Navedena vrijednost ima nevažeći format.", "admin_and_system.invalid_integer_format": "Nevažeći format cijelog broja.", - "admin_and_system.invalid_suspicious_flags_format": "Nevažeći format sumnjivih zastavica.", "admin_and_system.invalid_system_flag": "Nevažeća sistemska zastavica.", "admin_and_system.invalid_timeout_value": "Nevažeća vrijednost za istek vremena.", "admin_and_system.invalid_timestamp": "Nevažeća vremenska oznaka.", @@ -44,7 +41,6 @@ const ERROR_I18N_HR_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Validacija odgovora nije uspjela: {errors}.", "admin_and_system.test_harness_disabled": "Testni sustav je onemogućen.", "admin_and_system.test_harness_forbidden": "Testni sustav je zabranjen.", - "admin_and_system.unknown_suspicious_flag": "Nepoznata sumnjiva zastavica.", "admin_and_system.update_failed": "Nismo mogli ažurirati resurs. Pokušaj ponovno.", "admin_and_system.user_must_be_bot_for_system_user": "Korisnik mora biti bot da bi bio označen kao sistemski korisnik.", "age_verification.already_verified": "Provjera dobi je već završena.", @@ -394,18 +390,6 @@ const ERROR_I18N_HR_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Ovaj korisnik nije u kanalu.", "permissions.user_not_in_voice": "Ovaj korisnik nije u glasovnom kanalu.", "permissions.user_owns_guilds": "Ovaj korisnik je vlasnik zajednica.", - "phone.add_not_eligible": "Ne ispunjavaš uvjete za dodavanje telefonskog broja na svoj račun.", - "phone.country_not_supported": "U ovu zemlju ne šaljemo SMS-ove za provjeru. Upotrijebi mobilni broj iz druge zemlje ili piši na support@fluxer.app i netko iz našeg tima pregledat će tvoj račun.", - "phone.inbound_verification_required": "Ovaj se broj provjerava tako da ti pošalješ SMS nama, a ne mi tebi. Ponovno pokreni provjeru telefona da dobiješ kod i broj na koji ga trebaš poslati.", - "phone.invalid_number": "Nevažeći telefonski broj.", - "phone.lookup_unavailable": "Naša provjera telefonskih brojeva trenutačno ne radi, pa smo stali prije nego što smo poslali tvoj kod. Krivnja je na nama, a ne na tvom broju. Pričekaj nekoliko minuta i pokušaj ponovno s istim brojem.", - "phone.number_already_used": "Telefonski broj je već u upotrebi.", - "phone.number_format_required": "Telefonski broj mora biti u E.164 formatu (npr. +1234567890).", - "phone.number_not_in_service": "Tvoj operater javlja da ovaj broj nije u funkciji. Provjeri broj i pokušaj ponovno ili piši na support@fluxer.app ako je broj točan.", - "phone.number_not_mobile": "Ovo nije mobilni broj pa ne može primiti našu SMS poruku. Upotrijebi mobilni broj ili piši na support@fluxer.app ako misliš da to nije točno.", - "phone.verification_code_invalid": "Nevažeći kod za provjeru telefona.", - "phone.verification_needs_review": "Ovaj broj nismo mogli automatski provjeriti. Piši na support@fluxer.app i netko iz našeg tima pregledat će tvoj račun.", - "phone.verification_required": "Potrebna je provjera telefona.", "premium_and_plans.animated_avatars_require_premium": "Animirani avatari zahtijevaju Premium pretplatu.", "premium_and_plans.banners_require_premium": "Banneri zahtijevaju Premium pretplatu.", "premium_and_plans.bio_requires_premium_for_length": "Opis profila duži od {maxLength} znakova zahtijeva Premium pretplatu.", @@ -423,7 +407,6 @@ const ERROR_I18N_HR_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Pričekaj prije ponovnog slanja IP autorizacije.", "rate_limits.ip_authorization_resend_limit_exceeded": "Prekoračeno je ograničenje ponovnog slanja IP autorizacije.", "rate_limits.message_crosspost_rate_limited": "Ovaj kanal dosegnuo je ograničenje objavljivanja. Može objaviti 10 poruka zaredom, a zatim još jednu svakih 6 minuta.", - "rate_limits.phone_rate_limit_exceeded": "Prekoračeno je ograničenje broja zahtjeva za telefon.", "rate_limits.pronouns_changed_too_often": "U zadnje vrijeme prečesto mijenjaš zamjenice. Pokušaj ponovno za {minutes, plural, one {# minutu} few {# minute} other {# minuta}}.", "rate_limits.published_message_edit_rate_limited": "Ova objavljena poruka dosegnula je ograničenje uređivanja. Može se urediti 3 puta zaredom, a zatim još jednom svakih 20 minuta.", "rate_limits.rate_limited": "Šalješ previše zahtjeva.", diff --git a/packages/errors/src/i18n/locales/hu.ts b/packages/errors/src/i18n/locales/hu.ts index 713dc77c4..7d4782cd1 100644 --- a/packages/errors/src/i18n/locales/hu.ts +++ b/packages/errors/src/i18n/locales/hu.ts @@ -7,9 +7,7 @@ const ERROR_I18N_HU_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Ehhez a művelethez meg kell erősítened az e-mail-címedet.", "account.guild_verification_required": "Közösségi ellenőrzés szükséges.", "account.ip_authorization_required": "Az IP-cím engedélyezése szükséges.", - "account.locked_suspicious_activity": "Fiókod gyanús tevékenység miatt zárolva van.", - "account.phone_gate_escape_unavailable": "Ennél a fióknál nem halasztható el a telefonszám ellenőrzése.", - "account.phone_required_for_guild": "Telefonszámot kell hozzáadnod, hogy üzeneteket küldhess ebben a közösségben.", + "account.limited": "A fiókod korlátozva van. Az e-mailjeidben megtalálod, hogyan oldhatod fel a korlátozást.", "account.sensitive_content_filter_age_restricted": "Ez az érzékeny tartalmakat szűrő beállítás nem érhető el a korosztályodnak.", "account.session_timeout": "A munkamenet lejárt. Frissítsd az oldalt, és jelentkezz be újra.", "account.session_token_mismatch": "A munkamenettoken nem egyezik.", @@ -32,7 +30,6 @@ const ERROR_I18N_HU_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Érvénytelen űrlaptartalom.", "admin_and_system.invalid_format": "A megadott érték érvénytelen formátumú.", "admin_and_system.invalid_integer_format": "Érvénytelen egészszám-formátum.", - "admin_and_system.invalid_suspicious_flags_format": "A gyanús tevékenységet jelölő jelzők formátuma érvénytelen.", "admin_and_system.invalid_system_flag": "Érvénytelen rendszerjelző.", "admin_and_system.invalid_timeout_value": "Érvénytelen időtúllépési idő.", "admin_and_system.invalid_timestamp": "Érvénytelen időbélyeg.", @@ -44,7 +41,6 @@ const ERROR_I18N_HU_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "A válasz érvényesítése sikertelen: {errors}.", "admin_and_system.test_harness_disabled": "A tesztkeretrendszer ki van kapcsolva.", "admin_and_system.test_harness_forbidden": "A tesztkeretrendszer használata nem engedélyezett.", - "admin_and_system.unknown_suspicious_flag": "Ismeretlen, gyanús tevékenységet jelölő jelző.", "admin_and_system.update_failed": "Nem sikerült frissíteni az erőforrást. Próbáld újra.", "admin_and_system.user_must_be_bot_for_system_user": "Csak botfelhasználó jelölhető meg rendszerfelhasználóként.", "age_verification.already_verified": "Már elvégezted a korhatár-ellenőrzést.", @@ -394,18 +390,6 @@ const ERROR_I18N_HU_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Ez a felhasználó nincs a csatornán.", "permissions.user_not_in_voice": "Ez a felhasználó nincs hangcsatornán.", "permissions.user_owns_guilds": "Ez a felhasználó közösségek tulajdonosa.", - "phone.add_not_eligible": "Nem adhatsz hozzá telefonszámot a fiókodhoz.", - "phone.country_not_supported": "Nem küldünk ellenőrző SMS-eket ebbe az országba. Használj egy másik országból származó mobilszámot, vagy írj a support@fluxer.app címre, és egy munkatárs átnézi a fiókodat.", - "phone.inbound_verification_required": "Ezt a számot úgy ellenőrizzük, hogy te küldesz nekünk SMS-t, nem mi neked. Indítsd el újra a telefonos ellenőrzést, hogy megkapd a kódot és a számot, amelyre SMS-t kell küldened.", - "phone.invalid_number": "Érvénytelen telefonszám.", - "phone.lookup_unavailable": "A telefonszám-ellenőrzésünk jelenleg nem működik, ezért megálltunk, mielőtt elküldtük volna a kódodat. Ez a mi hibánk, nem a számodé. Várj pár percet, és próbáld újra ugyanazzal a számmal.", - "phone.number_already_used": "A telefonszám már használatban van.", - "phone.number_format_required": "A telefonszámnak E.164 formátumban kell lennie (például: +1234567890).", - "phone.number_not_in_service": "A szolgáltatód szerint ez a szám nem aktív. Ellenőrizd a számot és próbáld újra, vagy írj a support@fluxer.app címre, ha a szám helyes.", - "phone.number_not_mobile": "Ez nem mobilszám, így nem tudja fogadni az SMS-ünket. Használj mobilszámot, vagy írj a support@fluxer.app címre, ha szerinted ez tévedés.", - "phone.verification_code_invalid": "Érvénytelen telefonos ellenőrző kód.", - "phone.verification_needs_review": "Nem tudtuk automatikusan ellenőrizni ezt a számot. Írj a support@fluxer.app címre, és egy munkatárs átnézi a fiókodat.", - "phone.verification_required": "Telefonos ellenőrzés kötelező.", "premium_and_plans.animated_avatars_require_premium": "Az animált profilképekhez prémiumcsomag szükséges.", "premium_and_plans.banners_require_premium": "A borítóképekhez prémiumcsomag szükséges.", "premium_and_plans.bio_requires_premium_for_length": "A {maxLength} karakternél hosszabb bemutatkozáshoz prémiumcsomag szükséges.", @@ -423,7 +407,6 @@ const ERROR_I18N_HU_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Várnod kell, mielőtt újra kérheted az IP-cím engedélyezését.", "rate_limits.ip_authorization_resend_limit_exceeded": "Túllépted az IP-engedélyezés újraküldési korlátját.", "rate_limits.message_crosspost_rate_limited": "Ez a csatorna elérte a közzétételi korlátját. Egymás után 10 üzenetet tehet közzé, utána 6 percenként még egyet.", - "rate_limits.phone_rate_limit_exceeded": "Túl sok telefonos kérést küldtél.", "rate_limits.pronouns_changed_too_often": "Mostanában túl gyakran változtattad meg a névmásaidat. Próbáld újra {minutes, plural, one {# perc} other {# perc}} múlva.", "rate_limits.published_message_edit_rate_limited": "Ez a közzétett üzenet elérte a szerkesztési korlátját. Egymás után 3-szor szerkeszthető, utána 20 percenként még egyszer.", "rate_limits.rate_limited": "Túl sok kérést küldtél.", diff --git a/packages/errors/src/i18n/locales/id.ts b/packages/errors/src/i18n/locales/id.ts index e60799e86..19e974ef2 100644 --- a/packages/errors/src/i18n/locales/id.ts +++ b/packages/errors/src/i18n/locales/id.ts @@ -7,9 +7,7 @@ const ERROR_I18N_ID_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Verifikasi email diperlukan untuk tindakan ini.", "account.guild_verification_required": "Verifikasi komunitas diperlukan.", "account.ip_authorization_required": "Otorisasi IP diperlukan.", - "account.locked_suspicious_activity": "Akunmu terkunci karena aktivitas mencurigakan.", - "account.phone_gate_escape_unavailable": "Verifikasi telepon tidak dapat ditunda untuk akun ini.", - "account.phone_required_for_guild": "Kamu perlu menambahkan nomor telepon untuk mengirim pesan di komunitas ini.", + "account.limited": "Akunmu dibatasi. Periksa emailmu untuk mengetahui cara mencabut pembatasannya.", "account.sensitive_content_filter_age_restricted": "Filter konten sensitif ini tidak tersedia untuk kelompok usiamu.", "account.session_timeout": "Sesi berakhir. Muat ulang halaman dan masuk lagi.", "account.session_token_mismatch": "Token sesi tidak cocok.", @@ -32,7 +30,6 @@ const ERROR_I18N_ID_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Isi formulir tidak valid.", "admin_and_system.invalid_format": "Nilai yang diberikan berformat tidak valid.", "admin_and_system.invalid_integer_format": "Format integer tidak valid.", - "admin_and_system.invalid_suspicious_flags_format": "Format flag mencurigakan tidak valid.", "admin_and_system.invalid_system_flag": "Flag sistem tidak valid.", "admin_and_system.invalid_timeout_value": "Nilai batas waktu tidak valid.", "admin_and_system.invalid_timestamp": "Timestamp tidak valid.", @@ -44,7 +41,6 @@ const ERROR_I18N_ID_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Validasi respons gagal: {errors}.", "admin_and_system.test_harness_disabled": "Test harness dinonaktifkan.", "admin_and_system.test_harness_forbidden": "Test harness dilarang.", - "admin_and_system.unknown_suspicious_flag": "Flag mencurigakan tidak dikenal.", "admin_and_system.update_failed": "Tidak bisa memperbarui sumber daya. Coba lagi.", "admin_and_system.user_must_be_bot_for_system_user": "Pengguna harus bot untuk ditandai sebagai pengguna sistem.", "age_verification.already_verified": "Kamu sudah menyelesaikan verifikasi usia.", @@ -394,18 +390,6 @@ const ERROR_I18N_ID_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Pengguna ini tidak ada di saluran.", "permissions.user_not_in_voice": "Pengguna ini tidak sedang di saluran suara.", "permissions.user_owns_guilds": "Pengguna ini memiliki komunitas.", - "phone.add_not_eligible": "Kamu tidak memenuhi syarat untuk menambahkan nomor telepon ke akunmu.", - "phone.country_not_supported": "Kami tidak mengirim SMS verifikasi ke negara ini. Pakai nomor ponsel dari negara lain, atau kirim email ke support@fluxer.app dan seseorang akan meninjau akunmu.", - "phone.inbound_verification_required": "Nomor ini diverifikasi dengan cara kamu yang mengirim SMS ke kami, bukan kami yang mengirim SMS ke kamu. Mulai verifikasi telepon lagi untuk mendapatkan kodenya dan nomor tujuan SMS-nya.", - "phone.invalid_number": "Nomor telepon tidak valid.", - "phone.lookup_unavailable": "Pengecekan nomor telepon kami sedang bermasalah, jadi kami berhenti sebelum mengirim kodemu. Ini masalah di sisi kami, bukan di nomormu. Tunggu beberapa menit, lalu coba lagi dengan nomor yang sama.", - "phone.number_already_used": "Nomor telepon sudah digunakan.", - "phone.number_format_required": "Nomor telepon harus dalam format E.164 (misalnya: +1234567890).", - "phone.number_not_in_service": "Operator selulermu menyatakan nomor ini tidak aktif. Periksa nomornya dan coba lagi, atau kirim email ke support@fluxer.app kalau nomornya sudah benar.", - "phone.number_not_mobile": "Ini bukan nomor ponsel, jadi tidak bisa menerima SMS dari kami. Pakai nomor ponsel, atau kirim email ke support@fluxer.app kalau menurutmu ini keliru.", - "phone.verification_code_invalid": "Kode verifikasi telepon tidak valid.", - "phone.verification_needs_review": "Kami tidak bisa memverifikasi nomor ini secara otomatis. Kirim email ke support@fluxer.app dan seseorang akan meninjau akunmu.", - "phone.verification_required": "Verifikasi telepon diperlukan.", "premium_and_plans.animated_avatars_require_premium": "Avatar animasi butuh paket Premium.", "premium_and_plans.banners_require_premium": "Banner butuh paket Premium.", "premium_and_plans.bio_requires_premium_for_length": "Bio lebih dari {maxLength} karakter butuh paket Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_ID_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Kirim ulang otorisasi IP sedang dalam masa tunggu.", "rate_limits.ip_authorization_resend_limit_exceeded": "Batas kirim ulang otorisasi IP terlampaui.", "rate_limits.message_crosspost_rate_limited": "Saluran ini sudah mencapai batas publikasinya. Saluran ini bisa memublikasikan 10 pesan berturut-turut, lalu satu lagi setiap 6 menit.", - "rate_limits.phone_rate_limit_exceeded": "Batas laju permintaan telepon terlampaui.", "rate_limits.pronouns_changed_too_often": "Kamu terlalu sering mengubah kata ganti belakangan ini. Coba lagi dalam {minutes} {minutes, plural, other {menit}}.", "rate_limits.published_message_edit_rate_limited": "Pesan yang dipublikasikan ini sudah mencapai batas pengeditannya. Pesan ini bisa diedit 3 kali berturut-turut, lalu sekali lagi setiap 20 menit.", "rate_limits.rate_limited": "Kamu terkena batas laju.", diff --git a/packages/errors/src/i18n/locales/it.ts b/packages/errors/src/i18n/locales/it.ts index 9b2108b2f..2c4f93f00 100644 --- a/packages/errors/src/i18n/locales/it.ts +++ b/packages/errors/src/i18n/locales/it.ts @@ -7,9 +7,7 @@ const ERROR_I18N_IT_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "La verifica dell'email è richiesta per questa azione.", "account.guild_verification_required": "La verifica della community è obbligatoria.", "account.ip_authorization_required": "L'autorizzazione IP è obbligatoria.", - "account.locked_suspicious_activity": "Il tuo account è bloccato a causa di attività sospette.", - "account.phone_gate_escape_unavailable": "Questo account non può rimandare la verifica del numero di telefono.", - "account.phone_required_for_guild": "Devi aggiungere un numero di telefono per inviare messaggi in questa community.", + "account.limited": "Il tuo account è limitato. Controlla la tua email per sapere come rimuovere la limitazione.", "account.sensitive_content_filter_age_restricted": "Questo filtro per contenuti sensibili non è disponibile per la tua età.", "account.session_timeout": "Sessione scaduta. Aggiorna la pagina e accedi di nuovo.", "account.session_token_mismatch": "Token di sessione non corrispondente.", @@ -32,7 +30,6 @@ const ERROR_I18N_IT_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Corpo del modulo non valido.", "admin_and_system.invalid_format": "Il valore fornito è in un formato non valido.", "admin_and_system.invalid_integer_format": "Formato dell'intero non valido.", - "admin_and_system.invalid_suspicious_flags_format": "Formato dei flag sospetti non valido.", "admin_and_system.invalid_system_flag": "Flag di sistema non valido.", "admin_and_system.invalid_timeout_value": "Valore di timeout non valido.", "admin_and_system.invalid_timestamp": "Timestamp non valido.", @@ -44,7 +41,6 @@ const ERROR_I18N_IT_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "La validazione della risposta è fallita: {errors}.", "admin_and_system.test_harness_disabled": "Ambiente di test disabilitato.", "admin_and_system.test_harness_forbidden": "Ambiente di test vietato.", - "admin_and_system.unknown_suspicious_flag": "Flag di attività sospetta sconosciuto.", "admin_and_system.update_failed": "Non è stato possibile aggiornare la risorsa. Riprova.", "admin_and_system.user_must_be_bot_for_system_user": "L'utente deve essere un bot per essere contrassegnato come utente di sistema.", "age_verification.already_verified": "Hai già completato la verifica dell'età.", @@ -394,18 +390,6 @@ const ERROR_I18N_IT_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "L'utente non è nel canale.", "permissions.user_not_in_voice": "Questo utente non è in un canale vocale.", "permissions.user_owns_guilds": "Questo utente è proprietario di community.", - "phone.add_not_eligible": "Non puoi aggiungere un numero di telefono al tuo account.", - "phone.country_not_supported": "Non inviamo SMS di verifica in questo Paese. Usa un numero di cellulare di un altro Paese, oppure scrivi a support@fluxer.app e una persona esaminerà il tuo account.", - "phone.inbound_verification_required": "Questo numero si verifica con un SMS che invii tu a noi, non con un SMS che ti inviamo noi. Avvia di nuovo la verifica del telefono per ottenere il codice e il numero a cui inviarlo.", - "phone.invalid_number": "Numero di telefono non valido.", - "phone.lookup_unavailable": "Il nostro controllo dei numeri di telefono al momento non funziona, quindi ci siamo fermati prima di inviarti il codice. La colpa è nostra, non del tuo numero. Aspetta qualche minuto e riprova con lo stesso numero.", - "phone.number_already_used": "Il numero di telefono è già in uso.", - "phone.number_format_required": "Il numero di telefono deve essere nel formato E.164 (ad esempio, +1234567890).", - "phone.number_not_in_service": "Il tuo operatore dice che questo numero non è attivo. Controlla il numero e riprova, oppure scrivi a support@fluxer.app se è corretto.", - "phone.number_not_mobile": "Questo non è un numero di cellulare, quindi non può ricevere il nostro SMS. Usa un numero di cellulare, oppure scrivi a support@fluxer.app se pensi che sia un errore.", - "phone.verification_code_invalid": "Codice di verifica del telefono non valido.", - "phone.verification_needs_review": "Non siamo riusciti a verificare questo numero automaticamente. Scrivi a support@fluxer.app e una persona esaminerà il tuo account.", - "phone.verification_required": "La verifica del telefono è richiesta.", "premium_and_plans.animated_avatars_require_premium": "Gli avatar animati richiedono Premium.", "premium_and_plans.banners_require_premium": "I banner richiedono Premium.", "premium_and_plans.bio_requires_premium_for_length": "Una biografia più lunga di {maxLength} caratteri richiede Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_IT_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Devi attendere prima di richiedere un nuovo invio dell’email di autorizzazione IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "Il limite di reinvio dell'autorizzazione IP è stato superato.", "rate_limits.message_crosspost_rate_limited": "Questo canale ha raggiunto il limite di pubblicazione. Può pubblicare 10 messaggi di fila, poi uno in più ogni 6 minuti.", - "rate_limits.phone_rate_limit_exceeded": "Hai superato il limite di richieste di verifica telefonica.", "rate_limits.pronouns_changed_too_often": "Hai cambiato i tuoi pronomi troppo spesso di recente. Riprova tra {minutes, plural, one {# minuto} other {# minuti}}.", "rate_limits.published_message_edit_rate_limited": "Questo messaggio pubblicato ha raggiunto il limite di modifiche. Può essere modificato 3 volte di fila, poi un'altra volta ogni 20 minuti.", "rate_limits.rate_limited": "Hai superato il limite di richieste.", diff --git a/packages/errors/src/i18n/locales/ja.ts b/packages/errors/src/i18n/locales/ja.ts index ba62a2188..777296852 100644 --- a/packages/errors/src/i18n/locales/ja.ts +++ b/packages/errors/src/i18n/locales/ja.ts @@ -7,9 +7,7 @@ const ERROR_I18N_JA_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "この操作にはメールアドレスの確認が必要です。", "account.guild_verification_required": "コミュニティの認証が必要です。", "account.ip_authorization_required": "IPアドレスの認証が必要です。", - "account.locked_suspicious_activity": "不審なアクティビティのため、アカウントはロックされています。", - "account.phone_gate_escape_unavailable": "このアカウントでは、電話番号の確認を保留することはできません。", - "account.phone_required_for_guild": "このコミュニティでメッセージを送信するには、電話番号を追加する必要があります。", + "account.limited": "アカウントが制限されています。制限を解除する方法はメールをご確認ください。", "account.sensitive_content_filter_age_restricted": "このセンシティブコンテンツフィルターは、現在の年齢層ではご利用いただけません。", "account.session_timeout": "セッションがタイムアウトしました。ページを更新して、もう一度ログインしてください。", "account.session_token_mismatch": "セッショントークンが一致しません。", @@ -32,7 +30,6 @@ const ERROR_I18N_JA_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "フォームデータが無効です。", "admin_and_system.invalid_format": "入力された値の形式が無効です。", "admin_and_system.invalid_integer_format": "整数の形式が無効です。", - "admin_and_system.invalid_suspicious_flags_format": "不審フラグの形式が無効です。", "admin_and_system.invalid_system_flag": "システムのフラグが無効です。", "admin_and_system.invalid_timeout_value": "タイムアウトの値が無効です。", "admin_and_system.invalid_timestamp": "タイムスタンプが無効です。", @@ -44,7 +41,6 @@ const ERROR_I18N_JA_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "レスポンスの検証に失敗しました:{errors}。", "admin_and_system.test_harness_disabled": "テストハーネスは無効です。", "admin_and_system.test_harness_forbidden": "テストハーネスは禁止されています。", - "admin_and_system.unknown_suspicious_flag": "不明な不審フラグです。", "admin_and_system.update_failed": "リソースを更新できませんでした。もう一度お試しください。", "admin_and_system.user_must_be_bot_for_system_user": "システムユーザーとしてマークするには、ユーザーはボットである必要があります。", "age_verification.already_verified": "年齢確認はすでに完了しています。", @@ -394,18 +390,6 @@ const ERROR_I18N_JA_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "このユーザーはチャンネルにいません。", "permissions.user_not_in_voice": "このユーザーはボイスチャンネルにいません。", "permissions.user_owns_guilds": "このユーザーはコミュニティを所有しています。", - "phone.add_not_eligible": "このアカウントには電話番号を追加できません。", - "phone.country_not_supported": "この国には認証SMSを送信していません。別の国の携帯電話番号を使用するか、support@fluxer.appにメールしていただければ、担当者がアカウントを確認します。", - "phone.inbound_verification_required": "この番号は、こちらからSMSを送るのではなく、ご自身からこちらにSMSを送っていただいて認証します。電話認証をもう一度開始すると、送信するコードと送信先の番号が表示されます。", - "phone.invalid_number": "電話番号が無効です。", - "phone.lookup_unavailable": "電話番号の確認システムが現在停止しているため、認証コードを送信する前に処理を中止しました。原因は番号ではなく、こちら側にあります。数分待ってから、同じ番号でもう一度お試しください。", - "phone.number_already_used": "電話番号はすでに使用されています。", - "phone.number_format_required": "電話番号はE.164形式(例: +1234567890)である必要があります。", - "phone.number_not_in_service": "この番号は現在使われていないと携帯電話会社から回答がありました。番号を確認してもう一度お試しいただくか、番号が正しい場合はsupport@fluxer.appにメールしてください。", - "phone.number_not_mobile": "この番号は携帯電話番号ではないため、こちらからのSMSを受信できません。携帯電話番号を使用するか、誤りだと思う場合はsupport@fluxer.appにメールしてください。", - "phone.verification_code_invalid": "電話認証コードが無効です。", - "phone.verification_needs_review": "この番号を自動で認証できませんでした。support@fluxer.appにメールしていただければ、担当者がアカウントを確認します。", - "phone.verification_required": "電話認証が必要です。", "premium_and_plans.animated_avatars_require_premium": "アニメーションアバターにはプレミアムが必要です。", "premium_and_plans.banners_require_premium": "バナーにはプレミアムが必要です。", "premium_and_plans.bio_requires_premium_for_length": "{maxLength}文字を超える自己紹介にはプレミアムが必要です。", @@ -423,7 +407,6 @@ const ERROR_I18N_JA_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "IP認証の再送信はクールダウン中です。", "rate_limits.ip_authorization_resend_limit_exceeded": "IP認証の再送信制限を超えました。", "rate_limits.message_crosspost_rate_limited": "このチャンネルは公開の上限に達しました。連続で10件まで公開でき、その後は6分ごとに1件ずつ公開できます。", - "rate_limits.phone_rate_limit_exceeded": "電話番号のレート制限を超えました。", "rate_limits.pronouns_changed_too_often": "代名詞の変更回数が多すぎます。{minutes, plural, other {#分}}後にもう一度お試しください。", "rate_limits.published_message_edit_rate_limited": "この公開済みメッセージは編集の上限に達しました。連続で3回まで編集でき、その後は20分ごとに1回ずつ編集できます。", "rate_limits.rate_limited": "レート制限がかかっています。", diff --git a/packages/errors/src/i18n/locales/ko.ts b/packages/errors/src/i18n/locales/ko.ts index 8317e201f..aa994bf81 100644 --- a/packages/errors/src/i18n/locales/ko.ts +++ b/packages/errors/src/i18n/locales/ko.ts @@ -7,9 +7,7 @@ const ERROR_I18N_KO_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "이 작업에는 이메일 인증이 필요해요.", "account.guild_verification_required": "커뮤니티 인증이 필요해요.", "account.ip_authorization_required": "IP 인증이 필요해요.", - "account.locked_suspicious_activity": "의심스러운 활동으로 계정이 잠겼어요.", - "account.phone_gate_escape_unavailable": "이 계정에서는 전화번호 인증을 미룰 수 없어요.", - "account.phone_required_for_guild": "이 커뮤니티에서 메시지를 보내려면 전화번호를 추가해야 해요.", + "account.limited": "계정이 제한되었어요. 제한을 해제하는 방법은 이메일을 확인해 주세요.", "account.sensitive_content_filter_age_restricted": "이 민감한 콘텐츠 필터는 현재 연령대에서는 사용할 수 없어요.", "account.session_timeout": "세션이 만료되었어요. 페이지를 새로고침하고 다시 로그인해 주세요.", "account.session_token_mismatch": "세션 토큰이 일치하지 않아요.", @@ -32,7 +30,6 @@ const ERROR_I18N_KO_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "양식 본문이 유효하지 않아요.", "admin_and_system.invalid_format": "제공된 값의 형식이 올바르지 않아요.", "admin_and_system.invalid_integer_format": "정수 형식이 유효하지 않아요.", - "admin_and_system.invalid_suspicious_flags_format": "의심스러운 플래그 형식이 유효하지 않아요.", "admin_and_system.invalid_system_flag": "시스템 플래그가 유효하지 않아요.", "admin_and_system.invalid_timeout_value": "타임아웃 값이 유효하지 않아요.", "admin_and_system.invalid_timestamp": "타임스탬프가 유효하지 않아요.", @@ -44,7 +41,6 @@ const ERROR_I18N_KO_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "응답 유효성 검사에 실패했어요: {errors}.", "admin_and_system.test_harness_disabled": "테스트 하네스가 비활성화되었어요.", "admin_and_system.test_harness_forbidden": "테스트 하네스 사용이 금지되어 있어요.", - "admin_and_system.unknown_suspicious_flag": "알 수 없는 의심스러운 플래그예요.", "admin_and_system.update_failed": "리소스를 업데이트하지 못했어요. 다시 시도해 주세요.", "admin_and_system.user_must_be_bot_for_system_user": "시스템 사용자로 표시하려면 봇이어야 해요.", "age_verification.already_verified": "연령 인증을 이미 완료했어요.", @@ -394,18 +390,6 @@ const ERROR_I18N_KO_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "이 사용자는 채널에 없어요.", "permissions.user_not_in_voice": "이 사용자는 음성 채널에 없어요.", "permissions.user_owns_guilds": "이 사용자는 커뮤니티를 소유하고 있어요.", - "phone.add_not_eligible": "회원님 계정에 전화번호를 추가할 수 없어요.", - "phone.country_not_supported": "이 국가로는 인증 문자 메시지를 보내지 않아요. 다른 국가의 휴대전화 번호를 사용하거나, support@fluxer.app으로 메일을 보내면 담당자가 회원님 계정을 검토해 드려요.", - "phone.inbound_verification_required": "이 번호는 저희가 문자 메시지를 보내는 대신, 회원님이 저희에게 문자 메시지를 보내서 인증해요. 전화 인증을 다시 시작하면 보낼 코드와 받는 번호를 알려드려요.", - "phone.invalid_number": "전화번호가 올바르지 않아요.", - "phone.lookup_unavailable": "전화번호 확인 시스템에 문제가 생겨서 인증 코드를 보내기 전에 멈췄어요. 회원님 번호 문제가 아니라 저희 문제예요. 몇 분 뒤에 같은 번호로 다시 시도해 주세요.", - "phone.number_already_used": "이미 사용 중인 전화번호예요.", - "phone.number_format_required": "전화번호는 E.164 형식(예: +1234567890)이어야 해요.", - "phone.number_not_in_service": "통신사에서 이 번호가 사용 중이 아니라고 알려왔어요. 번호를 확인하고 다시 시도하거나, 번호가 맞다면 support@fluxer.app으로 메일을 보내 주세요.", - "phone.number_not_mobile": "이 번호는 휴대전화 번호가 아니라서 저희 문자 메시지를 받을 수 없어요. 휴대전화 번호를 사용하거나, 잘못된 것 같다면 support@fluxer.app으로 메일을 보내 주세요.", - "phone.verification_code_invalid": "전화 인증 코드가 올바르지 않아요.", - "phone.verification_needs_review": "이 번호를 자동으로 인증하지 못했어요. support@fluxer.app으로 메일을 보내면 담당자가 회원님 계정을 검토해 드려요.", - "phone.verification_required": "전화 인증이 필요해요.", "premium_and_plans.animated_avatars_require_premium": "움직이는 아바타는 프리미엄이 필요해요.", "premium_and_plans.banners_require_premium": "배너는 프리미엄이 필요해요.", "premium_and_plans.bio_requires_premium_for_length": "{maxLength}자가 넘는 소개글을 쓰려면 프리미엄이 필요해요.", @@ -423,7 +407,6 @@ const ERROR_I18N_KO_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "IP 인증을 다시 보내려면 잠시 기다려 주세요.", "rate_limits.ip_authorization_resend_limit_exceeded": "IP 인증 재전송 한도를 초과했어요.", "rate_limits.message_crosspost_rate_limited": "이 채널의 발행 한도에 도달했어요. 연속으로 10개의 메시지를 발행할 수 있고, 그 후에는 6분마다 1개씩 더 발행할 수 있어요.", - "rate_limits.phone_rate_limit_exceeded": "전화번호 요청 한도를 초과했어요.", "rate_limits.pronouns_changed_too_often": "최근에 대명사를 너무 자주 변경했어요. {minutes, plural, other {#분}} 후에 다시 시도해 주세요.", "rate_limits.published_message_edit_rate_limited": "이 발행된 메시지의 수정 한도에 도달했어요. 연속으로 3번 수정할 수 있고, 그 후에는 20분마다 1번씩 더 수정할 수 있어요.", "rate_limits.rate_limited": "요청이 제한되고 있어요.", diff --git a/packages/errors/src/i18n/locales/lt.ts b/packages/errors/src/i18n/locales/lt.ts index bacc68e1c..6188e18da 100644 --- a/packages/errors/src/i18n/locales/lt.ts +++ b/packages/errors/src/i18n/locales/lt.ts @@ -7,9 +7,7 @@ const ERROR_I18N_LT_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Šiam veiksmui reikia patvirtinti el. paštą.", "account.guild_verification_required": "Reikalingas bendruomenės patvirtinimas.", "account.ip_authorization_required": "Reikalinga IP adreso autorizacija.", - "account.locked_suspicious_activity": "Tavo paskyra užrakinta dėl įtartinos veiklos.", - "account.phone_gate_escape_unavailable": "Telefono numerio patikrinimo atidėjimas šiai paskyrai negalimas.", - "account.phone_required_for_guild": "Kad galėtum siųsti žinutes šioje bendruomenėje, turi pridėti telefono numerį.", + "account.limited": "Tavo paskyra apribota. Patikrink el. paštą, kaip panaikinti apribojimą.", "account.sensitive_content_filter_age_restricted": "Šis jautraus turinio filtras negalimas tavo amžiaus grupei.", "account.session_timeout": "Seanso laikas baigėsi. Atnaujink puslapį ir prisijunk dar kartą.", "account.session_token_mismatch": "Seanso žetonas neatitinka.", @@ -32,7 +30,6 @@ const ERROR_I18N_LT_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Netinkamas formos turinys.", "admin_and_system.invalid_format": "Pateikta reikšmė yra netinkamo formato.", "admin_and_system.invalid_integer_format": "Netinkamas sveikojo skaičiaus formatas.", - "admin_and_system.invalid_suspicious_flags_format": "Netinkamas įtartinų vėliavėlių formatas.", "admin_and_system.invalid_system_flag": "Netinkama sistemos vėliavėlė.", "admin_and_system.invalid_timeout_value": "Netinkama laiko intervalo reikšmė.", "admin_and_system.invalid_timestamp": "Netinkama laiko žyma.", @@ -44,7 +41,6 @@ const ERROR_I18N_LT_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Nepavyko patikrinti atsakymo: {errors}.", "admin_and_system.test_harness_disabled": "Testavimo sistema išjungta.", "admin_and_system.test_harness_forbidden": "Testavimo sistema draudžiama.", - "admin_and_system.unknown_suspicious_flag": "Nežinoma įtartina vėliavėlė.", "admin_and_system.update_failed": "Ištekliaus atnaujinti nepavyko. Pabandyk dar kartą.", "admin_and_system.user_must_be_bot_for_system_user": "Naudotojas turi būti botas, kad jį būtų galima pažymėti kaip sistemos naudotoją.", "age_verification.already_verified": "Amžiaus patvirtinimą jau atlikai.", @@ -394,18 +390,6 @@ const ERROR_I18N_LT_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Šio naudotojo nėra kanale.", "permissions.user_not_in_voice": "Šis naudotojas nėra balso kanale.", "permissions.user_owns_guilds": "Šis naudotojas yra bendruomenių savininkas.", - "phone.add_not_eligible": "Negali pridėti telefono numerio prie savo paskyros.", - "phone.country_not_supported": "Į šią šalį patvirtinimo žinučių nesiunčiame. Naudok kitos šalies mobiliojo telefono numerį arba parašyk el. laišką adresu support@fluxer.app ir žmogus peržiūrės tavo paskyrą.", - "phone.inbound_verification_required": "Šis numeris patvirtinamas taip, kad žinutę mums siunti tu, o ne mes tau. Pradėk telefono patvirtinimą iš naujo, kad gautum kodą ir numerį, kuriuo reikia išsiųsti žinutę.", - "phone.invalid_number": "Neteisingas telefono numeris.", - "phone.lookup_unavailable": "Mūsų telefono numerių patikra šiuo metu neveikia, todėl sustojome dar neišsiuntę tavo kodo. Tai mūsų, o ne tavo numerio kaltė. Palauk kelias minutes ir pabandyk tą patį numerį dar kartą.", - "phone.number_already_used": "Telefono numeris jau naudojamas.", - "phone.number_format_required": "Telefono numeris turi būti E.164 formatu (pvz., +1234567890).", - "phone.number_not_in_service": "Tavo operatorius nurodo, kad šis numeris neaktyvus. Patikrink numerį ir bandyk dar kartą arba parašyk el. laišką adresu support@fluxer.app, jei numeris teisingas.", - "phone.number_not_mobile": "Tai ne mobiliojo telefono numeris, todėl jis negali gauti mūsų žinutės. Naudok mobiliojo telefono numerį arba parašyk el. laišką adresu support@fluxer.app, jei manai, kad tai klaida.", - "phone.verification_code_invalid": "Neteisingas telefono patvirtinimo kodas.", - "phone.verification_needs_review": "Nepavyko automatiškai patvirtinti šio numerio. Parašyk el. laišką adresu support@fluxer.app ir žmogus peržiūrės tavo paskyrą.", - "phone.verification_required": "Reikalingas telefono patvirtinimas.", "premium_and_plans.animated_avatars_require_premium": "Animuotiems avatarams reikia Premium.", "premium_and_plans.banners_require_premium": "Baneriams reikia Premium.", "premium_and_plans.bio_requires_premium_for_length": "Biografijai, ilgesnei nei {maxLength} simbolių, reikia Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_LT_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "IP autorizacijos pakartotinis siuntimas yra apribotas.", "rate_limits.ip_authorization_resend_limit_exceeded": "Viršyta IP autorizacijos pakartotinio siuntimo riba.", "rate_limits.message_crosspost_rate_limited": "Šis kanalas pasiekė skelbimo ribą. Jis gali paskelbti 10 žinučių iš eilės, o paskui dar po vieną kas 6 minutes.", - "rate_limits.phone_rate_limit_exceeded": "Viršyta telefono užklausų riba.", "rate_limits.pronouns_changed_too_often": "Pastaruoju metu per dažnai keitei įvardžius. Bandyk dar kartą po {minutes, plural, one {# minutės} few {# minučių} many {# minutės} other {# minučių}}.", "rate_limits.published_message_edit_rate_limited": "Ši paskelbta žinutė pasiekė redagavimo ribą. Ją galima redaguoti 3 kartus iš eilės, o paskui dar kartą kas 20 minučių.", "rate_limits.rate_limited": "Tavo veiksmai ribojami.", diff --git a/packages/errors/src/i18n/locales/nl.ts b/packages/errors/src/i18n/locales/nl.ts index 8301860d4..ee20058a7 100644 --- a/packages/errors/src/i18n/locales/nl.ts +++ b/packages/errors/src/i18n/locales/nl.ts @@ -7,9 +7,7 @@ const ERROR_I18N_NL_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Voor deze actie is e-mailverificatie vereist.", "account.guild_verification_required": "Voor deze community is verificatie vereist.", "account.ip_authorization_required": "IP-autorisatie is vereist.", - "account.locked_suspicious_activity": "Je account is vergrendeld vanwege verdachte activiteit.", - "account.phone_gate_escape_unavailable": "Voor dit account kan de verificatie van het telefoonnummer niet worden uitgesteld.", - "account.phone_required_for_guild": "Je moet een telefoonnummer toevoegen om berichten te kunnen versturen in deze community.", + "account.limited": "Je account is beperkt. Bekijk je e-mail om te zien hoe je de beperking opheft.", "account.sensitive_content_filter_age_restricted": "Dit filter voor gevoelige inhoud is niet beschikbaar voor jouw leeftijdsgroep.", "account.session_timeout": "Sessie is verlopen. Vernieuw de pagina en log opnieuw in.", "account.session_token_mismatch": "Sessietoken komt niet overeen.", @@ -32,7 +30,6 @@ const ERROR_I18N_NL_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Ongeldige formuliergegevens.", "admin_and_system.invalid_format": "De opgegeven waarde heeft een ongeldig formaat.", "admin_and_system.invalid_integer_format": "Ongeldig formaat voor een geheel getal.", - "admin_and_system.invalid_suspicious_flags_format": "Ongeldig formaat voor markeringen van verdachte activiteit.", "admin_and_system.invalid_system_flag": "Ongeldige systeem-vlag.", "admin_and_system.invalid_timeout_value": "Ongeldige time-outwaarde.", "admin_and_system.invalid_timestamp": "Ongeldige tijdstempel.", @@ -44,7 +41,6 @@ const ERROR_I18N_NL_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Validatie van de respons mislukt: {errors}.", "admin_and_system.test_harness_disabled": "Testfunctionaliteit is uitgeschakeld.", "admin_and_system.test_harness_forbidden": "Testfunctionaliteit is verboden.", - "admin_and_system.unknown_suspicious_flag": "Onbekende markering voor verdachte activiteit.", "admin_and_system.update_failed": "We konden het item niet bijwerken. Probeer het opnieuw.", "admin_and_system.user_must_be_bot_for_system_user": "Gebruiker moet een bot zijn om als systeemgebruiker te worden gemarkeerd.", "age_verification.already_verified": "Je hebt de leeftijdsverificatie al voltooid.", @@ -394,18 +390,6 @@ const ERROR_I18N_NL_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Deze gebruiker is niet in het kanaal.", "permissions.user_not_in_voice": "Deze gebruiker zit niet in een spraakkanaal.", "permissions.user_owns_guilds": "Deze gebruiker is eigenaar van communities.", - "phone.add_not_eligible": "Je kunt geen telefoonnummer aan je account toevoegen.", - "phone.country_not_supported": "We sturen geen verificatie-sms naar dit land. Gebruik een mobiel nummer uit een ander land of mail naar support@fluxer.app, dan beoordeelt een medewerker je account.", - "phone.inbound_verification_required": "Dit nummer wordt geverifieerd doordat jij ons een sms stuurt, niet doordat wij jou er een sturen. Start de telefoonverificatie opnieuw om de code te krijgen en het nummer waar je die naartoe stuurt.", - "phone.invalid_number": "Ongeldig telefoonnummer.", - "phone.lookup_unavailable": "Onze controle van telefoonnummers werkt op dit moment niet, dus we zijn gestopt voordat je code werd verstuurd. Dit ligt aan ons, niet aan je nummer. Wacht een paar minuten en probeer daarna hetzelfde nummer opnieuw.", - "phone.number_already_used": "Telefoonnummer is al in gebruik.", - "phone.number_format_required": "Telefoonnummer moet in E.164-formaat zijn (bijvoorbeeld +1234567890).", - "phone.number_not_in_service": "Je provider geeft aan dat dit nummer niet actief is. Controleer het nummer en probeer het opnieuw, of mail naar support@fluxer.app als het klopt.", - "phone.number_not_mobile": "Dit is geen mobiel nummer, dus het kan onze sms niet ontvangen. Gebruik een mobiel nummer of mail naar support@fluxer.app als je denkt dat dat niet klopt.", - "phone.verification_code_invalid": "Ongeldige verificatiecode voor telefoonnummer.", - "phone.verification_needs_review": "We konden dit nummer niet automatisch verifiëren. Mail naar support@fluxer.app, dan beoordeelt een medewerker je account.", - "phone.verification_required": "Telefoonverificatie is nodig.", "premium_and_plans.animated_avatars_require_premium": "Premium is vereist voor geanimeerde avatars.", "premium_and_plans.banners_require_premium": "Premium is vereist voor banners.", "premium_and_plans.bio_requires_premium_for_length": "Een bio langer dan {maxLength} tekens vereist Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_NL_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Wacht even voordat je de e-mail voor IP-autorisatie opnieuw verstuurt.", "rate_limits.ip_authorization_resend_limit_exceeded": "De limiet voor het opnieuw versturen van IP-autorisatie is overschreden.", "rate_limits.message_crosspost_rate_limited": "Dit kanaal heeft zijn publicatielimiet bereikt. Het kan 10 berichten achter elkaar publiceren en daarna elke 6 minuten één extra.", - "rate_limits.phone_rate_limit_exceeded": "De limiet voor telefoonaanvragen is overschreden.", "rate_limits.pronouns_changed_too_often": "Je hebt je voornaamwoorden de laatste tijd te vaak gewijzigd. Probeer het over {minutes, plural, one {# minuut} other {# minuten}} opnieuw.", "rate_limits.published_message_edit_rate_limited": "Dit gepubliceerde bericht heeft zijn bewerkingslimiet bereikt. Het kan 3 keer achter elkaar worden bewerkt en daarna elke 20 minuten nog één keer.", "rate_limits.rate_limited": "Je hebt te veel verzoeken in korte tijd verstuurd.", diff --git a/packages/errors/src/i18n/locales/no.ts b/packages/errors/src/i18n/locales/no.ts index 074d3353f..3dadf2cef 100644 --- a/packages/errors/src/i18n/locales/no.ts +++ b/packages/errors/src/i18n/locales/no.ts @@ -7,9 +7,7 @@ const ERROR_I18N_NO_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "E-postbekreftelse kreves for denne handlingen.", "account.guild_verification_required": "Verifisering i fellesskapet er nødvendig.", "account.ip_authorization_required": "IP-autorisasjon er nødvendig.", - "account.locked_suspicious_activity": "Kontoen din er låst på grunn av mistenkelig aktivitet.", - "account.phone_gate_escape_unavailable": "Denne kontoen kan ikke utsette verifiseringen av telefonnummeret.", - "account.phone_required_for_guild": "Du må legge til et telefonnummer for å sende meldinger i dette fellesskapet.", + "account.limited": "Kontoen din er begrenset. Sjekk e-posten din for å se hvordan du opphever begrensningen.", "account.sensitive_content_filter_age_restricted": "Dette filteret for sensitivt innhold er ikke tilgjengelig for aldersgruppen din.", "account.session_timeout": "Økten din er utløpt. Oppdater siden og logg inn på nytt.", "account.session_token_mismatch": "Økttokenet samsvarer ikke.", @@ -32,7 +30,6 @@ const ERROR_I18N_NO_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Ugyldig skjemainnhold.", "admin_and_system.invalid_format": "Verdien er i et ugyldig format.", "admin_and_system.invalid_integer_format": "Ugyldig heltallsformat.", - "admin_and_system.invalid_suspicious_flags_format": "Ugyldig format for flagg som markerer mistenkelig aktivitet.", "admin_and_system.invalid_system_flag": "Ugyldig systemflagg.", "admin_and_system.invalid_timeout_value": "Ugyldig tidsavbruddsverdi.", "admin_and_system.invalid_timestamp": "Ugyldig tidsstempel.", @@ -44,7 +41,6 @@ const ERROR_I18N_NO_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Validering av svaret mislyktes: {errors}.", "admin_and_system.test_harness_disabled": "Testrammeverket er deaktivert.", "admin_and_system.test_harness_forbidden": "Testrammeverket er ikke tillatt.", - "admin_and_system.unknown_suspicious_flag": "Ukjent flagg for mistenkelig aktivitet.", "admin_and_system.update_failed": "Vi kunne ikke oppdatere ressursen. Prøv på nytt.", "admin_and_system.user_must_be_bot_for_system_user": "Brukeren må være en bot for å bli merket som en systembruker.", "age_verification.already_verified": "Du har allerede fullført aldersverifisering.", @@ -394,18 +390,6 @@ const ERROR_I18N_NO_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Denne brukeren er ikke i kanalen.", "permissions.user_not_in_voice": "Denne brukeren er ikke tilkoblet tale.", "permissions.user_owns_guilds": "Denne brukeren eier fellesskap.", - "phone.add_not_eligible": "Du oppfyller ikke kravene for å legge til et telefonnummer på kontoen din.", - "phone.country_not_supported": "Vi sender ikke bekreftelses-SMS til dette landet. Bruk et mobilnummer fra et annet land, eller send en e-post til support@fluxer.app, så går en person gjennom kontoen din.", - "phone.inbound_verification_required": "Dette nummeret bekreftes ved at du sender oss en SMS, ikke ved at vi sender deg en. Start telefonbekreftelsen på nytt for å få koden og nummeret du skal sende den til.", - "phone.invalid_number": "Ugyldig telefonnummer.", - "phone.lookup_unavailable": "Kontrollen vår av telefonnumre er nede akkurat nå, så vi stoppet før koden din ble sendt. Feilen ligger hos oss og skyldes ikke nummeret ditt. Vent noen minutter og prøv det samme nummeret igjen.", - "phone.number_already_used": "Telefonnummeret er allerede i bruk.", - "phone.number_format_required": "Telefonnummeret må være i E.164-format (for eksempel +1234567890).", - "phone.number_not_in_service": "Mobiloperatøren din oppgir at dette nummeret ikke er aktivt. Kontroller nummeret og prøv igjen, eller send en e-post til support@fluxer.app hvis det er riktig.", - "phone.number_not_mobile": "Dette er ikke et mobilnummer, så det kan ikke motta SMS-en vår. Bruk et mobilnummer, eller send en e-post til support@fluxer.app hvis du mener det er feil.", - "phone.verification_code_invalid": "Ugyldig telefonbekreftelseskode.", - "phone.verification_needs_review": "Vi kunne ikke bekrefte dette nummeret automatisk. Send en e-post til support@fluxer.app, så går en person gjennom kontoen din.", - "phone.verification_required": "Telefonbekreftelse er påkrevd.", "premium_and_plans.animated_avatars_require_premium": "Animerte avatarer krever Premium.", "premium_and_plans.banners_require_premium": "Bannere krever Premium.", "premium_and_plans.bio_requires_premium_for_length": "En bio på mer enn {maxLength} tegn krever Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_NO_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Du må vente før du kan be om å få tilsendt IP-autorisasjonen på nytt.", "rate_limits.ip_authorization_resend_limit_exceeded": "Grensen for å sende IP-autorisasjonen på nytt er overskredet.", "rate_limits.message_crosspost_rate_limited": "Denne kanalen har nådd publiseringsgrensen sin. Den kan publisere 10 meldinger på rad, og deretter én til hvert 6. minutt.", - "rate_limits.phone_rate_limit_exceeded": "Grensen for telefonforespørsler er overskredet.", "rate_limits.pronouns_changed_too_often": "Du har endret pronomenene dine for ofte nylig. Prøv igjen om {minutes, plural, one {# minutt} other {# minutter}}.", "rate_limits.published_message_edit_rate_limited": "Denne publiserte meldingen har nådd redigeringsgrensen sin. Den kan redigeres 3 ganger på rad, og deretter én gang til hvert 20. minutt.", "rate_limits.rate_limited": "Du har sendt for mange forespørsler på kort tid.", diff --git a/packages/errors/src/i18n/locales/pl.ts b/packages/errors/src/i18n/locales/pl.ts index 234c3b2df..28ac4e2f6 100644 --- a/packages/errors/src/i18n/locales/pl.ts +++ b/packages/errors/src/i18n/locales/pl.ts @@ -7,9 +7,7 @@ const ERROR_I18N_PL_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Weryfikacja adresu e-mail jest wymagana do wykonania tej czynności.", "account.guild_verification_required": "Wymagana jest weryfikacja społeczności.", "account.ip_authorization_required": "Wymagana jest autoryzacja adresu IP.", - "account.locked_suspicious_activity": "Twoje konto jest zablokowane z powodu podejrzanej aktywności.", - "account.phone_gate_escape_unavailable": "Na tym koncie nie można odłożyć weryfikacji numeru telefonu.", - "account.phone_required_for_guild": "Aby wysyłać wiadomości w tej społeczności, musisz dodać numer telefonu.", + "account.limited": "Twoje konto jest ograniczone. Sprawdź swoją skrzynkę e-mail, aby dowiedzieć się, jak znieść ograniczenie.", "account.sensitive_content_filter_age_restricted": "Ten filtr treści wrażliwych nie jest dostępny dla Twojej grupy wiekowej.", "account.session_timeout": "Sesja wygasła. Odśwież stronę i zaloguj się jeszcze raz.", "account.session_token_mismatch": "Niezgodność tokenu sesji.", @@ -32,7 +30,6 @@ const ERROR_I18N_PL_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Nieprawidłowe dane formularza.", "admin_and_system.invalid_format": "Podana wartość ma nieprawidłowy format.", "admin_and_system.invalid_integer_format": "Nieprawidłowy format liczby całkowitej.", - "admin_and_system.invalid_suspicious_flags_format": "Nieprawidłowy format flag podejrzanej aktywności.", "admin_and_system.invalid_system_flag": "Nieprawidłowa flaga systemowa.", "admin_and_system.invalid_timeout_value": "Nieprawidłowa wartość limitu czasu.", "admin_and_system.invalid_timestamp": "Nieprawidłowy znacznik czasu.", @@ -44,7 +41,6 @@ const ERROR_I18N_PL_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Walidacja odpowiedzi nie powiodła się: {errors}.", "admin_and_system.test_harness_disabled": "Środowisko testowe wyłączone.", "admin_and_system.test_harness_forbidden": "Środowisko testowe zabronione.", - "admin_and_system.unknown_suspicious_flag": "Nieznana flaga podejrzanej aktywności.", "admin_and_system.update_failed": "Nie udało się zaktualizować zasobu. Spróbuj jeszcze raz.", "admin_and_system.user_must_be_bot_for_system_user": "Użytkownik musi być botem, aby mógł być oznaczony jako użytkownik systemowy.", "age_verification.already_verified": "Weryfikacja wieku została już zakończona.", @@ -394,18 +390,6 @@ const ERROR_I18N_PL_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Użytkownika nie ma na kanale.", "permissions.user_not_in_voice": "Ten użytkownik nie uczestniczy w rozmowie głosowej.", "permissions.user_owns_guilds": "Ten użytkownik jest właścicielem społeczności.", - "phone.add_not_eligible": "Nie spełniasz warunków dodania numeru telefonu do konta.", - "phone.country_not_supported": "Nie wysyłamy SMS-ów weryfikacyjnych do tego kraju. Użyj numeru komórkowego z innego kraju albo napisz na support@fluxer.app, a Twoje konto sprawdzi człowiek.", - "phone.inbound_verification_required": "Ten numer weryfikuje się tak, że to Ty wysyłasz SMS-a do nas, a nie my do Ciebie. Rozpocznij weryfikację telefonu jeszcze raz, aby otrzymać kod i numer, na który masz go wysłać.", - "phone.invalid_number": "Nieprawidłowy numer telefonu.", - "phone.lookup_unavailable": "Nasza usługa sprawdzania numerów telefonów chwilowo nie działa, więc nie wysłaliśmy kodu. To problem po naszej stronie, nie z Twoim numerem. Odczekaj kilka minut i spróbuj ponownie z tym samym numerem.", - "phone.number_already_used": "Numer telefonu jest już w użyciu.", - "phone.number_format_required": "Numer telefonu musi być w formacie E.164 (na przykład +1234567890).", - "phone.number_not_in_service": "Twój operator zgłasza, że ten numer jest nieaktywny. Sprawdź numer i spróbuj ponownie albo napisz na support@fluxer.app, jeśli numer jest poprawny.", - "phone.number_not_mobile": "To nie jest numer komórkowy, więc nie może odebrać naszego SMS-a. Użyj numeru komórkowego albo napisz na support@fluxer.app, jeśli uważasz, że to pomyłka.", - "phone.verification_code_invalid": "Nieprawidłowy kod weryfikacyjny numeru telefonu.", - "phone.verification_needs_review": "Nie udało nam się zweryfikować tego numeru automatycznie. Napisz na support@fluxer.app, a Twoje konto sprawdzi człowiek.", - "phone.verification_required": "Wymagana jest weryfikacja numeru telefonu.", "premium_and_plans.animated_avatars_require_premium": "Animowane awatary wymagają Premium.", "premium_and_plans.banners_require_premium": "Banery wymagają Premium.", "premium_and_plans.bio_requires_premium_for_length": "Biogram dłuższy niż {maxLength} znaków wymaga Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_PL_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Musisz odczekać przed ponownym wysłaniem wiadomości autoryzującej adres IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "Przekroczono limit ponownego wysyłania wiadomości autoryzujących adres IP.", "rate_limits.message_crosspost_rate_limited": "Ten kanał osiągnął limit publikowania. Może opublikować 10 wiadomości z rzędu, a potem jedną więcej co 6 minut.", - "rate_limits.phone_rate_limit_exceeded": "Przekroczono limit częstotliwości żądań dla numeru telefonu.", "rate_limits.pronouns_changed_too_often": "Ostatnio zbyt często zmieniasz zaimki. Spróbuj ponownie za {minutes, plural, one {# minutę} few {# minuty} many {# minut} other {# minuty}}.", "rate_limits.published_message_edit_rate_limited": "Ta opublikowana wiadomość osiągnęła limit edycji. Można ją edytować 3 razy z rzędu, a potem jeszcze raz co 20 minut.", "rate_limits.rate_limited": "Przekroczono limit żądań.", diff --git a/packages/errors/src/i18n/locales/pt-BR.ts b/packages/errors/src/i18n/locales/pt-BR.ts index e37cb5381..349238447 100644 --- a/packages/errors/src/i18n/locales/pt-BR.ts +++ b/packages/errors/src/i18n/locales/pt-BR.ts @@ -7,9 +7,7 @@ const ERROR_I18N_PT_BR_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "A verificação do e-mail é necessária para esta ação.", "account.guild_verification_required": "A verificação da comunidade é necessária.", "account.ip_authorization_required": "A autorização de IP é necessária.", - "account.locked_suspicious_activity": "Sua conta está bloqueada devido a atividades suspeitas.", - "account.phone_gate_escape_unavailable": "Não é possível adiar a verificação do telefone nesta conta.", - "account.phone_required_for_guild": "Você precisa adicionar um número de telefone para enviar mensagens nesta comunidade.", + "account.limited": "Sua conta está limitada. Confira seu e-mail para saber como remover a limitação.", "account.sensitive_content_filter_age_restricted": "Este filtro de conteúdo sensível não está disponível para sua faixa etária.", "account.session_timeout": "A sessão expirou. Atualize a página e entre novamente.", "account.session_token_mismatch": "Token de sessão incompatível.", @@ -32,7 +30,6 @@ const ERROR_I18N_PT_BR_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Corpo do formulário inválido.", "admin_and_system.invalid_format": "O valor fornecido está em um formato inválido.", "admin_and_system.invalid_integer_format": "Formato de número inteiro inválido.", - "admin_and_system.invalid_suspicious_flags_format": "Formato de flags suspeitas inválido.", "admin_and_system.invalid_system_flag": "Flag de sistema inválida.", "admin_and_system.invalid_timeout_value": "Data de término da suspensão temporária inválida.", "admin_and_system.invalid_timestamp": "Timestamp inválido.", @@ -44,7 +41,6 @@ const ERROR_I18N_PT_BR_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Falha na validação da resposta: {errors}.", "admin_and_system.test_harness_disabled": "A ferramenta de teste está desativada.", "admin_and_system.test_harness_forbidden": "A ferramenta de teste é proibida.", - "admin_and_system.unknown_suspicious_flag": "Flag suspeita desconhecida.", "admin_and_system.update_failed": "Não foi possível atualizar o recurso. Tente de novo.", "admin_and_system.user_must_be_bot_for_system_user": "O usuário deve ser um bot para ser marcado como usuário de sistema.", "age_verification.already_verified": "Você já concluiu a verificação de idade.", @@ -394,18 +390,6 @@ const ERROR_I18N_PT_BR_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Este usuário não está no canal.", "permissions.user_not_in_voice": "Este usuário não está em um canal de voz.", "permissions.user_owns_guilds": "Este usuário é dono de comunidades.", - "phone.add_not_eligible": "Você não é elegível para adicionar um número de telefone à sua conta.", - "phone.country_not_supported": "Não enviamos SMS de verificação para este país. Use um número de celular de outro país ou escreva para support@fluxer.app e uma pessoa vai revisar sua conta.", - "phone.inbound_verification_required": "Este número é verificado com um SMS que você envia para nós, e não com um SMS que nós enviamos para você. Inicie a verificação de telefone novamente para receber o código e o número para o qual enviá-lo.", - "phone.invalid_number": "Número de telefone inválido.", - "phone.lookup_unavailable": "Nossa checagem de números de telefone está fora do ar agora, então paramos antes de enviar seu código. O problema é nosso, não do seu número. Aguarde alguns minutos e tente o mesmo número novamente.", - "phone.number_already_used": "Número de telefone já está em uso.", - "phone.number_format_required": "Número de telefone deve seguir o formato E.164 (por exemplo, +1234567890).", - "phone.number_not_in_service": "Sua operadora diz que este número não está em serviço. Confira o número e tente novamente, ou escreva para support@fluxer.app se ele estiver correto.", - "phone.number_not_mobile": "Este não é um número de celular, então não pode receber nosso SMS. Use um número de celular ou escreva para support@fluxer.app se achar que isso está errado.", - "phone.verification_code_invalid": "Código de verificação de telefone inválido.", - "phone.verification_needs_review": "Não conseguimos verificar este número automaticamente. Escreva para support@fluxer.app e uma pessoa vai revisar sua conta.", - "phone.verification_required": "Verificação de telefone é obrigatória.", "premium_and_plans.animated_avatars_require_premium": "Avatares animados exigem o plano Premium.", "premium_and_plans.banners_require_premium": "Banners exigem o plano Premium.", "premium_and_plans.bio_requires_premium_for_length": "Uma biografia com mais de {maxLength} caracteres requer o plano Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_PT_BR_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Aguarde antes de reenviar a autorização de IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "Limite de reenvio de autorização IP excedido.", "rate_limits.message_crosspost_rate_limited": "Este canal atingiu o limite de publicações. Ele pode publicar 10 mensagens seguidas e depois mais uma a cada 6 minutos.", - "rate_limits.phone_rate_limit_exceeded": "O limite de solicitações de telefone foi excedido.", "rate_limits.pronouns_changed_too_often": "Você alterou seus pronomes muitas vezes recentemente. Tente novamente em {minutes, plural, =1 {# minuto} other {# minutos}}.", "rate_limits.published_message_edit_rate_limited": "Esta mensagem publicada atingiu o limite de edições. Ela pode ser editada 3 vezes seguidas e depois mais uma vez a cada 20 minutos.", "rate_limits.rate_limited": "Você atingiu o limite de solicitações.", diff --git a/packages/errors/src/i18n/locales/ro.ts b/packages/errors/src/i18n/locales/ro.ts index 77051dd00..2132308de 100644 --- a/packages/errors/src/i18n/locales/ro.ts +++ b/packages/errors/src/i18n/locales/ro.ts @@ -7,9 +7,7 @@ const ERROR_I18N_RO_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Verificarea e-mailului este necesară pentru această acțiune.", "account.guild_verification_required": "Este necesară verificarea comunității.", "account.ip_authorization_required": "Este necesară autorizarea IP.", - "account.locked_suspicious_activity": "Contul tău este blocat din cauza activității suspecte.", - "account.phone_gate_escape_unavailable": "Amânarea verificării telefonice nu este disponibilă pentru acest cont.", - "account.phone_required_for_guild": "Trebuie să adaugi un număr de telefon pentru a trimite mesaje în această comunitate.", + "account.limited": "Contul tău este limitat. Verifică-ți e-mailul ca să afli cum poți ridica limitarea.", "account.sensitive_content_filter_age_restricted": "Acest filtru de conținut sensibil nu este disponibil pentru grupa ta de vârstă.", "account.session_timeout": "Sesiunea a expirat. Reîmprospătează pagina și conectează-te din nou.", "account.session_token_mismatch": "Token de sesiune necorespunzător.", @@ -32,7 +30,6 @@ const ERROR_I18N_RO_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Corpul formularului este invalid.", "admin_and_system.invalid_format": "Valoarea furnizată este într-un format invalid.", "admin_and_system.invalid_integer_format": "Formatul numărului întreg este invalid.", - "admin_and_system.invalid_suspicious_flags_format": "Formatul indicatorilor suspecți este invalid.", "admin_and_system.invalid_system_flag": "Indicatorul de sistem este invalid.", "admin_and_system.invalid_timeout_value": "Valoarea de timeout este invalidă.", "admin_and_system.invalid_timestamp": "Marca de timp este invalidă.", @@ -44,7 +41,6 @@ const ERROR_I18N_RO_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Validarea răspunsului a eșuat: {errors}.", "admin_and_system.test_harness_disabled": "Cadrul de testare este dezactivat.", "admin_and_system.test_harness_forbidden": "Cadrul de testare este interzis.", - "admin_and_system.unknown_suspicious_flag": "Indicatorul suspect este necunoscut.", "admin_and_system.update_failed": "Resursa nu a putut fi actualizată. Încearcă din nou.", "admin_and_system.user_must_be_bot_for_system_user": "Utilizatorul trebuie să fie un bot pentru a fi marcat ca utilizator de sistem.", "age_verification.already_verified": "Ai finalizat deja verificarea vârstei.", @@ -394,18 +390,6 @@ const ERROR_I18N_RO_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Acest utilizator nu este în canal.", "permissions.user_not_in_voice": "Acest utilizator nu este într-un canal vocal.", "permissions.user_owns_guilds": "Acest utilizator deține comunități.", - "phone.add_not_eligible": "Nu ești eligibil pentru a adăuga un număr de telefon la contul tău.", - "phone.country_not_supported": "Nu trimitem SMS-uri de verificare în această țară. Folosește un număr de mobil dintr-o altă țară sau scrie la support@fluxer.app și o persoană îți va examina contul.", - "phone.inbound_verification_required": "Acest număr se verifică printr-un SMS pe care ni-l trimiți tu, nu printr-unul pe care ți-l trimitem noi. Pornește din nou verificarea telefonului pentru a primi codul și numărul la care să îl trimiți.", - "phone.invalid_number": "Număr de telefon invalid.", - "phone.lookup_unavailable": "Verificarea noastră a numerelor de telefon nu funcționează în acest moment, așa că ne-am oprit înainte de a-ți trimite codul. Problema este la noi, nu la numărul tău. Așteaptă câteva minute și încearcă din nou cu același număr.", - "phone.number_already_used": "Numărul de telefon este deja utilizat.", - "phone.number_format_required": "Numărul de telefon trebuie să fie în format E.164 (de exemplu, +1234567890).", - "phone.number_not_in_service": "Operatorul tău spune că acest număr nu este activ. Verifică numărul și încearcă din nou sau scrie la support@fluxer.app dacă este corect.", - "phone.number_not_mobile": "Acesta nu este un număr de mobil, așa că nu poate primi SMS-ul nostru. Folosește un număr de mobil sau scrie la support@fluxer.app dacă crezi că este o greșeală.", - "phone.verification_code_invalid": "Cod de verificare telefonică invalid.", - "phone.verification_needs_review": "Nu am putut verifica automat acest număr. Scrie la support@fluxer.app și o persoană îți va examina contul.", - "phone.verification_required": "Este necesară verificarea telefonului.", "premium_and_plans.animated_avatars_require_premium": "Avatarele animate necesită Premium.", "premium_and_plans.banners_require_premium": "Bannerele necesită Premium.", "premium_and_plans.bio_requires_premium_for_length": "O biografie mai lungă de {maxLength} caractere necesită Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_RO_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Trebuie să aștepți înainte de a retrimite autorizarea IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "S-a depășit limita de retrimitere a autorizării IP.", "rate_limits.message_crosspost_rate_limited": "Acest canal a atins limita de publicare. Poate publica 10 mesaje la rând, apoi încă unul la fiecare 6 minute.", - "rate_limits.phone_rate_limit_exceeded": "S-a depășit limita de rată pentru telefon.", "rate_limits.pronouns_changed_too_often": "Ți-ai schimbat pronumele prea des recent. Încearcă din nou peste {minutes, plural, one {# minut} few {# minute} other {# de minute}}.", "rate_limits.published_message_edit_rate_limited": "Acest mesaj publicat a atins limita de editare. Poate fi editat de 3 ori la rând, apoi încă o dată la fiecare 20 de minute.", "rate_limits.rate_limited": "Ai atins limita de rată.", diff --git a/packages/errors/src/i18n/locales/ru.ts b/packages/errors/src/i18n/locales/ru.ts index 125e01a42..16fe805c2 100644 --- a/packages/errors/src/i18n/locales/ru.ts +++ b/packages/errors/src/i18n/locales/ru.ts @@ -7,9 +7,7 @@ const ERROR_I18N_RU_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Для этого действия требуется подтверждение email.", "account.guild_verification_required": "Нужно пройти проверку сообщества.", "account.ip_authorization_required": "Требуется авторизация по IP.", - "account.locked_suspicious_activity": "Твой аккаунт заблокирован из-за подозрительной активности.", - "account.phone_gate_escape_unavailable": "Отложить проверку телефона для этого аккаунта нельзя.", - "account.phone_required_for_guild": "Тебе нужно добавить номер телефона, чтобы отправлять сообщения в этом сообществе.", + "account.limited": "Твой аккаунт ограничен. Проверь почту, чтобы узнать, как снять ограничение.", "account.sensitive_content_filter_age_restricted": "Этот фильтр контента 18+ недоступен для твоей возрастной группы.", "account.session_timeout": "Время сессии истекло. Обнови страницу и войди снова.", "account.session_token_mismatch": "Токен сессии не совпадает.", @@ -32,7 +30,6 @@ const ERROR_I18N_RU_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Неверное тело формы.", "admin_and_system.invalid_format": "Неверный формат значения.", "admin_and_system.invalid_integer_format": "Неверный формат целого числа.", - "admin_and_system.invalid_suspicious_flags_format": "Неверный формат флагов подозрительной активности.", "admin_and_system.invalid_system_flag": "Неверный системный флаг.", "admin_and_system.invalid_timeout_value": "Неверное значение тайм-аута.", "admin_and_system.invalid_timestamp": "Неверная метка времени.", @@ -44,7 +41,6 @@ const ERROR_I18N_RU_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Ошибка проверки ответа: {errors}.", "admin_and_system.test_harness_disabled": "Тестовый стенд отключён.", "admin_and_system.test_harness_forbidden": "Тестовый стенд запрещён.", - "admin_and_system.unknown_suspicious_flag": "Неизвестный подозрительный флаг.", "admin_and_system.update_failed": "Не удалось обновить ресурс. Попробуй ещё раз.", "admin_and_system.user_must_be_bot_for_system_user": "Пользователь должен быть ботом, чтобы отметить его как системного пользователя.", "age_verification.already_verified": "Возраст уже подтверждён.", @@ -394,18 +390,6 @@ const ERROR_I18N_RU_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Этого пользователя нет в канале.", "permissions.user_not_in_voice": "Этот пользователь не в голосовом канале.", "permissions.user_owns_guilds": "Этот пользователь владеет сообществами.", - "phone.add_not_eligible": "Ты не можешь добавить номер телефона к своему аккаунту.", - "phone.country_not_supported": "Мы не отправляем SMS с кодом подтверждения в эту страну. Укажи мобильный номер другой страны или напиши на support@fluxer.app, и твой аккаунт проверит человек.", - "phone.inbound_verification_required": "Этот номер подтверждается так: SMS отправляешь ты нам, а не мы тебе. Начни подтверждение телефона заново, чтобы получить код и номер, на который его нужно отправить.", - "phone.invalid_number": "Неверный номер телефона.", - "phone.lookup_unavailable": "Наша проверка номеров сейчас не работает, поэтому мы остановились и не отправили твой код. Дело в нас, а не в твоём номере. Подожди пару минут и попробуй ещё раз с тем же номером.", - "phone.number_already_used": "Номер телефона уже используется.", - "phone.number_format_required": "Номер телефона должен быть указан в формате E.164 (например, +1234567890).", - "phone.number_not_in_service": "Твой оператор сообщает, что этот номер не обслуживается. Проверь номер и попробуй ещё раз или напиши на support@fluxer.app, если номер верный.", - "phone.number_not_mobile": "Это не мобильный номер, поэтому наше SMS на него не придёт. Укажи мобильный номер или напиши на support@fluxer.app, если считаешь, что это ошибка.", - "phone.verification_code_invalid": "Неверный код подтверждения телефона.", - "phone.verification_needs_review": "Нам не удалось подтвердить этот номер автоматически. Напиши на support@fluxer.app, и твой аккаунт проверит человек.", - "phone.verification_required": "Требуется подтверждение телефона.", "premium_and_plans.animated_avatars_require_premium": "Для анимированных аватаров нужен Премиум.", "premium_and_plans.banners_require_premium": "Для баннеров нужен Премиум.", "premium_and_plans.bio_requires_premium_for_length": "Для биографии длиннее {maxLength} символов нужен Премиум.", @@ -423,7 +407,6 @@ const ERROR_I18N_RU_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Повторная отправка авторизации по IP пока недоступна. Подожди немного.", "rate_limits.ip_authorization_resend_limit_exceeded": "Превышен лимит повторных отправок авторизации по IP.", "rate_limits.message_crosspost_rate_limited": "Этот канал достиг лимита публикаций. Он может опубликовать 10 сообщений подряд, а затем ещё одно каждые 6 минут.", - "rate_limits.phone_rate_limit_exceeded": "Превышен лимит отправок на телефон.", "rate_limits.pronouns_changed_too_often": "Ты слишком часто меняешь местоимения. Попробуй ещё раз через {minutes} {minutes, plural, one {минуту} few {минуты} many {минут} other {минуты}}.", "rate_limits.published_message_edit_rate_limited": "Это опубликованное сообщение достигло лимита правок. Его можно отредактировать 3 раза подряд, а затем ещё раз каждые 20 минут.", "rate_limits.rate_limited": "Слишком много запросов. Подожди немного.", diff --git a/packages/errors/src/i18n/locales/sv-SE.ts b/packages/errors/src/i18n/locales/sv-SE.ts index 0c20cdfd4..5d92c2da7 100644 --- a/packages/errors/src/i18n/locales/sv-SE.ts +++ b/packages/errors/src/i18n/locales/sv-SE.ts @@ -7,9 +7,7 @@ const ERROR_I18N_SV_SE_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Du måste verifiera din e-postadress för att utföra den här åtgärden.", "account.guild_verification_required": "Communityverifiering krävs.", "account.ip_authorization_required": "IP-adressen måste godkännas.", - "account.locked_suspicious_activity": "Ditt konto är låst på grund av misstänkt aktivitet.", - "account.phone_gate_escape_unavailable": "Det här kontot kan inte skjuta upp telefonverifieringen.", - "account.phone_required_for_guild": "Du måste lägga till ett telefonnummer för att skicka meddelanden i denna community.", + "account.limited": "Ditt konto är begränsat. Kolla din e-post för att se hur du häver begränsningen.", "account.sensitive_content_filter_age_restricted": "Det här filtret för känsligt innehåll är inte tillgängligt för din åldersgrupp.", "account.session_timeout": "Sessionen har löpt ut. Uppdatera sidan och logga in igen.", "account.session_token_mismatch": "Sessionstoken matchar inte.", @@ -32,7 +30,6 @@ const ERROR_I18N_SV_SE_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Ogiltigt formulärinnehåll.", "admin_and_system.invalid_format": "Det angivna värdet har ett ogiltigt format.", "admin_and_system.invalid_integer_format": "Ogiltigt heltalsformat.", - "admin_and_system.invalid_suspicious_flags_format": "Ogiltigt format för misstänkta flaggor.", "admin_and_system.invalid_system_flag": "Ogiltig systemflagga.", "admin_and_system.invalid_timeout_value": "Ogiltigt timeout-värde.", "admin_and_system.invalid_timestamp": "Ogiltig tidsstämpel.", @@ -44,7 +41,6 @@ const ERROR_I18N_SV_SE_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Svarsvalideringen misslyckades: {errors}.", "admin_and_system.test_harness_disabled": "Testverktyget är inaktiverat.", "admin_and_system.test_harness_forbidden": "Testverktyget är inte tillåtet.", - "admin_and_system.unknown_suspicious_flag": "Okänd misstänkt flagga.", "admin_and_system.update_failed": "Det gick inte att uppdatera resursen. Försök igen.", "admin_and_system.user_must_be_bot_for_system_user": "Användaren måste vara en bot för att markeras som en systemanvändare.", "age_verification.already_verified": "Du har redan slutfört åldersverifieringen.", @@ -394,18 +390,6 @@ const ERROR_I18N_SV_SE_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Denna användare är inte i kanalen.", "permissions.user_not_in_voice": "Den här användaren deltar inte i något röstsamtal.", "permissions.user_owns_guilds": "Den här användaren äger communities.", - "phone.add_not_eligible": "Du får inte lägga till ett telefonnummer på ditt konto.", - "phone.country_not_supported": "Vi skickar inte verifieringssms till det här landet. Använd ett mobilnummer från ett annat land, eller mejla support@fluxer.app så granskar en person ditt konto.", - "phone.inbound_verification_required": "Det här numret verifieras genom att du skickar ett sms till oss, inte genom att vi skickar ett till dig. Starta telefonverifieringen igen för att få koden och numret du ska skicka den till.", - "phone.invalid_number": "Ogiltigt telefonnummer.", - "phone.lookup_unavailable": "Vår kontroll av telefonnummer ligger nere just nu, så vi avbröt innan din kod skickades. Problemet ligger hos oss, inte hos ditt nummer. Vänta några minuter och försök igen med samma nummer.", - "phone.number_already_used": "Telefonnumret används redan.", - "phone.number_format_required": "Telefonnumret måste vara i E.164-format (till exempel +1234567890).", - "phone.number_not_in_service": "Din operatör uppger att det här numret inte är aktivt. Kontrollera numret och försök igen, eller mejla support@fluxer.app om det stämmer.", - "phone.number_not_mobile": "Det här är inte ett mobilnummer, så det kan inte ta emot vårt sms. Använd ett mobilnummer, eller mejla support@fluxer.app om du anser att bedömningen är felaktig.", - "phone.verification_code_invalid": "Ogiltig telefonverifieringskod.", - "phone.verification_needs_review": "Vi kunde inte verifiera det här numret automatiskt. Mejla support@fluxer.app så granskar en person ditt konto.", - "phone.verification_required": "Telefonverifiering krävs.", "premium_and_plans.animated_avatars_require_premium": "Animerade avatarer kräver Premium.", "premium_and_plans.banners_require_premium": "Bannrar kräver Premium.", "premium_and_plans.bio_requires_premium_for_length": "En presentation som är längre än {maxLength} tecken kräver Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_SV_SE_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Du måste vänta innan du kan skicka ett nytt mejl för att godkänna IP-adressen.", "rate_limits.ip_authorization_resend_limit_exceeded": "Gränsen för att skicka nya mejl för godkännande av IP-adressen har överskridits.", "rate_limits.message_crosspost_rate_limited": "Den här kanalen har nått sin publiceringsgräns. Den kan publicera 10 meddelanden i rad och därefter ett till var 6:e minut.", - "rate_limits.phone_rate_limit_exceeded": "Gränsen för telefonförfrågningar har överskridits.", "rate_limits.pronouns_changed_too_often": "Du har ändrat dina pronomen för ofta den senaste tiden. Försök igen om {minutes, plural, one {# minut} other {# minuter}}.", "rate_limits.published_message_edit_rate_limited": "Det här publicerade meddelandet har nått sin redigeringsgräns. Det kan redigeras 3 gånger i rad och därefter en gång till var 20:e minut.", "rate_limits.rate_limited": "Du har nått maxgränsen för förfrågningar.", diff --git a/packages/errors/src/i18n/locales/th.ts b/packages/errors/src/i18n/locales/th.ts index 11fd0f900..030bf77af 100644 --- a/packages/errors/src/i18n/locales/th.ts +++ b/packages/errors/src/i18n/locales/th.ts @@ -7,9 +7,7 @@ const ERROR_I18N_TH_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "ต้องยืนยันอีเมลสำหรับการดำเนินการนี้", "account.guild_verification_required": "ต้องมีการยืนยันคอมมูนิตี้", "account.ip_authorization_required": "ต้องมีการอนุญาต IP", - "account.locked_suspicious_activity": "บัญชีของคุณถูกล็อกเนื่องจากกิจกรรมที่น่าสงสัย", - "account.phone_gate_escape_unavailable": "บัญชีนี้ไม่สามารถเลื่อนการยืนยันหมายเลขโทรศัพท์ออกไปได้", - "account.phone_required_for_guild": "คุณต้องเพิ่มหมายเลขโทรศัพท์เพื่อส่งข้อความในคอมมูนิตี้นี้", + "account.limited": "บัญชีของคุณถูกจำกัด โปรดตรวจสอบอีเมลเพื่อดูวิธียกเลิกการจำกัด", "account.sensitive_content_filter_age_restricted": "ตัวกรองเนื้อหาที่ละเอียดอ่อนนี้ไม่พร้อมใช้งานสำหรับกลุ่มอายุของคุณ", "account.session_timeout": "เซสชันหมดเวลา โปรดรีเฟรชหน้าและเข้าสู่ระบบอีกครั้ง", "account.session_token_mismatch": "โทเค็นเซสชันไม่ตรงกัน", @@ -32,7 +30,6 @@ const ERROR_I18N_TH_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "เนื้อหาฟอร์มไม่ถูกต้อง", "admin_and_system.invalid_format": "ค่าที่ให้มาอยู่ในรูปแบบที่ไม่ถูกต้อง", "admin_and_system.invalid_integer_format": "รูปแบบจำนวนเต็มไม่ถูกต้อง", - "admin_and_system.invalid_suspicious_flags_format": "รูปแบบแฟล็กที่น่าสงสัยไม่ถูกต้อง", "admin_and_system.invalid_system_flag": "แฟล็กระบบไม่ถูกต้อง", "admin_and_system.invalid_timeout_value": "ค่าไทม์เอาต์ไม่ถูกต้อง", "admin_and_system.invalid_timestamp": "การประทับเวลาไม่ถูกต้อง", @@ -44,7 +41,6 @@ const ERROR_I18N_TH_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "การตรวจสอบการตอบกลับล้มเหลว: {errors}", "admin_and_system.test_harness_disabled": "ปิดใช้งาน test harness แล้ว", "admin_and_system.test_harness_forbidden": "ไม่อนุญาตให้ใช้ test harness", - "admin_and_system.unknown_suspicious_flag": "ไม่รู้จักแฟล็กที่น่าสงสัยนี้", "admin_and_system.update_failed": "ไม่สามารถอัปเดตทรัพยากรได้ โปรดลองอีกครั้ง", "admin_and_system.user_must_be_bot_for_system_user": "ผู้ใช้ต้องเป็นบอทจึงจะสามารถระบุว่าเป็นผู้ใช้ระบบได้", "age_verification.already_verified": "คุณยืนยันอายุเรียบร้อยแล้ว", @@ -394,18 +390,6 @@ const ERROR_I18N_TH_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "ผู้ใช้รายนี้ไม่ได้อยู่ในช่อง", "permissions.user_not_in_voice": "ผู้ใช้รายนี้ไม่ได้อยู่ในช่องเสียง", "permissions.user_owns_guilds": "ผู้ใช้รายนี้เป็นเจ้าของคอมมูนิตี้", - "phone.add_not_eligible": "คุณไม่มีสิทธิ์เพิ่มหมายเลขโทรศัพท์ในบัญชีของคุณ", - "phone.country_not_supported": "เราไม่ส่งข้อความยืนยันไปยังประเทศนี้ โปรดใช้หมายเลขมือถือของประเทศอื่น หรือส่งอีเมลถึง support@fluxer.app แล้วจะมีเจ้าหน้าที่ตรวจสอบบัญชีของคุณ", - "phone.inbound_verification_required": "หมายเลขนี้ยืนยันด้วยการที่คุณส่งข้อความมาหาเรา ไม่ใช่เราส่งข้อความไปหาคุณ โปรดเริ่มการยืนยันโทรศัพท์อีกครั้งเพื่อรับรหัสและหมายเลขที่ต้องส่งข้อความไป", - "phone.invalid_number": "หมายเลขโทรศัพท์ไม่ถูกต้อง", - "phone.lookup_unavailable": "ระบบตรวจสอบหมายเลขโทรศัพท์ของเราใช้งานไม่ได้ในขณะนี้ เราจึงหยุดก่อนที่จะส่งรหัสให้คุณ ปัญหานี้อยู่ที่ฝั่งเรา ไม่ใช่ที่หมายเลขของคุณ โปรดรอสองสามนาทีแล้วลองหมายเลขเดิมอีกครั้ง", - "phone.number_already_used": "หมายเลขโทรศัพท์นี้ถูกใช้งานอยู่แล้ว", - "phone.number_format_required": "หมายเลขโทรศัพท์ต้องอยู่ในรูปแบบ E.164 (เช่น +1234567890)", - "phone.number_not_in_service": "ผู้ให้บริการเครือข่ายของคุณแจ้งว่าหมายเลขนี้ไม่ได้เปิดใช้งาน โปรดตรวจสอบหมายเลขแล้วลองอีกครั้ง หรือส่งอีเมลถึง support@fluxer.app หากหมายเลขถูกต้อง", - "phone.number_not_mobile": "นี่ไม่ใช่หมายเลขมือถือ จึงรับข้อความของเราไม่ได้ โปรดใช้หมายเลขมือถือ หรือส่งอีเมลถึง support@fluxer.app หากคุณคิดว่าข้อมูลนี้ไม่ถูกต้อง", - "phone.verification_code_invalid": "รหัสยืนยันโทรศัพท์ไม่ถูกต้อง", - "phone.verification_needs_review": "เราไม่สามารถยืนยันหมายเลขนี้โดยอัตโนมัติได้ โปรดส่งอีเมลถึง support@fluxer.app แล้วจะมีเจ้าหน้าที่ตรวจสอบบัญชีของคุณ", - "phone.verification_required": "จำเป็นต้องมีการยืนยันโทรศัพท์", "premium_and_plans.animated_avatars_require_premium": "รูปโปรไฟล์แบบเคลื่อนไหวต้องใช้ Premium", "premium_and_plans.banners_require_premium": "แบนเนอร์ต้องใช้ Premium", "premium_and_plans.bio_requires_premium_for_length": "ประวัติส่วนตัวที่ยาวเกิน {maxLength} ตัวอักษรต้องใช้ Premium", @@ -423,7 +407,6 @@ const ERROR_I18N_TH_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "การส่งการอนุญาต IP อีกครั้งยังอยู่ในช่วงคูลดาวน์", "rate_limits.ip_authorization_resend_limit_exceeded": "เกินขีดจำกัดการส่งการอนุญาต IP อีกครั้ง", "rate_limits.message_crosspost_rate_limited": "ช่องนี้ถึงขีดจำกัดการเผยแพร่แล้ว สามารถเผยแพร่ได้ 10 ข้อความติดต่อกัน จากนั้นเพิ่มได้อีกหนึ่งข้อความทุก 6 นาที", - "rate_limits.phone_rate_limit_exceeded": "เกินขีดจำกัดคำขอเกี่ยวกับหมายเลขโทรศัพท์", "rate_limits.pronouns_changed_too_often": "คุณเปลี่ยนคำสรรพนามบ่อยเกินไปเมื่อเร็ว ๆ นี้ โปรดลองอีกครั้งใน {minutes} {minutes, plural, other {นาที}}", "rate_limits.published_message_edit_rate_limited": "ข้อความที่เผยแพร่นี้ถึงขีดจำกัดการแก้ไขแล้ว สามารถแก้ไขได้ 3 ครั้งติดต่อกัน จากนั้นแก้ไขได้อีกหนึ่งครั้งทุก 20 นาที", "rate_limits.rate_limited": "คุณถูกจำกัดอัตราการใช้งาน", diff --git a/packages/errors/src/i18n/locales/tr.ts b/packages/errors/src/i18n/locales/tr.ts index 78a0a3b8c..ef29bf0dd 100644 --- a/packages/errors/src/i18n/locales/tr.ts +++ b/packages/errors/src/i18n/locales/tr.ts @@ -7,9 +7,7 @@ const ERROR_I18N_TR_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Bu işlem için e-posta doğrulaması gerekiyor.", "account.guild_verification_required": "Topluluk doğrulaması gerekli.", "account.ip_authorization_required": "IP yetkilendirmesi gerekli.", - "account.locked_suspicious_activity": "Hesabın şüpheli etkinlik nedeniyle kilitlendi.", - "account.phone_gate_escape_unavailable": "Telefon doğrulama kontrolü bu hesap için ertelenemez.", - "account.phone_required_for_guild": "Bu toplulukta mesaj göndermek için bir telefon numarası eklemen gerekiyor.", + "account.limited": "Hesabın kısıtlandı. Kısıtlamayı nasıl kaldıracağını öğrenmek için e-postanı kontrol et.", "account.sensitive_content_filter_age_restricted": "Bu hassas içerik filtresi yaş grubun için kullanılamıyor.", "account.session_timeout": "Oturum zaman aşımına uğradı. Sayfayı yenile ve tekrar giriş yap.", "account.session_token_mismatch": "Oturum belirteci uyuşmuyor.", @@ -32,7 +30,6 @@ const ERROR_I18N_TR_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Geçersiz form gövdesi.", "admin_and_system.invalid_format": "Sağlanan değer geçersiz biçimde.", "admin_and_system.invalid_integer_format": "Geçersiz tam sayı biçimi.", - "admin_and_system.invalid_suspicious_flags_format": "Geçersiz şüpheli bayraklar biçimi.", "admin_and_system.invalid_system_flag": "Geçersiz sistem bayrağı.", "admin_and_system.invalid_timeout_value": "Geçersiz zaman aşımı değeri.", "admin_and_system.invalid_timestamp": "Geçersiz zaman damgası.", @@ -44,7 +41,6 @@ const ERROR_I18N_TR_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Yanıt doğrulanamadı: {errors}.", "admin_and_system.test_harness_disabled": "Test altyapısı devre dışı.", "admin_and_system.test_harness_forbidden": "Test altyapısı yasak.", - "admin_and_system.unknown_suspicious_flag": "Bilinmeyen şüpheli bayrak.", "admin_and_system.update_failed": "Kaynağı güncelleyemedik. Tekrar dene.", "admin_and_system.user_must_be_bot_for_system_user": "Kullanıcı, sistem kullanıcısı olarak işaretlenmek için bot olmalı.", "age_verification.already_verified": "Yaş doğrulamasını zaten tamamladın.", @@ -394,18 +390,6 @@ const ERROR_I18N_TR_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Bu kullanıcı kanalda değil.", "permissions.user_not_in_voice": "Bu kullanıcı sesli kanalda değil.", "permissions.user_owns_guilds": "Bu kullanıcının sahip olduğu topluluklar var.", - "phone.add_not_eligible": "Hesabına telefon numarası eklemeye uygun değilsin.", - "phone.country_not_supported": "Bu ülkeye doğrulama SMS'i göndermiyoruz. Başka bir ülkeye ait mobil numara kullan ya da support@fluxer.app adresine e-posta gönder, bir kişi hesabını inceleyecek.", - "phone.inbound_verification_required": "Bu numara, bizim sana SMS göndermemizle değil, senin bize SMS göndermenle doğrulanıyor. Kodu ve SMS göndereceğin numarayı almak için telefon doğrulamasını yeniden başlat.", - "phone.invalid_number": "Geçersiz telefon numarası.", - "phone.lookup_unavailable": "Telefon numarası kontrolümüz şu anda çalışmıyor, bu yüzden kodunu göndermeden önce durduk. Bu bizim hatamız, numaranın değil. Birkaç dakika bekle ve aynı numarayı tekrar dene.", - "phone.number_already_used": "Telefon numarası zaten kullanımda.", - "phone.number_format_required": "Telefon numarası E.164 biçiminde olmalı (örneğin, +1234567890).", - "phone.number_not_in_service": "Operatörün bu numaranın hizmette olmadığını bildiriyor. Numarayı kontrol et ve tekrar dene ya da numara doğruysa support@fluxer.app adresine e-posta gönder.", - "phone.number_not_mobile": "Bu bir mobil numara değil, bu yüzden SMS'imizi alamaz. Mobil bir numara kullan ya da bunun yanlış olduğunu düşünüyorsan support@fluxer.app adresine e-posta gönder.", - "phone.verification_code_invalid": "Geçersiz telefon doğrulama kodu.", - "phone.verification_needs_review": "Bu numarayı otomatik olarak doğrulayamadık. Bir kişinin hesabını incelemesi için support@fluxer.app adresine e-posta gönder.", - "phone.verification_required": "Telefon doğrulaması gerekli.", "premium_and_plans.animated_avatars_require_premium": "Hareketli avatarlar için Premium gerekli.", "premium_and_plans.banners_require_premium": "Banner'lar için Premium gerekli.", "premium_and_plans.bio_requires_premium_for_length": "Biyografin {maxLength} karakterden uzunsa Premium gerekli.", @@ -423,7 +407,6 @@ const ERROR_I18N_TR_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "IP yetkilendirme yeniden gönderme bekleme süresinde.", "rate_limits.ip_authorization_resend_limit_exceeded": "IP yetkilendirme yeniden gönderme limiti aşıldı.", "rate_limits.message_crosspost_rate_limited": "Bu kanal yayınlama sınırına ulaştı. Arka arkaya 10 mesaj yayınlayabilir, ardından her 6 dakikada bir tane daha.", - "rate_limits.phone_rate_limit_exceeded": "Telefon hız sınırı aşıldı.", "rate_limits.pronouns_changed_too_often": "Son zamanlarda zamirlerini çok sık değiştirdin. Lütfen {minutes, plural, one {# dakika} other {# dakika}} sonra tekrar dene.", "rate_limits.published_message_edit_rate_limited": "Bu yayınlanmış mesaj düzenleme sınırına ulaştı. Arka arkaya 3 kez düzenlenebilir, ardından her 20 dakikada bir kez daha.", "rate_limits.rate_limited": "Hız sınırlamasına takıldın.", diff --git a/packages/errors/src/i18n/locales/uk.ts b/packages/errors/src/i18n/locales/uk.ts index 1a9ccef91..0d140871a 100644 --- a/packages/errors/src/i18n/locales/uk.ts +++ b/packages/errors/src/i18n/locales/uk.ts @@ -7,9 +7,7 @@ const ERROR_I18N_UK_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Для цієї дії потрібно підтвердити електронну адресу.", "account.guild_verification_required": "Потрібно пройти перевірку спільноти.", "account.ip_authorization_required": "Потрібне підтвердження IP-адреси.", - "account.locked_suspicious_activity": "Твій акаунт заблоковано через підозрілу активність.", - "account.phone_gate_escape_unavailable": "Відкласти підтвердження телефону для цього акаунта не можна.", - "account.phone_required_for_guild": "Щоб надсилати повідомлення в цій спільноті, тобі потрібно додати номер телефону.", + "account.limited": "Твій акаунт обмежено. Перевір електронну пошту, щоб дізнатися, як зняти обмеження.", "account.sensitive_content_filter_age_restricted": "Цей фільтр чутливого вмісту недоступний для твоєї вікової групи.", "account.session_timeout": "Час сесії вичерпано. Онови сторінку та увійди знову.", "account.session_token_mismatch": "Токен сесії не збігається.", @@ -32,7 +30,6 @@ const ERROR_I18N_UK_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Недійсний вміст форми.", "admin_and_system.invalid_format": "Надане значення має недійсний формат.", "admin_and_system.invalid_integer_format": "Недійсний формат цілого числа.", - "admin_and_system.invalid_suspicious_flags_format": "Недійсний формат підозрілих прапорців.", "admin_and_system.invalid_system_flag": "Недійсний системний прапорець.", "admin_and_system.invalid_timeout_value": "Недійсне значення тайм-ауту.", "admin_and_system.invalid_timestamp": "Недійсна мітка часу.", @@ -44,7 +41,6 @@ const ERROR_I18N_UK_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Не вдалося перевірити відповідь: {errors}.", "admin_and_system.test_harness_disabled": "Тестову систему вимкнено.", "admin_and_system.test_harness_forbidden": "Тестову систему заборонено.", - "admin_and_system.unknown_suspicious_flag": "Невідомий підозрілий прапорець.", "admin_and_system.update_failed": "Не вдалося оновити ресурс. Спробуй ще раз.", "admin_and_system.user_must_be_bot_for_system_user": "Користувач має бути ботом, щоб його можна було позначити як системного користувача.", "age_verification.already_verified": "Перевірку віку вже пройдено.", @@ -394,18 +390,6 @@ const ERROR_I18N_UK_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Цього користувача немає в каналі.", "permissions.user_not_in_voice": "Цього користувача немає в голосовому каналі.", "permissions.user_owns_guilds": "Цей користувач є власником спільнот.", - "phone.add_not_eligible": "Ти не можеш додати номер телефону до свого акаунта.", - "phone.country_not_supported": "Ми не надсилаємо SMS з кодом підтвердження в цю країну. Використай мобільний номер іншої країни або напиши на support@fluxer.app, і твій акаунт перевірить людина.", - "phone.inbound_verification_required": "Цей номер підтверджується так: SMS надсилаєш ти нам, а не ми тобі. Почни підтвердження телефону заново, щоб отримати код і номер, на який його треба надіслати.", - "phone.invalid_number": "Неправильний номер телефону.", - "phone.lookup_unavailable": "Наша перевірка номерів зараз не працює, тому ми зупинилися і не надіслали твій код. Це наша проблема, а не твого номера. Зачекай кілька хвилин і спробуй ще раз із тим самим номером.", - "phone.number_already_used": "Номер телефону вже використовується.", - "phone.number_format_required": "Номер телефону має бути у форматі E.164 (наприклад, +1234567890).", - "phone.number_not_in_service": "Твій оператор повідомляє, що цей номер не обслуговується. Перевір номер і спробуй ще раз або напиши на support@fluxer.app, якщо номер правильний.", - "phone.number_not_mobile": "Це не мобільний номер, тому наше SMS на нього не надійде. Використай мобільний номер або напиши на support@fluxer.app, якщо вважаєш, що це помилка.", - "phone.verification_code_invalid": "Неправильний код підтвердження телефону.", - "phone.verification_needs_review": "Нам не вдалося підтвердити цей номер автоматично. Напиши на support@fluxer.app, і твій акаунт перевірить людина.", - "phone.verification_required": "Потрібне підтвердження телефону.", "premium_and_plans.animated_avatars_require_premium": "Анімовані аватари потребують Преміум-підписки.", "premium_and_plans.banners_require_premium": "Банери потребують Преміум-підписки.", "premium_and_plans.bio_requires_premium_for_length": "Біо, що перевищує {maxLength} символів, потребує Преміум-підписки.", @@ -423,7 +407,6 @@ const ERROR_I18N_UK_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Повторне надсилання авторизації IP тимчасово недоступне.", "rate_limits.ip_authorization_resend_limit_exceeded": "Перевищено ліміт повторного надсилання авторизації IP.", "rate_limits.message_crosspost_rate_limited": "Цей канал досяг ліміту публікацій. Він може опублікувати 10 повідомлень поспіль, а потім ще одне кожні 6 хвилин.", - "rate_limits.phone_rate_limit_exceeded": "Перевищено ліміт запитів на підтвердження телефону.", "rate_limits.pronouns_changed_too_often": "Останнім часом ти занадто часто змінюєш займенники. Спробуй ще раз за {minutes} {minutes, plural, one {хвилину} few {хвилини} many {хвилин} other {хвилини}}.", "rate_limits.published_message_edit_rate_limited": "Це опубліковане повідомлення досягло ліміту редагувань. Його можна відредагувати 3 рази поспіль, а потім ще раз кожні 20 хвилин.", "rate_limits.rate_limited": "Застосовано обмеження частоти запитів.", diff --git a/packages/errors/src/i18n/locales/vi.ts b/packages/errors/src/i18n/locales/vi.ts index dbae19514..8cec0b2a0 100644 --- a/packages/errors/src/i18n/locales/vi.ts +++ b/packages/errors/src/i18n/locales/vi.ts @@ -7,9 +7,7 @@ const ERROR_I18N_VI_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "Cần xác minh email cho hành động này.", "account.guild_verification_required": "Yêu cầu xác minh cộng đồng.", "account.ip_authorization_required": "Yêu cầu ủy quyền IP.", - "account.locked_suspicious_activity": "Tài khoản của bạn đã bị khóa do hoạt động đáng ngờ.", - "account.phone_gate_escape_unavailable": "Không thể tạm hoãn việc xác minh điện thoại cho tài khoản này.", - "account.phone_required_for_guild": "Bạn cần thêm số điện thoại để gửi tin nhắn trong cộng đồng này.", + "account.limited": "Tài khoản của bạn đang bị giới hạn. Hãy kiểm tra email để biết cách gỡ giới hạn.", "account.sensitive_content_filter_age_restricted": "Bộ lọc nội dung nhạy cảm này không khả dụng cho độ tuổi của bạn.", "account.session_timeout": "Phiên đã hết hạn. Hãy làm mới trang và đăng nhập lại.", "account.session_token_mismatch": "Token phiên không khớp.", @@ -32,7 +30,6 @@ const ERROR_I18N_VI_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "Nội dung biểu mẫu không hợp lệ.", "admin_and_system.invalid_format": "Giá trị được cung cấp có định dạng không hợp lệ.", "admin_and_system.invalid_integer_format": "Định dạng số nguyên không hợp lệ.", - "admin_and_system.invalid_suspicious_flags_format": "Định dạng cờ đáng ngờ không hợp lệ.", "admin_and_system.invalid_system_flag": "Cờ hệ thống không hợp lệ.", "admin_and_system.invalid_timeout_value": "Giá trị thời gian tạm khóa không hợp lệ.", "admin_and_system.invalid_timestamp": "Mốc thời gian không hợp lệ.", @@ -44,7 +41,6 @@ const ERROR_I18N_VI_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "Xác thực phản hồi không thành công: {errors}.", "admin_and_system.test_harness_disabled": "Tính năng test harness đã bị tắt.", "admin_and_system.test_harness_forbidden": "Tính năng test harness bị cấm.", - "admin_and_system.unknown_suspicious_flag": "Cờ đáng ngờ không xác định.", "admin_and_system.update_failed": "Không thể cập nhật tài nguyên. Vui lòng thử lại.", "admin_and_system.user_must_be_bot_for_system_user": "Người dùng phải là bot mới được đánh dấu là người dùng hệ thống.", "age_verification.already_verified": "Bạn đã hoàn tất xác minh tuổi.", @@ -394,18 +390,6 @@ const ERROR_I18N_VI_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "Người dùng này không ở trong kênh.", "permissions.user_not_in_voice": "Người dùng này không ở trong kênh thoại.", "permissions.user_owns_guilds": "Người dùng này sở hữu các cộng đồng.", - "phone.add_not_eligible": "Bạn không đủ điều kiện để thêm số điện thoại vào tài khoản của mình.", - "phone.country_not_supported": "Chúng tôi không gửi tin nhắn xác minh đến quốc gia này. Hãy dùng số di động của một quốc gia khác, hoặc gửi email đến support@fluxer.app để một nhân viên xem xét tài khoản của bạn.", - "phone.inbound_verification_required": "Số này được xác minh bằng cách bạn nhắn tin cho chúng tôi, chứ không phải chúng tôi nhắn tin cho bạn. Hãy bắt đầu lại quá trình xác minh điện thoại để nhận mã và số cần nhắn tin đến.", - "phone.invalid_number": "Số điện thoại không hợp lệ.", - "phone.lookup_unavailable": "Hệ thống kiểm tra số điện thoại của chúng tôi đang gặp sự cố, nên chúng tôi đã dừng lại trước khi gửi mã cho bạn. Lỗi này nằm ở phía chúng tôi, không phải ở số của bạn. Hãy đợi vài phút rồi thử lại chính số đó.", - "phone.number_already_used": "Số điện thoại đã được sử dụng.", - "phone.number_format_required": "Số điện thoại phải ở định dạng E.164 (ví dụ: +1234567890).", - "phone.number_not_in_service": "Nhà mạng của bạn cho biết số này không còn hoạt động. Hãy kiểm tra lại số và thử lần nữa, hoặc gửi email đến support@fluxer.app nếu số đó đúng.", - "phone.number_not_mobile": "Đây không phải số di động nên không thể nhận tin nhắn của chúng tôi. Hãy dùng một số di động, hoặc gửi email đến support@fluxer.app nếu bạn cho rằng điều này chưa đúng.", - "phone.verification_code_invalid": "Mã xác minh điện thoại không hợp lệ.", - "phone.verification_needs_review": "Chúng tôi không thể xác minh số này một cách tự động. Hãy gửi email đến support@fluxer.app để một nhân viên xem xét tài khoản của bạn.", - "phone.verification_required": "Yêu cầu xác minh số điện thoại.", "premium_and_plans.animated_avatars_require_premium": "Ảnh đại diện động yêu cầu gói Premium.", "premium_and_plans.banners_require_premium": "Ảnh bìa yêu cầu gói Premium.", "premium_and_plans.bio_requires_premium_for_length": "Tiểu sử dài hơn {maxLength} ký tự yêu cầu gói Premium.", @@ -423,7 +407,6 @@ const ERROR_I18N_VI_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "Gửi lại ủy quyền IP đang trong thời gian chờ.", "rate_limits.ip_authorization_resend_limit_exceeded": "Đã vượt quá giới hạn gửi lại ủy quyền IP.", "rate_limits.message_crosspost_rate_limited": "Kênh này đã đạt giới hạn xuất bản. Kênh có thể xuất bản 10 tin nhắn liên tiếp, sau đó thêm một tin mỗi 6 phút.", - "rate_limits.phone_rate_limit_exceeded": "Đã vượt quá giới hạn tốc độ đối với số điện thoại.", "rate_limits.pronouns_changed_too_often": "Bạn đã thay đổi đại từ nhân xưng quá thường xuyên gần đây. Vui lòng thử lại sau {minutes} {minutes, plural, other {phút}}.", "rate_limits.published_message_edit_rate_limited": "Tin nhắn đã xuất bản này đã đạt giới hạn chỉnh sửa. Tin nhắn có thể được chỉnh sửa 3 lần liên tiếp, sau đó thêm một lần mỗi 20 phút.", "rate_limits.rate_limited": "Bạn đang bị giới hạn tốc độ.", diff --git a/packages/errors/src/i18n/locales/zh-CN.ts b/packages/errors/src/i18n/locales/zh-CN.ts index e16d17a18..7a373c83a 100644 --- a/packages/errors/src/i18n/locales/zh-CN.ts +++ b/packages/errors/src/i18n/locales/zh-CN.ts @@ -7,9 +7,7 @@ const ERROR_I18N_ZH_CN_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "此操作需要验证邮箱。", "account.guild_verification_required": "需要社区验证。", "account.ip_authorization_required": "需要 IP 授权。", - "account.locked_suspicious_activity": "你的账号因可疑活动已被锁定。", - "account.phone_gate_escape_unavailable": "此账号无法暂缓手机验证。", - "account.phone_required_for_guild": "你需要添加手机号才能在此社区发送消息。", + "account.limited": "你的账号已被限制。请查看你的邮箱,了解如何解除限制。", "account.sensitive_content_filter_age_restricted": "此敏感内容过滤器不适用于你的年龄段。", "account.session_timeout": "会话超时。刷新页面后重新登录。", "account.session_token_mismatch": "会话令牌不匹配。", @@ -32,7 +30,6 @@ const ERROR_I18N_ZH_CN_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "表单正文无效。", "admin_and_system.invalid_format": "提供的值格式无效。", "admin_and_system.invalid_integer_format": "整数格式无效。", - "admin_and_system.invalid_suspicious_flags_format": "可疑标志格式无效。", "admin_and_system.invalid_system_flag": "系统标志无效。", "admin_and_system.invalid_timeout_value": "超时值无效。", "admin_and_system.invalid_timestamp": "时间戳无效。", @@ -44,7 +41,6 @@ const ERROR_I18N_ZH_CN_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "响应验证失败:{errors}。", "admin_and_system.test_harness_disabled": "测试工具已禁用。", "admin_and_system.test_harness_forbidden": "禁止使用测试工具。", - "admin_and_system.unknown_suspicious_flag": "未知可疑标志。", "admin_and_system.update_failed": "无法更新资源。请重试。", "admin_and_system.user_must_be_bot_for_system_user": "用户必须是机器人才能被标记为系统用户。", "age_verification.already_verified": "你已完成年龄验证。", @@ -394,18 +390,6 @@ const ERROR_I18N_ZH_CN_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "此用户不在频道中。", "permissions.user_not_in_voice": "此用户不在语音频道中。", "permissions.user_owns_guilds": "此用户拥有社区。", - "phone.add_not_eligible": "你的账号不符合添加手机号码的条件。", - "phone.country_not_supported": "我们不向该国家/地区发送验证短信。请使用其他国家/地区的手机号码,或发送邮件至 support@fluxer.app,会有工作人员审核你的账号。", - "phone.inbound_verification_required": "这个号码的验证方式是由你给我们发短信,而不是我们给你发短信。请重新开始手机验证,我们会给出验证码和接收短信的号码。", - "phone.invalid_number": "手机号码无效。", - "phone.lookup_unavailable": "我们的手机号码检查服务目前中断,所以在发送验证码之前就停下了。这是我们的问题,不是你号码的问题。请等几分钟后用同一个号码重试。", - "phone.number_already_used": "该手机号已被使用。", - "phone.number_format_required": "手机号码必须为 E.164 格式(例如,+1234567890)。", - "phone.number_not_in_service": "运营商反馈这个号码已停机或不在使用中。请检查号码后重试,如果号码没错,请发送邮件至 support@fluxer.app。", - "phone.number_not_mobile": "这不是手机号码,无法接收我们的短信。请使用手机号码,如果你认为这是误判,请发送邮件至 support@fluxer.app。", - "phone.verification_code_invalid": "无效的手机验证码。", - "phone.verification_needs_review": "我们无法自动验证这个号码。请发送邮件至 support@fluxer.app,会有工作人员审核你的账号。", - "phone.verification_required": "需要手机号码验证。", "premium_and_plans.animated_avatars_require_premium": "动态头像需要高级会员。", "premium_and_plans.banners_require_premium": "横幅需要高级会员。", "premium_and_plans.bio_requires_premium_for_length": "个人简介超过 {maxLength} 个字符需要高级会员。", @@ -423,7 +407,6 @@ const ERROR_I18N_ZH_CN_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "IP 授权重新发送冷却中。", "rate_limits.ip_authorization_resend_limit_exceeded": "IP 授权重新发送已达上限。", "rate_limits.message_crosspost_rate_limited": "此频道已达到发布上限。它可以连续发布 10 条消息,之后每 6 分钟可再发布 1 条。", - "rate_limits.phone_rate_limit_exceeded": "手机号请求频率过高。", "rate_limits.pronouns_changed_too_often": "你最近修改人称代词过于频繁。请在 {minutes, plural, other {# 分钟}}后重试。", "rate_limits.published_message_edit_rate_limited": "此已发布消息已达到编辑上限。它可以连续编辑 3 次,之后每 20 分钟可再编辑 1 次。", "rate_limits.rate_limited": "你的操作频率受限。", diff --git a/packages/errors/src/i18n/locales/zh-TW.ts b/packages/errors/src/i18n/locales/zh-TW.ts index 80b15a168..19f9201b6 100644 --- a/packages/errors/src/i18n/locales/zh-TW.ts +++ b/packages/errors/src/i18n/locales/zh-TW.ts @@ -7,9 +7,7 @@ const ERROR_I18N_ZH_TW_MESSAGES = defineErrorI18nLocaleMessages({ "account.email_verification_required": "此操作需要驗證電子郵件。", "account.guild_verification_required": "需要社群驗證。", "account.ip_authorization_required": "需要 IP 授權。", - "account.locked_suspicious_activity": "你的帳號因可疑活動遭到鎖定。", - "account.phone_gate_escape_unavailable": "此帳號無法暫緩電話驗證。", - "account.phone_required_for_guild": "你需要新增電話號碼才能在這個社群傳送訊息。", + "account.limited": "你的帳號已受到限制。請查看你的電子郵件,了解如何解除限制。", "account.sensitive_content_filter_age_restricted": "這個敏感內容篩選器不適用於你的年齡層。", "account.session_timeout": "工作階段逾時。請重新整理頁面並重新登入。", "account.session_token_mismatch": "工作階段權杖不符。", @@ -32,7 +30,6 @@ const ERROR_I18N_ZH_TW_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.invalid_form_body": "表單內容無效。", "admin_and_system.invalid_format": "提供的值格式無效。", "admin_and_system.invalid_integer_format": "整數格式無效。", - "admin_and_system.invalid_suspicious_flags_format": "可疑旗標格式無效。", "admin_and_system.invalid_system_flag": "系統旗標無效。", "admin_and_system.invalid_timeout_value": "逾時值無效。", "admin_and_system.invalid_timestamp": "時間戳記無效。", @@ -44,7 +41,6 @@ const ERROR_I18N_ZH_TW_MESSAGES = defineErrorI18nLocaleMessages({ "admin_and_system.response_validation_failed": "回應驗證失敗:{errors}。", "admin_and_system.test_harness_disabled": "測試工具已停用。", "admin_and_system.test_harness_forbidden": "禁止使用測試工具。", - "admin_and_system.unknown_suspicious_flag": "未知的可疑旗標。", "admin_and_system.update_failed": "我們無法更新資源。請再試一次。", "admin_and_system.user_must_be_bot_for_system_user": "使用者必須是機器人才能標記為系統使用者。", "age_verification.already_verified": "你已完成年齡驗證。", @@ -394,18 +390,6 @@ const ERROR_I18N_ZH_TW_MESSAGES = defineErrorI18nLocaleMessages({ "permissions.user_not_in_channel": "此使用者不在頻道中。", "permissions.user_not_in_voice": "此使用者不在語音頻道中。", "permissions.user_owns_guilds": "此使用者擁有社群。", - "phone.add_not_eligible": "你的帳號無法新增電話號碼。", - "phone.country_not_supported": "我們不會發送驗證簡訊到這個國家/地區。請使用其他國家/地區的手機號碼,或寄信到 support@fluxer.app,會有專人審核你的帳號。", - "phone.inbound_verification_required": "這個號碼的驗證方式是由你傳簡訊給我們,而不是我們傳簡訊給你。請重新開始電話驗證,我們會提供驗證碼和要傳送的號碼。", - "phone.invalid_number": "無效的電話號碼。", - "phone.lookup_unavailable": "我們的電話號碼檢查服務目前中斷,所以我們在傳送驗證碼前就先停下來了。這是我們的問題,不是你號碼的問題。請等幾分鐘後用同一個號碼再試一次。", - "phone.number_already_used": "電話號碼已被使用。", - "phone.number_format_required": "電話號碼必須是 E.164 格式(例如:+1234567890)。", - "phone.number_not_in_service": "電信業者表示這個號碼是空號。請檢查號碼後再試一次,如果號碼正確,請寄信到 support@fluxer.app。", - "phone.number_not_mobile": "這不是手機號碼,無法接收我們的簡訊。請使用手機號碼,如果你認為這是誤判,請寄信到 support@fluxer.app。", - "phone.verification_code_invalid": "無效的電話驗證碼。", - "phone.verification_needs_review": "我們無法自動驗證這個號碼。請寄信到 support@fluxer.app,會有專人審核你的帳號。", - "phone.verification_required": "需要電話驗證。", "premium_and_plans.animated_avatars_require_premium": "動態頭像需要進階方案。", "premium_and_plans.banners_require_premium": "橫幅需要進階方案。", "premium_and_plans.bio_requires_premium_for_length": "超過 {maxLength} 個字元的個人簡介需要進階方案。", @@ -423,7 +407,6 @@ const ERROR_I18N_ZH_TW_MESSAGES = defineErrorI18nLocaleMessages({ "rate_limits.ip_authorization_resend_cooldown": "IP 授權重新傳送正在冷卻中。", "rate_limits.ip_authorization_resend_limit_exceeded": "已超過 IP 授權重新傳送次數限制。", "rate_limits.message_crosspost_rate_limited": "此頻道已達發布上限。它可以連續發布 10 則訊息,之後每 6 分鐘可再發布 1 則。", - "rate_limits.phone_rate_limit_exceeded": "已超過電話頻率限制。", "rate_limits.pronouns_changed_too_often": "你最近太常變更代名詞。請在 {minutes, plural, other {# 分鐘}}後再試一次。", "rate_limits.published_message_edit_rate_limited": "此已發布訊息已達編輯上限。它可以連續編輯 3 次,之後每 20 分鐘可再編輯 1 次。", "rate_limits.rate_limited": "你受到頻率限制。", diff --git a/packages/errors/src/i18n/weblate/locales/ar.json b/packages/errors/src/i18n/weblate/locales/ar.json index 1b6b41c85..9ac017bf7 100644 --- a/packages/errors/src/i18n/weblate/locales/ar.json +++ b/packages/errors/src/i18n/weblate/locales/ar.json @@ -3,9 +3,7 @@ "account.email_verification_required": "يلزم التحقق من بريدك الإلكتروني لهذا الإجراء.", "account.guild_verification_required": "يلزم استيفاء متطلبات التحقق في هذا المجتمع.", "account.ip_authorization_required": "يلزم تفويض عنوان IP.", - "account.locked_suspicious_activity": "حسابك مغلق بسبب نشاط مشبوه.", - "account.phone_gate_escape_unavailable": "لا يمكن تأجيل التحقق من الهاتف لهذا الحساب.", - "account.phone_required_for_guild": "يجب إضافة رقم هاتف لإرسال الرسائل في هذا المجتمع.", + "account.limited": "حسابك مقيّد. راجع بريدك الإلكتروني لمعرفة كيفية رفع التقييد.", "account.sensitive_content_filter_age_restricted": "فلتر المحتوى الحساس هذا غير متاح لفئتك العمرية.", "account.session_timeout": "انتهت صلاحية الجلسة. حدّث الصفحة وسجّل الدخول مرة أخرى.", "account.session_token_mismatch": "عدم تطابق رمز الجلسة.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "محتوى النموذج غير صالح.", "admin_and_system.invalid_format": "القيمة المقدمة بتنسيق غير صالح.", "admin_and_system.invalid_integer_format": "تنسيق العدد الصحيح غير صالح.", - "admin_and_system.invalid_suspicious_flags_format": "تنسيق إشارات الاشتباه غير صالح.", "admin_and_system.invalid_system_flag": "إشارة النظام غير صالحة.", "admin_and_system.invalid_timeout_value": "قيمة المهلة غير صالحة.", "admin_and_system.invalid_timestamp": "الطابع الزمني غير صالح.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "فشل التحقق من الاستجابة: {errors}.", "admin_and_system.test_harness_disabled": "أداة الاختبار معطلة.", "admin_and_system.test_harness_forbidden": "أداة الاختبار محظورة.", - "admin_and_system.unknown_suspicious_flag": "إشارة اشتباه غير معروفة.", "admin_and_system.update_failed": "لم نتمكن من تحديث المورد. حاول مجددًا.", "admin_and_system.user_must_be_bot_for_system_user": "يجب أن يكون المستخدم بوتًا ليتم تحديده كمستخدم نظام.", "age_verification.already_verified": "لقد أكملت التحقق من العمر بالفعل.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "المستخدم ليس في القناة.", "permissions.user_not_in_voice": "المستخدم ليس في قناة صوتية.", "permissions.user_owns_guilds": "المستخدم يمتلك مجتمعات.", - "phone.add_not_eligible": "لست مؤهلًا لإضافة رقم هاتف إلى حسابك.", - "phone.country_not_supported": "لا نرسل رسائل التحقق النصية إلى هذا البلد. استخدم رقم هاتف محمول من بلد آخر، أو راسل support@fluxer.app وسيراجع أحد الأشخاص حسابك.", - "phone.inbound_verification_required": "يتم التحقق من هذا الرقم بأن ترسل أنت رسالة نصية إلينا، لا بأن نرسل نحن رسالة إليك. ابدأ التحقق من الهاتف من جديد للحصول على الرمز وعلى الرقم الذي سترسل الرسالة إليه.", - "phone.invalid_number": "رقم هاتف غير صالح.", - "phone.lookup_unavailable": "خدمة التحقق من أرقام الهواتف لدينا متوقفة حاليًا، لذلك توقفنا قبل إرسال الرمز إليك. الخلل من جهتنا، لا في رقمك. انتظر بضع دقائق ثم جرب الرقم نفسه مرة أخرى.", - "phone.number_already_used": "رقم الهاتف قيد الاستخدام بالفعل.", - "phone.number_format_required": "يجب أن يكون رقم الهاتف بتنسيق E.164 (مثال: +1234567890).", - "phone.number_not_in_service": "تفيد شركة الاتصالات بأن هذا الرقم غير قيد الخدمة. تحقق من الرقم وحاول مرة أخرى، أو راسل support@fluxer.app إذا كان الرقم صحيحًا.", - "phone.number_not_mobile": "هذا ليس رقم هاتف محمول، لذلك لا يمكنه استقبال رسالتنا النصية. استخدم رقم هاتف محمول، أو راسل support@fluxer.app إذا كنت تعتقد أن هذا خطأ.", - "phone.verification_code_invalid": "رمز تحقق الهاتف غير صالح.", - "phone.verification_needs_review": "لم نتمكن من التحقق من هذا الرقم تلقائيًا. راسل support@fluxer.app وسيراجع أحد الأشخاص حسابك.", - "phone.verification_required": "التحقق من رقم الهاتف مطلوب.", "premium_and_plans.animated_avatars_require_premium": "الصور الرمزية المتحركة تتطلب Premium.", "premium_and_plans.banners_require_premium": "اللافتات تتطلب Premium.", "premium_and_plans.bio_requires_premium_for_length": "السيرة الذاتية التي تزيد عن {maxLength} حرفًا تتطلب Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "يجب الانتظار قبل إعادة إرسال تفويض IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "تم تجاوز حد إعادة إرسال تفويض IP.", "rate_limits.message_crosspost_rate_limited": "وصلت هذه القناة إلى حد النشر. يمكنها نشر 10 رسائل متتالية، ثم رسالة واحدة إضافية كل 6 دقائق.", - "rate_limits.phone_rate_limit_exceeded": "تم تجاوز حد طلبات الهاتف.", "rate_limits.pronouns_changed_too_often": "لقد غيّرت ضمائرك مرات كثيرة مؤخرًا. حاول مجددًا بعد {minutes, plural, zero {# دقيقة} one {دقيقة واحدة} two {دقيقتين} few {# دقائق} many {# دقيقة} other {# دقيقة}}.", "rate_limits.published_message_edit_rate_limited": "وصلت هذه الرسالة المنشورة إلى حد التعديل. يمكن تعديلها 3 مرات متتالية، ثم مرة واحدة إضافية كل 20 دقيقة.", "rate_limits.rate_limited": "يتم تقييد معدل طلباتك.", diff --git a/packages/errors/src/i18n/weblate/locales/bg.json b/packages/errors/src/i18n/weblate/locales/bg.json index 2f2109dbf..e00bd152d 100644 --- a/packages/errors/src/i18n/weblate/locales/bg.json +++ b/packages/errors/src/i18n/weblate/locales/bg.json @@ -3,9 +3,7 @@ "account.email_verification_required": "За това действие се изисква потвърден имейл.", "account.guild_verification_required": "Изисква се потвърждение за общността.", "account.ip_authorization_required": "Необходимо е IP удостоверяване.", - "account.locked_suspicious_activity": "Акаунтът ти е заключен поради подозрителна активност.", - "account.phone_gate_escape_unavailable": "Отлагането на телефонната проверка не е достъпно за този акаунт.", - "account.phone_required_for_guild": "Трябва да добавиш телефонен номер, за да изпращаш съобщения в тази общност.", + "account.limited": "Акаунтът ти е ограничен. Провери имейла си, за да разбереш как да премахнеш ограничението.", "account.sensitive_content_filter_age_restricted": "Този филтър за чувствително съдържание не е наличен за твоята възрастова група.", "account.session_timeout": "Сесията изтече. Презареди страницата и влез отново.", "account.session_token_mismatch": "Несъответствие на токена за сесия.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Невалидно тяло на формуляра.", "admin_and_system.invalid_format": "Предоставената стойност е с невалиден формат.", "admin_and_system.invalid_integer_format": "Невалиден формат на цяло число.", - "admin_and_system.invalid_suspicious_flags_format": "Невалиден формат на подозрителните флагове.", "admin_and_system.invalid_system_flag": "Невалиден системен флаг.", "admin_and_system.invalid_timeout_value": "Невалидна стойност за изчакването.", "admin_and_system.invalid_timestamp": "Невалиден времеви печат.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Валидацията на отговора е неуспешна: {errors}.", "admin_and_system.test_harness_disabled": "Тестовата система е деактивирана.", "admin_and_system.test_harness_forbidden": "Тестовата система е забранена.", - "admin_and_system.unknown_suspicious_flag": "Неизвестен подозрителен флаг.", "admin_and_system.update_failed": "Не успяхме да актуализираме ресурса. Опитай отново.", "admin_and_system.user_must_be_bot_for_system_user": "Потребителят трябва да бъде бот, за да бъде маркиран като системен потребител.", "age_verification.already_verified": "Вече премина проверката за възраст.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Този потребител не е в канала.", "permissions.user_not_in_voice": "Този потребител не е в гласов канал.", "permissions.user_owns_guilds": "Този потребител притежава общности.", - "phone.add_not_eligible": "Не можеш да добавяш телефонен номер към акаунта си.", - "phone.country_not_supported": "Не изпращаме SMS с код за потвърждение до тази държава. Използвай мобилен номер от друга държава или пиши на support@fluxer.app и човек ще прегледа акаунта ти.", - "phone.inbound_verification_required": "Този номер се потвърждава, като ти ни изпратиш SMS, а не ние на теб. Започни потвърждението на телефона отново, за да получиш кода и номера, на който да го изпратиш.", - "phone.invalid_number": "Невалиден телефонен номер.", - "phone.lookup_unavailable": "Проверката ни на телефонни номера в момента не работи, затова спряхме, преди да изпратим кода ти. Вината е наша, не на номера ти. Изчакай няколко минути и опитай отново със същия номер.", - "phone.number_already_used": "Телефонният номер вече се използва.", - "phone.number_format_required": "Телефонният номер трябва да е във формат E.164 (например +1234567890).", - "phone.number_not_in_service": "Операторът ти съобщава, че този номер не е активен. Провери номера и опитай отново или пиши на support@fluxer.app, ако номерът е верен.", - "phone.number_not_mobile": "Това не е мобилен номер, затова не може да получи нашия SMS. Използвай мобилен номер или пиши на support@fluxer.app, ако смяташ, че това е грешка.", - "phone.verification_code_invalid": "Невалиден код за потвърждение на телефон.", - "phone.verification_needs_review": "Не успяхме да потвърдим този номер автоматично. Пиши на support@fluxer.app и човек ще прегледа акаунта ти.", - "phone.verification_required": "Изисква се потвърждение на телефон.", "premium_and_plans.animated_avatars_require_premium": "Анимираните аватари изискват Premium.", "premium_and_plans.banners_require_premium": "Банерите изискват Premium.", "premium_and_plans.bio_requires_premium_for_length": "Биография с повече от {maxLength} знака изисква Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Повторното изпращане на IP оторизация е в период на изчакване.", "rate_limits.ip_authorization_resend_limit_exceeded": "Лимитът за повторно изпращане на IP оторизация е надвишен.", "rate_limits.message_crosspost_rate_limited": "Този канал достигна лимита си за публикуване. Може да публикува 10 съобщения подред, след което още едно на всеки 6 минути.", - "rate_limits.phone_rate_limit_exceeded": "Лимитът на заявките за телефон е надвишен.", "rate_limits.pronouns_changed_too_often": "Сменяш местоименията си твърде често напоследък. Опитай отново след {minutes} {minutes, plural, one {минута} other {минути}}.", "rate_limits.published_message_edit_rate_limited": "Това публикувано съобщение достигна лимита си за редакции. Може да бъде редактирано 3 пъти подред, след което още веднъж на всеки 20 минути.", "rate_limits.rate_limited": "Достигна лимита на заявките.", diff --git a/packages/errors/src/i18n/weblate/locales/cs.json b/packages/errors/src/i18n/weblate/locales/cs.json index 695d63de2..366d54755 100644 --- a/packages/errors/src/i18n/weblate/locales/cs.json +++ b/packages/errors/src/i18n/weblate/locales/cs.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Pro tuto akci je vyžadováno ověření e-mailu.", "account.guild_verification_required": "Vyžaduje se ověření komunity.", "account.ip_authorization_required": "Vyžaduje se autorizace IP adresy.", - "account.locked_suspicious_activity": "Váš účet je uzamčen kvůli podezřelé aktivitě.", - "account.phone_gate_escape_unavailable": "Odložení ověření telefonu není pro tento účet dostupné.", - "account.phone_required_for_guild": "Pro odesílání zpráv v této komunitě musíte přidat telefonní číslo.", + "account.limited": "Váš účet je omezený. Jak omezení zrušit, najdete ve svém e-mailu.", "account.sensitive_content_filter_age_restricted": "Tento filtr citlivého obsahu není pro vaši věkovou skupinu dostupný.", "account.session_timeout": "Platnost relace vypršela. Obnovte stránku a přihlaste se znovu.", "account.session_token_mismatch": "Token relace nesouhlasí.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Neplatný obsah formuláře.", "admin_and_system.invalid_format": "Zadaná hodnota je v neplatném formátu.", "admin_and_system.invalid_integer_format": "Neplatný formát celého čísla.", - "admin_and_system.invalid_suspicious_flags_format": "Neplatný formát podezřelých příznaků.", "admin_and_system.invalid_system_flag": "Neplatný systémový příznak.", "admin_and_system.invalid_timeout_value": "Neplatná hodnota časového limitu.", "admin_and_system.invalid_timestamp": "Neplatné časové razítko.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Ověření odpovědi selhalo: {errors}.", "admin_and_system.test_harness_disabled": "Testovací prostředí je vypnuté.", "admin_and_system.test_harness_forbidden": "Přístup k testovacímu prostředí je zakázán.", - "admin_and_system.unknown_suspicious_flag": "Neznámý příznak podezřelé aktivity.", "admin_and_system.update_failed": "Nepodařilo se aktualizovat zdroj. Zkuste to znovu.", "admin_and_system.user_must_be_bot_for_system_user": "Uživatel musí být bot, aby mohl být označen jako systémový uživatel.", "age_verification.already_verified": "Ověření věku už bylo dokončeno.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Tento uživatel není v kanálu.", "permissions.user_not_in_voice": "Tento uživatel není v hlasovém hovoru.", "permissions.user_owns_guilds": "Tento uživatel vlastní komunity.", - "phone.add_not_eligible": "Nesplňujete podmínky pro přidání telefonního čísla ke svému účtu.", - "phone.country_not_supported": "Do této země ověřovací SMS neposíláme. Použijte mobilní číslo z jiné země nebo napište na support@fluxer.app a váš účet posoudí člověk.", - "phone.inbound_verification_required": "Toto číslo se ověřuje tak, že SMS pošlete vy nám, ne my vám. Spusťte ověření telefonu znovu a získáte kód i číslo, na které ho máte poslat.", - "phone.invalid_number": "Neplatné telefonní číslo.", - "phone.lookup_unavailable": "Ověřování telefonních čísel momentálně nefunguje, proto jsme kód neodeslali. Chyba je na naší straně, ne ve vašem čísle. Počkejte několik minut a zkuste stejné číslo znovu.", - "phone.number_already_used": "Telefonní číslo je již používáno.", - "phone.number_format_required": "Telefonní číslo musí být ve formátu E.164 (například +1234567890).", - "phone.number_not_in_service": "Váš operátor hlásí, že toto číslo není v provozu. Zkontrolujte číslo a zkuste to znovu, nebo napište na support@fluxer.app, pokud je správné.", - "phone.number_not_mobile": "Toto není mobilní číslo, takže na něj naše SMS nemůže dorazit. Použijte mobilní číslo, nebo napište na support@fluxer.app, pokud se domníváte, že jde o omyl.", - "phone.verification_code_invalid": "Neplatný ověřovací kód telefonu.", - "phone.verification_needs_review": "Toto číslo se nepodařilo ověřit automaticky. Napište na support@fluxer.app a váš účet posoudí člověk.", - "phone.verification_required": "Je vyžadováno ověření telefonu.", "premium_and_plans.animated_avatars_require_premium": "Animované avatary vyžadují tarif Premium.", "premium_and_plans.banners_require_premium": "Bannery vyžadují tarif Premium.", "premium_and_plans.bio_requires_premium_for_length": "Bio delší než {maxLength} znaků vyžaduje tarif Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Před opětovným odesláním autorizace IP adresy je nutné počkat.", "rate_limits.ip_authorization_resend_limit_exceeded": "Byl překročen limit opětovného odesílání autorizace IP adresy.", "rate_limits.message_crosspost_rate_limited": "Tento kanál dosáhl limitu pro zveřejňování. Může zveřejnit 10 zpráv za sebou a potom jednu další každých 6 minut.", - "rate_limits.phone_rate_limit_exceeded": "Byl překročen limit četnosti požadavků pro telefonní číslo.", "rate_limits.pronouns_changed_too_often": "V poslední době jste měnili svá zájmena příliš často. Zkuste to znovu za {minutes, plural, one {# minutu} few {# minuty} many {# minuty} other {# minut}}.", "rate_limits.published_message_edit_rate_limited": "Tato zveřejněná zpráva dosáhla limitu úprav. Lze ji upravit 3krát za sebou a potom jednou každých 20 minut.", "rate_limits.rate_limited": "Byl překročen limit četnosti požadavků.", diff --git a/packages/errors/src/i18n/weblate/locales/da.json b/packages/errors/src/i18n/weblate/locales/da.json index 855a9232a..aed576526 100644 --- a/packages/errors/src/i18n/weblate/locales/da.json +++ b/packages/errors/src/i18n/weblate/locales/da.json @@ -3,9 +3,7 @@ "account.email_verification_required": "E-mailbekræftelse er påkrævet for denne handling.", "account.guild_verification_required": "Verificering i fællesskabet er påkrævet.", "account.ip_authorization_required": "Godkendelse af IP-adressen er påkrævet.", - "account.locked_suspicious_activity": "Din konto er låst på grund af mistænkelig aktivitet.", - "account.phone_gate_escape_unavailable": "Bekræftelsen af telefonnummeret kan ikke udsættes for denne konto.", - "account.phone_required_for_guild": "Du skal tilføje et telefonnummer for at sende beskeder i dette fællesskab.", + "account.limited": "Din konto er begrænset. Tjek din e-mail for at se, hvordan du ophæver begrænsningen.", "account.sensitive_content_filter_age_restricted": "Dette filter til følsomt indhold er ikke tilgængeligt for din aldersgruppe.", "account.session_timeout": "Sessionen er udløbet. Opdater siden, og log ind igen.", "account.session_token_mismatch": "Sessionstokenet stemmer ikke overens.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Ugyldigt formularindhold.", "admin_and_system.invalid_format": "Den angivne værdi er i et ugyldigt format.", "admin_and_system.invalid_integer_format": "Ugyldigt heltalsformat.", - "admin_and_system.invalid_suspicious_flags_format": "Ugyldigt format for mistænkelige flag.", "admin_and_system.invalid_system_flag": "Ugyldigt systemflag.", "admin_and_system.invalid_timeout_value": "Ugyldig timeout-værdi.", "admin_and_system.invalid_timestamp": "Ugyldigt tidsstempel.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Validering af svar mislykkedes: {errors}.", "admin_and_system.test_harness_disabled": "Testmiljøet er deaktiveret.", "admin_and_system.test_harness_forbidden": "Adgang til testmiljøet er ikke tilladt.", - "admin_and_system.unknown_suspicious_flag": "Ukendt mistænkeligt flag.", "admin_and_system.update_failed": "Ressourcen kunne ikke opdateres. Prøv igen.", "admin_and_system.user_must_be_bot_for_system_user": "Brugeren skal være en bot for at kunne markeres som systembruger.", "age_verification.already_verified": "Du har allerede gennemført aldersbekræftelse.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Denne bruger er ikke i kanalen.", "permissions.user_not_in_voice": "Denne bruger er ikke i et taleopkald.", "permissions.user_owns_guilds": "Denne bruger ejer fællesskaber.", - "phone.add_not_eligible": "Du opfylder ikke kravene til at tilføje et telefonnummer til din konto.", - "phone.country_not_supported": "Vi sender ikke bekræftelses-sms'er til dette land. Brug et mobilnummer fra et andet land, eller skriv til support@fluxer.app, så gennemgår en medarbejder din konto.", - "phone.inbound_verification_required": "Dette nummer bekræftes ved, at du sender os en sms, og ikke ved, at vi sender dig en. Start telefonbekræftelsen igen for at få koden og det nummer, du skal sende den til.", - "phone.invalid_number": "Ugyldigt telefonnummer.", - "phone.lookup_unavailable": "Vores kontrol af telefonnumre er nede lige nu, så vi stoppede, inden din kode blev sendt. Fejlen ligger hos os, ikke i dit nummer. Vent et par minutter, og prøv det samme nummer igen.", - "phone.number_already_used": "Telefonnummeret er allerede i brug.", - "phone.number_format_required": "Telefonnummeret skal være i E.164-format (f.eks. +1234567890).", - "phone.number_not_in_service": "Dit teleselskab oplyser, at dette nummer ikke er aktivt. Kontroller nummeret, og prøv igen, eller skriv til support@fluxer.app, hvis det er korrekt.", - "phone.number_not_mobile": "Dette er ikke et mobilnummer, så det kan ikke modtage vores sms. Brug et mobilnummer, eller skriv til support@fluxer.app, hvis du mener, at det er forkert.", - "phone.verification_code_invalid": "Ugyldig telefonbekræftelseskode.", - "phone.verification_needs_review": "Vi kunne ikke bekræfte dette nummer automatisk. Skriv til support@fluxer.app, så gennemgår en medarbejder din konto.", - "phone.verification_required": "Telefonbekræftelse er påkrævet.", "premium_and_plans.animated_avatars_require_premium": "Animerede avatarer kræver et Premium-abonnement.", "premium_and_plans.banners_require_premium": "Bannere kræver et Premium-abonnement.", "premium_and_plans.bio_requires_premium_for_length": "En biografi længere end {maxLength} tegn kræver et Premium-abonnement.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Du skal vente, før du kan få godkendelsen af IP-adressen sendt igen.", "rate_limits.ip_authorization_resend_limit_exceeded": "Du har nået grænsen for at få godkendelsen af IP-adressen sendt igen.", "rate_limits.message_crosspost_rate_limited": "Denne kanal har nået sin grænse for offentliggørelser. Den kan offentliggøre 10 beskeder i træk og derefter én mere hvert 6. minut.", - "rate_limits.phone_rate_limit_exceeded": "Grænsen for telefonanmodninger er overskredet.", "rate_limits.pronouns_changed_too_often": "Du har ændret dine pronominer for ofte for nylig. Prøv igen om {minutes, plural, one {# minut} other {# minutter}}.", "rate_limits.published_message_edit_rate_limited": "Denne offentliggjorte besked har nået sin grænse for redigeringer. Den kan redigeres 3 gange i træk og derefter én gang mere hvert 20. minut.", "rate_limits.rate_limited": "Du sender for mange anmodninger.", diff --git a/packages/errors/src/i18n/weblate/locales/de.json b/packages/errors/src/i18n/weblate/locales/de.json index 69f495c00..e18b956b2 100644 --- a/packages/errors/src/i18n/weblate/locales/de.json +++ b/packages/errors/src/i18n/weblate/locales/de.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Für diese Aktion ist eine Bestätigung deiner E-Mail-Adresse erforderlich.", "account.guild_verification_required": "Community-Verifizierung ist erforderlich.", "account.ip_authorization_required": "IP-Autorisierung ist erforderlich.", - "account.locked_suspicious_activity": "Dein Account ist wegen verdächtiger Aktivitäten gesperrt.", - "account.phone_gate_escape_unavailable": "Für diesen Account kann die Verifizierung der Telefonnummer nicht aufgeschoben werden.", - "account.phone_required_for_guild": "Du musst eine Telefonnummer hinzufügen, um Nachrichten in dieser Community senden zu können.", + "account.limited": "Dein Account ist eingeschränkt. In deinen E-Mails erfährst du, wie du die Einschränkung aufhebst.", "account.sensitive_content_filter_age_restricted": "Dieser Filter für sensible Inhalte ist für deine Altersgruppe nicht verfügbar.", "account.session_timeout": "Sitzung abgelaufen. Lade die Seite neu und melde dich erneut an.", "account.session_token_mismatch": "Das Sitzungstoken stimmt nicht überein.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Ungültiger Formularinhalt.", "admin_and_system.invalid_format": "Der angegebene Wert hat ein ungültiges Format.", "admin_and_system.invalid_integer_format": "Ungültiges Ganzzahlformat.", - "admin_and_system.invalid_suspicious_flags_format": "Ungültiges Format für verdächtige Flags.", "admin_and_system.invalid_system_flag": "Ungültiges System-Flag.", "admin_and_system.invalid_timeout_value": "Ungültiger Timeout-Wert.", "admin_and_system.invalid_timestamp": "Ungültiger Zeitstempel.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Antwortvalidierung fehlgeschlagen: {errors}.", "admin_and_system.test_harness_disabled": "Test-Harness ist deaktiviert.", "admin_and_system.test_harness_forbidden": "Test-Harness ist verboten.", - "admin_and_system.unknown_suspicious_flag": "Unbekanntes verdächtiges Flag.", "admin_and_system.update_failed": "Wir konnten die Ressource nicht aktualisieren. Bitte versuche es erneut.", "admin_and_system.user_must_be_bot_for_system_user": "Ein Benutzer muss ein Bot sein, um als Systembenutzer markiert zu werden.", "age_verification.already_verified": "Du hast die Altersbestätigung bereits abgeschlossen.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Dieser Benutzer ist nicht im Kanal.", "permissions.user_not_in_voice": "Dieser Benutzer ist nicht im Sprachkanal.", "permissions.user_owns_guilds": "Dieser Benutzer besitzt Communitys.", - "phone.add_not_eligible": "Du kannst deinem Account keine Telefonnummer hinzufügen.", - "phone.country_not_supported": "Wir senden keine Bestätigungs-SMS in dieses Land. Verwende eine Mobilnummer aus einem anderen Land oder schreibe an support@fluxer.app, dann prüft eine Person deinen Account.", - "phone.inbound_verification_required": "Diese Nummer wird bestätigt, indem du uns eine SMS schickst, und nicht, indem wir dir eine schicken. Starte die Telefonbestätigung erneut, um den Code und die Nummer zu erhalten, an die du ihn senden musst.", - "phone.invalid_number": "Ungültige Telefonnummer.", - "phone.lookup_unavailable": "Unsere Prüfung von Telefonnummern ist gerade gestört, deshalb haben wir abgebrochen, bevor dein Code gesendet wurde. Das liegt an uns, nicht an deiner Nummer. Warte ein paar Minuten und versuche es dann mit derselben Nummer erneut.", - "phone.number_already_used": "Telefonnummer wird bereits verwendet.", - "phone.number_format_required": "Die Telefonnummer muss dem E.164-Format entsprechen (z. B. +1234567890).", - "phone.number_not_in_service": "Dein Mobilfunkanbieter meldet, dass diese Nummer nicht aktiv ist. Überprüfe die Nummer und versuche es erneut, oder schreibe an support@fluxer.app, wenn sie korrekt ist.", - "phone.number_not_mobile": "Das ist keine Mobilnummer, deshalb kann sie unsere SMS nicht empfangen. Verwende eine Mobilnummer oder schreibe an support@fluxer.app, wenn das deiner Meinung nach nicht stimmt.", - "phone.verification_code_invalid": "Ungültiger Telefonbestätigungscode.", - "phone.verification_needs_review": "Wir konnten diese Nummer nicht automatisch bestätigen. Schreibe an support@fluxer.app, dann prüft eine Person deinen Account.", - "phone.verification_required": "Telefonbestätigung ist erforderlich.", "premium_and_plans.animated_avatars_require_premium": "Animierte Avatare erfordern Premium.", "premium_and_plans.banners_require_premium": "Banner erfordern Premium.", "premium_and_plans.bio_requires_premium_for_length": "Eine Bio mit mehr als {maxLength} Zeichen erfordert Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Die Anfrage zur IP-Autorisierung kann noch nicht erneut gesendet werden.", "rate_limits.ip_authorization_resend_limit_exceeded": "Das Limit für das erneute Senden von IP-Autorisierungsanfragen wurde überschritten.", "rate_limits.message_crosspost_rate_limited": "Dieser Kanal hat sein Veröffentlichungslimit erreicht. Er kann 10 Nachrichten am Stück veröffentlichen und danach alle 6 Minuten eine weitere.", - "rate_limits.phone_rate_limit_exceeded": "Das Anfragelimit für die Telefonverifizierung wurde überschritten.", "rate_limits.pronouns_changed_too_often": "Du hast deine Pronomen in letzter Zeit zu oft geändert. Bitte versuche es in {minutes, plural, one {# Minute} other {# Minuten}} erneut.", "rate_limits.published_message_edit_rate_limited": "Diese veröffentlichte Nachricht hat ihr Bearbeitungslimit erreicht. Sie kann 3-mal am Stück bearbeitet werden und danach alle 20 Minuten ein weiteres Mal.", "rate_limits.rate_limited": "Du stellst zu viele Anfragen.", diff --git a/packages/errors/src/i18n/weblate/locales/el.json b/packages/errors/src/i18n/weblate/locales/el.json index a6d21afef..107f80fca 100644 --- a/packages/errors/src/i18n/weblate/locales/el.json +++ b/packages/errors/src/i18n/weblate/locales/el.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Απαιτείται επιβεβαίωση της διεύθυνσης email σου για αυτήν την ενέργεια.", "account.guild_verification_required": "Απαιτείται επαλήθευση κοινότητας.", "account.ip_authorization_required": "Απαιτείται εξουσιοδότηση IP.", - "account.locked_suspicious_activity": "Ο λογαριασμός σου είναι κλειδωμένος λόγω ύποπτης δραστηριότητας.", - "account.phone_gate_escape_unavailable": "Η αναβολή του ελέγχου επαλήθευσης τηλεφώνου δεν είναι διαθέσιμη για αυτόν τον λογαριασμό.", - "account.phone_required_for_guild": "Πρέπει να προσθέσεις έναν αριθμό τηλεφώνου για να στείλεις μηνύματα σε αυτήν την κοινότητα.", + "account.limited": "Ο λογαριασμός σου είναι περιορισμένος. Έλεγξε το email σου για να δεις πώς να άρεις τον περιορισμό.", "account.sensitive_content_filter_age_restricted": "Αυτό το φίλτρο ευαίσθητου περιεχομένου δεν είναι διαθέσιμο για την ηλικιακή σου ομάδα.", "account.session_timeout": "Η συνεδρία έληξε. Ανανέωσε τη σελίδα και συνδέσου ξανά.", "account.session_token_mismatch": "Ασυμφωνία token συνεδρίας.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Μη έγκυρο σώμα φόρμας.", "admin_and_system.invalid_format": "Η παρεχόμενη τιμή είναι σε μη έγκυρη μορφή.", "admin_and_system.invalid_integer_format": "Μη έγκυρη μορφή ακέραιου αριθμού.", - "admin_and_system.invalid_suspicious_flags_format": "Μη έγκυρη μορφή ύποπτων σημαιών.", "admin_and_system.invalid_system_flag": "Μη έγκυρη σημαία συστήματος.", "admin_and_system.invalid_timeout_value": "Μη έγκυρη τιμή χρονικού ορίου.", "admin_and_system.invalid_timestamp": "Μη έγκυρη χρονική σήμανση.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Απέτυχε η επικύρωση της απάντησης: {errors}.", "admin_and_system.test_harness_disabled": "Το test harness είναι απενεργοποιημένο.", "admin_and_system.test_harness_forbidden": "Το test harness απαγορεύεται.", - "admin_and_system.unknown_suspicious_flag": "Άγνωστη ύποπτη σημαία.", "admin_and_system.update_failed": "Δεν μπορέσαμε να ενημερώσουμε τον πόρο. Δοκίμασε ξανά.", "admin_and_system.user_must_be_bot_for_system_user": "Ο χρήστης πρέπει να είναι bot για να οριστεί ως χρήστης συστήματος.", "age_verification.already_verified": "Έχεις ήδη ολοκληρώσει την επαλήθευση ηλικίας.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Αυτός ο χρήστης δεν βρίσκεται στο κανάλι.", "permissions.user_not_in_voice": "Αυτός ο χρήστης δεν είναι σε φωνητικό κανάλι.", "permissions.user_owns_guilds": "Αυτός ο χρήστης είναι κάτοχος κοινοτήτων.", - "phone.add_not_eligible": "Δεν πληροίς τις προϋποθέσεις για να προσθέσεις αριθμό τηλεφώνου στον λογαριασμό σου.", - "phone.country_not_supported": "Δεν στέλνουμε μηνύματα επαλήθευσης σε αυτήν τη χώρα. Χρησιμοποίησε έναν αριθμό κινητού από άλλη χώρα ή στείλε email στο support@fluxer.app και ένα άτομο θα ελέγξει τον λογαριασμό σου.", - "phone.inbound_verification_required": "Αυτός ο αριθμός επαληθεύεται με μήνυμα που στέλνεις εσύ σε εμάς, όχι με μήνυμα που σου στέλνουμε εμείς. Ξεκίνησε ξανά την επαλήθευση τηλεφώνου για να πάρεις τον κωδικό και τον αριθμό στον οποίο θα στείλεις το μήνυμα.", - "phone.invalid_number": "Μη έγκυρος αριθμός τηλεφώνου.", - "phone.lookup_unavailable": "Η υπηρεσία μας για τον έλεγχο αριθμών τηλεφώνου δεν λειτουργεί αυτή τη στιγμή, οπότε σταματήσαμε πριν στείλουμε τον κωδικό σου. Η ευθύνη είναι δική μας, όχι του αριθμού σου. Περίμενε λίγα λεπτά και δοκίμασε ξανά τον ίδιο αριθμό.", - "phone.number_already_used": "Ο αριθμός τηλεφώνου χρησιμοποιείται ήδη.", - "phone.number_format_required": "Ο αριθμός τηλεφώνου πρέπει να είναι σε μορφή E.164 (για παράδειγμα, +1234567890).", - "phone.number_not_in_service": "Ο πάροχός σου αναφέρει ότι αυτός ο αριθμός δεν είναι σε χρήση. Έλεγξε τον αριθμό και δοκίμασε ξανά ή στείλε email στο support@fluxer.app αν είναι σωστός.", - "phone.number_not_mobile": "Αυτός δεν είναι αριθμός κινητού, οπότε δεν μπορεί να λάβει το μήνυμά μας. Χρησιμοποίησε έναν αριθμό κινητού ή στείλε email στο support@fluxer.app αν πιστεύεις ότι αυτό είναι λάθος.", - "phone.verification_code_invalid": "Μη έγκυρος κωδικός επαλήθευσης τηλεφώνου.", - "phone.verification_needs_review": "Δεν μπορέσαμε να επαληθεύσουμε αυτόν τον αριθμό αυτόματα. Στείλε email στο support@fluxer.app και ένα άτομο θα ελέγξει τον λογαριασμό σου.", - "phone.verification_required": "Απαιτείται επαλήθευση τηλεφώνου.", "premium_and_plans.animated_avatars_require_premium": "Τα κινούμενα avatar απαιτούν Premium.", "premium_and_plans.banners_require_premium": "Τα banner απαιτούν Premium.", "premium_and_plans.bio_requires_premium_for_length": "Ένα βιογραφικό μεγαλύτερο από {maxLength} χαρακτήρες απαιτεί Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Πρέπει να περιμένεις πριν στείλεις ξανά την εξουσιοδότηση IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "Το όριο εκ νέου αποστολής εξουσιοδότησης IP έχει ξεπεραστεί.", "rate_limits.message_crosspost_rate_limited": "Αυτό το κανάλι έφτασε το όριο δημοσιεύσεών του. Μπορεί να δημοσιεύσει 10 μηνύματα στη σειρά και μετά ένα ακόμα κάθε 6 λεπτά.", - "rate_limits.phone_rate_limit_exceeded": "Το όριο αιτημάτων τηλεφώνου έχει ξεπεραστεί.", "rate_limits.pronouns_changed_too_often": "Άλλαξες τις αντωνυμίες σου πολύ συχνά πρόσφατα. Δοκίμασε ξανά μετά από {minutes} {minutes, plural, one {λεπτό} other {λεπτά}}.", "rate_limits.published_message_edit_rate_limited": "Αυτό το δημοσιευμένο μήνυμα έφτασε το όριο επεξεργασιών του. Μπορεί να επεξεργαστεί 3 φορές στη σειρά και μετά μία ακόμα φορά κάθε 20 λεπτά.", "rate_limits.rate_limited": "Έχεις ξεπεράσει το όριο αιτημάτων.", diff --git a/packages/errors/src/i18n/weblate/locales/en-GB.json b/packages/errors/src/i18n/weblate/locales/en-GB.json index dec2d9302..a5e84668a 100644 --- a/packages/errors/src/i18n/weblate/locales/en-GB.json +++ b/packages/errors/src/i18n/weblate/locales/en-GB.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Email verification is required for this action.", "account.guild_verification_required": "Community verification is required.", "account.ip_authorization_required": "IP authorisation is required.", - "account.locked_suspicious_activity": "Your account is locked due to suspicious activity.", - "account.phone_gate_escape_unavailable": "This account cannot postpone the phone verification check.", - "account.phone_required_for_guild": "You need to add a phone number to send messages in this community.", + "account.limited": "Your account is limited. Check your email for how to lift it.", "account.sensitive_content_filter_age_restricted": "This sensitive content filter isn't available for your age group.", "account.session_timeout": "Session timed out. Refresh the page and log in again.", "account.session_token_mismatch": "Session token mismatch.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Invalid form body.", "admin_and_system.invalid_format": "The provided value is in an invalid format.", "admin_and_system.invalid_integer_format": "Invalid integer format.", - "admin_and_system.invalid_suspicious_flags_format": "Invalid suspicious flags format.", "admin_and_system.invalid_system_flag": "Invalid system flag.", "admin_and_system.invalid_timeout_value": "Invalid timeout value.", "admin_and_system.invalid_timestamp": "Invalid timestamp.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Response validation failed: {errors}.", "admin_and_system.test_harness_disabled": "Test harness is disabled.", "admin_and_system.test_harness_forbidden": "Test harness is forbidden.", - "admin_and_system.unknown_suspicious_flag": "Unknown suspicious flag.", "admin_and_system.update_failed": "We couldn't update the resource. Please try again.", "admin_and_system.user_must_be_bot_for_system_user": "User must be a bot to be marked as a system user.", "age_verification.already_verified": "You've already completed age verification.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "This user isn't in the channel.", "permissions.user_not_in_voice": "This user isn't in voice.", "permissions.user_owns_guilds": "This user owns communities.", - "phone.add_not_eligible": "You are not eligible to add a phone number to your account.", - "phone.country_not_supported": "We don't send verification texts to this country. Use a mobile number from another country, or email support@fluxer.app and a person will review your account.", - "phone.inbound_verification_required": "This number is verified by texting us instead of us texting you. Start phone verification again to get the code and the number to text.", - "phone.invalid_number": "Invalid phone number.", - "phone.lookup_unavailable": "Our phone number check is down right now, so we stopped before sending your code. This is on us, not your number. Wait a few minutes and try the same number again.", - "phone.number_already_used": "Phone number is already in use.", - "phone.number_format_required": "Phone number must be in E.164 format (for example, +1234567890).", - "phone.number_not_in_service": "Your carrier says this number isn't in service. Check the number and try again, or email support@fluxer.app if it's correct.", - "phone.number_not_mobile": "This isn't a mobile number, so it can't receive our text. Use a mobile number, or email support@fluxer.app if you think that's wrong.", - "phone.verification_code_invalid": "Invalid phone verification code.", - "phone.verification_needs_review": "We couldn't verify this number automatically. Email support@fluxer.app and a person will review your account.", - "phone.verification_required": "Phone verification is required.", "premium_and_plans.animated_avatars_require_premium": "Animated avatars require Premium.", "premium_and_plans.banners_require_premium": "Banners require Premium.", "premium_and_plans.bio_requires_premium_for_length": "A bio longer than {maxLength} characters requires Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "IP authorisation resend is on cooldown.", "rate_limits.ip_authorization_resend_limit_exceeded": "IP authorisation resend limit exceeded.", "rate_limits.message_crosspost_rate_limited": "This channel has reached its publishing limit. It can publish 10 messages in a row, then one more every 6 minutes.", - "rate_limits.phone_rate_limit_exceeded": "Phone rate limit exceeded.", "rate_limits.pronouns_changed_too_often": "You've changed your pronouns too often recently. Please try again in {minutes, plural, one {# minute} other {# minutes}}.", "rate_limits.published_message_edit_rate_limited": "This published message has reached its editing limit. It allows 3 quick edits, then 1 every 20 minutes.", "rate_limits.rate_limited": "You're being rate limited.", diff --git a/packages/errors/src/i18n/weblate/locales/es-419.json b/packages/errors/src/i18n/weblate/locales/es-419.json index 0964fd59c..be7d91a07 100644 --- a/packages/errors/src/i18n/weblate/locales/es-419.json +++ b/packages/errors/src/i18n/weblate/locales/es-419.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Se requiere verificar tu correo electrónico para esta acción.", "account.guild_verification_required": "Se requiere verificación de la comunidad.", "account.ip_authorization_required": "Se requiere autorización de IP.", - "account.locked_suspicious_activity": "Tu cuenta está bloqueada debido a actividad sospechosa.", - "account.phone_gate_escape_unavailable": "Esta cuenta no puede posponer la verificación del teléfono.", - "account.phone_required_for_guild": "Necesitas agregar un número de teléfono para enviar mensajes en esta comunidad.", + "account.limited": "Tu cuenta está limitada. Revisa tu correo electrónico para saber cómo quitar la limitación.", "account.sensitive_content_filter_age_restricted": "Este filtro de contenido sensible no está disponible para tu edad.", "account.session_timeout": "Tu sesión expiró. Actualiza la página e inicia sesión de nuevo.", "account.session_token_mismatch": "El token de sesión no coincide.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Cuerpo de formulario inválido.", "admin_and_system.invalid_format": "El formato del valor proporcionado es inválido.", "admin_and_system.invalid_integer_format": "Formato de entero inválido.", - "admin_and_system.invalid_suspicious_flags_format": "Formato de indicadores sospechosos inválido.", "admin_and_system.invalid_system_flag": "Indicador de sistema inválido.", "admin_and_system.invalid_timeout_value": "Fecha de fin del aislamiento temporal inválida.", "admin_and_system.invalid_timestamp": "Marca de tiempo inválida.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Error de validación de la respuesta: {errors}.", "admin_and_system.test_harness_disabled": "El entorno de prueba está deshabilitado.", "admin_and_system.test_harness_forbidden": "El entorno de prueba está prohibido.", - "admin_and_system.unknown_suspicious_flag": "Indicador sospechoso desconocido.", "admin_and_system.update_failed": "No se pudo actualizar el recurso. Inténtalo de nuevo.", "admin_and_system.user_must_be_bot_for_system_user": "El usuario debe ser un bot para ser marcado como usuario del sistema.", "age_verification.already_verified": "Ya completaste la verificación de edad.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Este usuario no se encuentra en el canal.", "permissions.user_not_in_voice": "Este usuario no está en el canal de voz.", "permissions.user_owns_guilds": "Este usuario es propietario de comunidades.", - "phone.add_not_eligible": "No cumples los requisitos para agregar un número de teléfono a tu cuenta.", - "phone.country_not_supported": "No enviamos SMS de verificación a este país. Usa un número de celular de otro país o escribe a support@fluxer.app y una persona revisará tu cuenta.", - "phone.inbound_verification_required": "Este número se verifica con un SMS que nos envías tú, no con uno que te enviamos nosotros. Inicia de nuevo la verificación de teléfono para obtener el código y el número al que debes enviarlo.", - "phone.invalid_number": "Número de teléfono no válido.", - "phone.lookup_unavailable": "Nuestra verificación de números de teléfono no está funcionando en este momento, así que nos detuvimos antes de enviarte el código. La falla es nuestra, no de tu número. Espera unos minutos e inténtalo de nuevo con el mismo número.", - "phone.number_already_used": "El número de teléfono ya está en uso.", - "phone.number_format_required": "El número de teléfono debe estar en formato E.164 (por ejemplo, +1234567890).", - "phone.number_not_in_service": "Tu operador dice que este número no está en servicio. Revisa el número e inténtalo de nuevo, o escribe a support@fluxer.app si es correcto.", - "phone.number_not_mobile": "Este no es un número de celular, así que no puede recibir nuestro SMS. Usa un número de celular o escribe a support@fluxer.app si crees que es un error.", - "phone.verification_code_invalid": "Código de verificación de teléfono no válido.", - "phone.verification_needs_review": "No pudimos verificar este número automáticamente. Escribe a support@fluxer.app y una persona revisará tu cuenta.", - "phone.verification_required": "Se requiere verificación de teléfono.", "premium_and_plans.animated_avatars_require_premium": "Los avatares animados requieren un plan premium.", "premium_and_plans.banners_require_premium": "Los banners requieren un plan premium.", "premium_and_plans.bio_requires_premium_for_length": "Una biografía de más de {maxLength} caracteres requiere un plan premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "El reenvío de autorización IP está en espera.", "rate_limits.ip_authorization_resend_limit_exceeded": "Se excedió el límite de reenvío de autorización IP.", "rate_limits.message_crosspost_rate_limited": "Este canal alcanzó su límite de publicaciones. Puede publicar 10 mensajes seguidos y luego uno más cada 6 minutos.", - "rate_limits.phone_rate_limit_exceeded": "Se excedió el límite de solicitudes del teléfono.", "rate_limits.pronouns_changed_too_often": "Has cambiado tus pronombres con demasiada frecuencia últimamente. Inténtalo de nuevo en {minutes} {minutes, plural, one {minuto} other {minutos}}.", "rate_limits.published_message_edit_rate_limited": "Este mensaje publicado alcanzó su límite de ediciones. Puede editarse 3 veces seguidas y luego una vez más cada 20 minutos.", "rate_limits.rate_limited": "Has alcanzado el límite de solicitudes.", diff --git a/packages/errors/src/i18n/weblate/locales/es-ES.json b/packages/errors/src/i18n/weblate/locales/es-ES.json index d7e549c15..2dba07d34 100644 --- a/packages/errors/src/i18n/weblate/locales/es-ES.json +++ b/packages/errors/src/i18n/weblate/locales/es-ES.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Se requiere verificar tu correo electrónico para esta acción.", "account.guild_verification_required": "Se requiere verificación de la comunidad.", "account.ip_authorization_required": "Se requiere autorización de IP.", - "account.locked_suspicious_activity": "Tu cuenta está bloqueada debido a actividad sospechosa.", - "account.phone_gate_escape_unavailable": "Esta cuenta no puede posponer la verificación del teléfono.", - "account.phone_required_for_guild": "Necesitas añadir un número de teléfono para enviar mensajes en esta comunidad.", + "account.limited": "Tu cuenta está limitada. Revisa tu correo electrónico para saber cómo quitar la limitación.", "account.sensitive_content_filter_age_restricted": "Este filtro de contenido sensible no está disponible para tu edad.", "account.session_timeout": "La sesión ha caducado. Actualiza la página e inicia sesión de nuevo.", "account.session_token_mismatch": "El token de sesión no coincide.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Cuerpo de formulario no válido.", "admin_and_system.invalid_format": "El valor proporcionado tiene un formato no válido.", "admin_and_system.invalid_integer_format": "Formato de entero no válido.", - "admin_and_system.invalid_suspicious_flags_format": "Formato de indicadores sospechosos no válido.", "admin_and_system.invalid_system_flag": "Indicador de sistema no válido.", "admin_and_system.invalid_timeout_value": "Fecha de fin del aislamiento temporal no válida.", "admin_and_system.invalid_timestamp": "Marca de tiempo no válida.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "La validación de la respuesta falló: {errors}.", "admin_and_system.test_harness_disabled": "El entorno de pruebas está deshabilitado.", "admin_and_system.test_harness_forbidden": "El entorno de pruebas está prohibido.", - "admin_and_system.unknown_suspicious_flag": "Indicador sospechoso desconocido.", "admin_and_system.update_failed": "No se pudo actualizar el recurso. Inténtalo de nuevo.", "admin_and_system.user_must_be_bot_for_system_user": "El usuario debe ser un bot para ser marcado como usuario del sistema.", "age_verification.already_verified": "Ya has completado la verificación de edad.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Este usuario no está en el canal.", "permissions.user_not_in_voice": "Este usuario no está en el canal de voz.", "permissions.user_owns_guilds": "Este usuario es propietario de comunidades.", - "phone.add_not_eligible": "No cumples los requisitos para añadir un número de teléfono a tu cuenta.", - "phone.country_not_supported": "No enviamos SMS de verificación a este país. Usa un número de móvil de otro país o escribe a support@fluxer.app y una persona revisará tu cuenta.", - "phone.inbound_verification_required": "Este número se verifica con un SMS que nos envías tú, no con uno que te enviamos nosotros. Vuelve a iniciar la verificación del teléfono para obtener el código y el número al que enviarlo.", - "phone.invalid_number": "Número de teléfono no válido.", - "phone.lookup_unavailable": "Nuestra comprobación de números de teléfono no funciona ahora mismo, así que hemos parado antes de enviarte el código. El fallo es nuestro, no de tu número. Espera unos minutos y vuelve a intentarlo con el mismo número.", - "phone.number_already_used": "El número de teléfono ya está en uso.", - "phone.number_format_required": "El número de teléfono debe tener el formato E.164 (por ejemplo, +1234567890).", - "phone.number_not_in_service": "Tu operador dice que este número no está en servicio. Comprueba el número y vuelve a intentarlo, o escribe a support@fluxer.app si es correcto.", - "phone.number_not_mobile": "Este no es un número de móvil, así que no puede recibir nuestro SMS. Usa un número de móvil o escribe a support@fluxer.app si crees que es un error.", - "phone.verification_code_invalid": "Código de verificación del teléfono no válido.", - "phone.verification_needs_review": "No hemos podido verificar este número automáticamente. Escribe a support@fluxer.app y una persona revisará tu cuenta.", - "phone.verification_required": "Se requiere verificación del teléfono.", "premium_and_plans.animated_avatars_require_premium": "Los avatares animados requieren Premium.", "premium_and_plans.banners_require_premium": "Los banners requieren Premium.", "premium_and_plans.bio_requires_premium_for_length": "Una biografía de más de {maxLength} caracteres requiere Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "El reenvío de autorización IP está en período de espera.", "rate_limits.ip_authorization_resend_limit_exceeded": "Límite de reenvío de autorización de IP superado.", "rate_limits.message_crosspost_rate_limited": "Este canal ha alcanzado su límite de publicaciones. Puede publicar 10 mensajes seguidos y después uno más cada 6 minutos.", - "rate_limits.phone_rate_limit_exceeded": "Límite de solicitudes del teléfono superado.", "rate_limits.pronouns_changed_too_often": "Has cambiado tus pronombres demasiadas veces últimamente. Vuelve a intentarlo en {minutes} {minutes, plural, one {minuto} other {minutos}}.", "rate_limits.published_message_edit_rate_limited": "Este mensaje publicado ha alcanzado su límite de ediciones. Puede editarse 3 veces seguidas y después una vez más cada 20 minutos.", "rate_limits.rate_limited": "Has alcanzado el límite de solicitudes.", diff --git a/packages/errors/src/i18n/weblate/locales/fi.json b/packages/errors/src/i18n/weblate/locales/fi.json index 0459fbba5..079157841 100644 --- a/packages/errors/src/i18n/weblate/locales/fi.json +++ b/packages/errors/src/i18n/weblate/locales/fi.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Tämä toiminto vaatii sähköpostiosoitteesi vahvistamisen.", "account.guild_verification_required": "Yhteisön vahvistus vaaditaan.", "account.ip_authorization_required": "IP-osoitteen valtuutus vaaditaan.", - "account.locked_suspicious_activity": "Tilisi on lukittu epäilyttävän toiminnan vuoksi.", - "account.phone_gate_escape_unavailable": "Tällä tilillä ei voi lykätä puhelinnumeron vahvistusta.", - "account.phone_required_for_guild": "Sinun on lisättävä puhelinnumero lähettääksesi viestejä tässä yhteisössä.", + "account.limited": "Tilisi on rajoitettu. Katso sähköpostistasi, miten voit poistaa rajoituksen.", "account.sensitive_content_filter_age_restricted": "Tätä arkaluontoista sisältöä koskevaa suodatinta ei ole saatavilla ikäsi vuoksi.", "account.session_timeout": "Istunto aikakatkesi. Päivitä sivu ja kirjaudu sisään uudelleen.", "account.session_token_mismatch": "Istuntotunnus ei täsmää.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Virheellinen lomakkeen runko.", "admin_and_system.invalid_format": "Annettu arvo on virheellisessä muodossa.", "admin_and_system.invalid_integer_format": "Virheellinen kokonaislukumuoto.", - "admin_and_system.invalid_suspicious_flags_format": "Virheellinen epäilyttävien lippujen muoto.", "admin_and_system.invalid_system_flag": "Virheellinen järjestelmän lippu.", "admin_and_system.invalid_timeout_value": "Virheellinen aikakatkaisuarvo.", "admin_and_system.invalid_timestamp": "Virheellinen aikaleima.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Vastauksen validointi epäonnistui: {errors}.", "admin_and_system.test_harness_disabled": "Testausympäristö on poistettu käytöstä.", "admin_and_system.test_harness_forbidden": "Testausympäristö on kielletty.", - "admin_and_system.unknown_suspicious_flag": "Tuntematon epäilyttävä lippu.", "admin_and_system.update_failed": "Resurssia ei voitu päivittää. Yritä uudelleen.", "admin_and_system.user_must_be_bot_for_system_user": "Käyttäjän on oltava botti, jotta sen voi merkitä järjestelmäkäyttäjäksi.", "age_verification.already_verified": "Olet jo suorittanut iän vahvistuksen.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Tämä käyttäjä ei ole kanavassa.", "permissions.user_not_in_voice": "Tämä käyttäjä ei ole äänikanavalla.", "permissions.user_owns_guilds": "Tämä käyttäjä omistaa yhteisöjä.", - "phone.add_not_eligible": "Et voi lisätä puhelinnumeroa tilillesi.", - "phone.country_not_supported": "Emme lähetä vahvistustekstiviestejä tähän maahan. Käytä toisen maan matkapuhelinnumeroa tai lähetä sähköpostia osoitteeseen support@fluxer.app, niin tiimimme jäsen tarkistaa tilisi.", - "phone.inbound_verification_required": "Tämä numero vahvistetaan niin, että sinä lähetät meille tekstiviestin, emme me sinulle. Aloita puhelinvahvistus uudelleen, niin saat koodin ja numeron, johon lähetät viestin.", - "phone.invalid_number": "Virheellinen puhelinnumero.", - "phone.lookup_unavailable": "Puhelinnumeroiden tarkistuksemme ei toimi juuri nyt, joten keskeytimme ennen koodisi lähettämistä. Tämä on meidän vikamme, ei numerosi. Odota muutama minuutti ja yritä samaa numeroa uudelleen.", - "phone.number_already_used": "Puhelinnumero on jo käytössä.", - "phone.number_format_required": "Puhelinnumeron on oltava E.164-muodossa (esimerkiksi +1234567890).", - "phone.number_not_in_service": "Operaattorisi mukaan tämä numero ei ole käytössä. Tarkista numero ja yritä uudelleen tai lähetä sähköpostia osoitteeseen support@fluxer.app, jos numero on oikein.", - "phone.number_not_mobile": "Tämä ei ole matkapuhelinnumero, joten se ei voi vastaanottaa tekstiviestiämme. Käytä matkapuhelinnumeroa tai lähetä sähköpostia osoitteeseen support@fluxer.app, jos uskot tämän olevan virhe.", - "phone.verification_code_invalid": "Virheellinen puhelinvahvistuskoodi.", - "phone.verification_needs_review": "Emme voineet vahvistaa tätä numeroa automaattisesti. Lähetä sähköpostia osoitteeseen support@fluxer.app, niin tiimimme jäsen tarkistaa tilisi.", - "phone.verification_required": "Puhelinvahvistus vaaditaan.", "premium_and_plans.animated_avatars_require_premium": "Animoidut avatarit vaativat Premiumin.", "premium_and_plans.banners_require_premium": "Bannerit vaativat Premiumin.", "premium_and_plans.bio_requires_premium_for_length": "Yli {maxLength} merkin pituinen esittelyteksti vaatii Premiumin.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Odota ennen kuin pyydät IP-osoitteen valtuutusviestin uudelleenlähetystä.", "rate_limits.ip_authorization_resend_limit_exceeded": "IP-osoitteen valtuutusviestin uudelleenlähetyksen enimmäismäärä on ylitetty.", "rate_limits.message_crosspost_rate_limited": "Tämä kanava on saavuttanut julkaisurajansa. Se voi julkaista 10 viestiä peräkkäin ja sen jälkeen yhden lisää 6 minuutin välein.", - "rate_limits.phone_rate_limit_exceeded": "Liian monta puhelinvahvistuspyyntöä.", "rate_limits.pronouns_changed_too_often": "Olet vaihtanut pronominejasi liian usein viime aikoina. Yritä uudelleen {minutes, plural, one {# minuutin} other {# minuutin}} kuluttua.", "rate_limits.published_message_edit_rate_limited": "Tämä julkaistu viesti on saavuttanut muokkausrajansa. Sitä voi muokata 3 kertaa peräkkäin ja sen jälkeen kerran lisää 20 minuutin välein.", "rate_limits.rate_limited": "Olet tehnyt liian monta pyyntöä liian nopeasti.", diff --git a/packages/errors/src/i18n/weblate/locales/fr.json b/packages/errors/src/i18n/weblate/locales/fr.json index e750500f2..9725555e3 100644 --- a/packages/errors/src/i18n/weblate/locales/fr.json +++ b/packages/errors/src/i18n/weblate/locales/fr.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Vous devez vérifier votre adresse e-mail pour effectuer cette action.", "account.guild_verification_required": "La vérification de la communauté est requise.", "account.ip_authorization_required": "L'autorisation IP est requise.", - "account.locked_suspicious_activity": "Votre compte est verrouillé en raison d’une activité suspecte.", - "account.phone_gate_escape_unavailable": "Ce compte ne peut pas reporter la vérification du numéro de téléphone.", - "account.phone_required_for_guild": "Vous devez ajouter un numéro de téléphone pour envoyer des messages dans cette communauté.", + "account.limited": "Votre compte est limité. Consultez vos e-mails pour savoir comment lever cette limitation.", "account.sensitive_content_filter_age_restricted": "Ce filtre de contenu sensible n’est pas disponible pour votre tranche d’âge.", "account.session_timeout": "La session a expiré. Actualisez la page et reconnectez-vous.", "account.session_token_mismatch": "Incompatibilité du jeton de session.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Corps du formulaire invalide.", "admin_and_system.invalid_format": "La valeur fournie est dans un format invalide.", "admin_and_system.invalid_integer_format": "Format d'entier invalide.", - "admin_and_system.invalid_suspicious_flags_format": "Format des indicateurs d’activité suspecte invalide.", "admin_and_system.invalid_system_flag": "Indicateur système invalide.", "admin_and_system.invalid_timeout_value": "Date de fin de restriction temporaire non valide.", "admin_and_system.invalid_timestamp": "Horodatage invalide.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Échec de la validation de la réponse : {errors}.", "admin_and_system.test_harness_disabled": "Le banc de test est désactivé.", "admin_and_system.test_harness_forbidden": "Le banc de test est interdit.", - "admin_and_system.unknown_suspicious_flag": "Indicateur d’activité suspecte inconnu.", "admin_and_system.update_failed": "Impossible de mettre à jour la ressource. Réessayez.", "admin_and_system.user_must_be_bot_for_system_user": "L'utilisateur doit être un bot pour être marqué comme utilisateur système.", "age_verification.already_verified": "Vous avez déjà effectué la vérification de l’âge.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Cet utilisateur n'est pas présent dans le salon.", "permissions.user_not_in_voice": "Cet utilisateur n'est pas dans un salon vocal.", "permissions.user_owns_guilds": "Cet utilisateur est propriétaire de communautés.", - "phone.add_not_eligible": "Votre compte ne remplit pas les conditions requises pour ajouter un numéro de téléphone.", - "phone.country_not_supported": "Nous n’envoyons pas de SMS de vérification dans ce pays. Utilisez un numéro de mobile d’un autre pays ou écrivez à support@fluxer.app pour qu’une personne examine votre compte.", - "phone.inbound_verification_required": "Pour vérifier ce numéro, vous devez nous envoyer un SMS au lieu d’en recevoir un. Relancez la vérification du téléphone pour obtenir le code et le numéro auquel l’envoyer.", - "phone.invalid_number": "Numéro de téléphone invalide.", - "phone.lookup_unavailable": "Notre service de vérification des numéros de téléphone est indisponible. Nous avons donc interrompu l’opération avant l’envoi de votre code. Le problème vient de notre service, pas de votre numéro. Attendez quelques minutes et réessayez avec le même numéro.", - "phone.number_already_used": "Le numéro de téléphone est déjà utilisé.", - "phone.number_format_required": "Le numéro de téléphone doit être au format E.164 (par exemple, +1234567890).", - "phone.number_not_in_service": "Votre opérateur indique que ce numéro n’est pas en service. Vérifiez-le et réessayez, ou écrivez à support@fluxer.app s’il est correct.", - "phone.number_not_mobile": "Ce numéro n’est pas un numéro de mobile et ne peut donc pas recevoir notre SMS. Utilisez un numéro de mobile ou écrivez à support@fluxer.app si vous pensez qu’il s’agit d’une erreur.", - "phone.verification_code_invalid": "Code de vérification téléphonique invalide.", - "phone.verification_needs_review": "Impossible de vérifier ce numéro automatiquement. Écrivez à support@fluxer.app pour qu’une personne examine votre compte.", - "phone.verification_required": "La vérification téléphonique est requise.", "premium_and_plans.animated_avatars_require_premium": "Les avatars animés nécessitent une formule Premium.", "premium_and_plans.banners_require_premium": "Les bannières nécessitent une formule Premium.", "premium_and_plans.bio_requires_premium_for_length": "Une bio de plus de {maxLength} caractères nécessite une formule Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Veuillez patienter avant de renvoyer l’autorisation IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "La limite de renvois d’autorisation IP a été dépassée.", "rate_limits.message_crosspost_rate_limited": "Ce salon a atteint sa limite de publication. Il peut publier 10 messages d'affilée, puis un de plus toutes les 6 minutes.", - "rate_limits.phone_rate_limit_exceeded": "La limite de tentatives de vérification téléphonique a été dépassée.", "rate_limits.pronouns_changed_too_often": "Vous avez changé vos pronoms trop souvent récemment. Réessayez dans {minutes, plural, =1 {# minute} other {# minutes}}.", "rate_limits.published_message_edit_rate_limited": "Ce message publié a atteint sa limite de modification. Il peut être modifié 3 fois d'affilée, puis une fois de plus toutes les 20 minutes.", "rate_limits.rate_limited": "Vous avez atteint la limite de requêtes.", diff --git a/packages/errors/src/i18n/weblate/locales/he.json b/packages/errors/src/i18n/weblate/locales/he.json index cae873798..2fae9d8d7 100644 --- a/packages/errors/src/i18n/weblate/locales/he.json +++ b/packages/errors/src/i18n/weblate/locales/he.json @@ -3,9 +3,7 @@ "account.email_verification_required": "נדרש אימות כתובת האימייל עבור פעולה זו.", "account.guild_verification_required": "נדרש אימות קהילה.", "account.ip_authorization_required": "נדרשת הרשאת IP.", - "account.locked_suspicious_activity": "החשבון שלך ננעל בגלל פעילות חשודה.", - "account.phone_gate_escape_unavailable": "לא ניתן לדחות את אימות הטלפון למועד מאוחר יותר בחשבון זה.", - "account.phone_required_for_guild": "נדרש להוסיף מספר טלפון כדי לשלוח הודעות בקהילה זו.", + "account.limited": "החשבון שלך מוגבל. ניתן לבדוק בתיבת הדואר האלקטרוני איך להסיר את ההגבלה.", "account.sensitive_content_filter_age_restricted": "מסנן התוכן הרגיש הזה אינו זמין לקבוצת הגיל שלך.", "account.session_timeout": "הסשן פג. יש לרענן את הדף ולהתחבר שוב.", "account.session_token_mismatch": "אי-התאמה באסימון הסשן.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "גוף טופס שגוי.", "admin_and_system.invalid_format": "הערך שסופק הוא בפורמט שגוי.", "admin_and_system.invalid_integer_format": "פורמט מספר שלם שגוי.", - "admin_and_system.invalid_suspicious_flags_format": "פורמט דגלים חשודים שגוי.", "admin_and_system.invalid_system_flag": "דגל מערכת שגוי.", "admin_and_system.invalid_timeout_value": "ערך פסק זמן שגוי.", "admin_and_system.invalid_timestamp": "חותמת זמן שגויה.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "אימות התגובה נכשל: {errors}.", "admin_and_system.test_harness_disabled": "כלי הבדיקה מושבת.", "admin_and_system.test_harness_forbidden": "השימוש בכלי הבדיקה אסור.", - "admin_and_system.unknown_suspicious_flag": "דגל חשוד לא מוכר.", "admin_and_system.update_failed": "לא הצלחנו לעדכן את המשאב. ניתן לנסות שוב.", "admin_and_system.user_must_be_bot_for_system_user": "המשתמש חייב להיות בוט כדי להיות מוגדר כמשתמש מערכת.", "age_verification.already_verified": "כבר השלמת את אימות הגיל.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "משתמש זה לא נמצא בערוץ.", "permissions.user_not_in_voice": "משתמש זה לא נמצא בערוץ קולי.", "permissions.user_owns_guilds": "משתמש זה הוא הבעלים של קהילות.", - "phone.add_not_eligible": "אין באפשרותך להוסיף מספר טלפון לחשבון שלך.", - "phone.country_not_supported": "אנחנו לא שולחים הודעות אימות למדינה הזו. אפשר להשתמש במספר נייד ממדינה אחרת, או לפנות אל support@fluxer.app ונציג יבדוק את החשבון שלך.", - "phone.inbound_verification_required": "המספר הזה מאומת באמצעות הודעה שנשלחת ממנו אלינו, ולא באמצעות הודעה שאנחנו שולחים אליו. יש להתחיל את אימות הטלפון מחדש כדי לקבל את הקוד ואת המספר שאליו יש לשלוח אותו.", - "phone.invalid_number": "מספר טלפון שגוי.", - "phone.lookup_unavailable": "בדיקת מספרי הטלפון שלנו אינה זמינה כרגע, ולכן עצרנו לפני שליחת הקוד. התקלה אצלנו, לא במספר שלך. כדאי להמתין כמה דקות ולנסות שוב עם אותו מספר.", - "phone.number_already_used": "מספר הטלפון כבר בשימוש.", - "phone.number_format_required": "מספר הטלפון חייב להיות בפורמט E.164 (לדוגמה +1234567890).", - "phone.number_not_in_service": "לפי חברת הסלולר שלך, המספר הזה אינו פעיל. יש לבדוק את המספר ולנסות שוב, או לפנות אל support@fluxer.app אם המספר נכון.", - "phone.number_not_mobile": "זה אינו מספר נייד, ולכן הוא לא יכול לקבל את ההודעה שלנו. יש להשתמש במספר נייד, או לפנות אל support@fluxer.app אם לדעתך זו טעות.", - "phone.verification_code_invalid": "קוד אימות טלפון שגוי.", - "phone.verification_needs_review": "לא הצלחנו לאמת את המספר הזה באופן אוטומטי. אפשר לפנות אל support@fluxer.app ונציג יבדוק את החשבון שלך.", - "phone.verification_required": "נדרש אימות טלפון.", "premium_and_plans.animated_avatars_require_premium": "אווטרים מונפשים דורשים מסלול פרימיום.", "premium_and_plans.banners_require_premium": "באנרים דורשים מסלול פרימיום.", "premium_and_plans.bio_requires_premium_for_length": "ביוגרפיה באורך של יותר מ-{maxLength} תווים דורשת מסלול פרימיום.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "שליחה חוזרת של הרשאת IP נמצאת בהשהיה.", "rate_limits.ip_authorization_resend_limit_exceeded": "חריגה ממגבלת שליחה חוזרת של הרשאת IP.", "rate_limits.message_crosspost_rate_limited": "הערוץ הזה הגיע למגבלת הפרסום שלו. הוא יכול לפרסם 10 הודעות ברצף, ואז הודעה אחת נוספת כל 6 דקות.", - "rate_limits.phone_rate_limit_exceeded": "חריגה ממגבלת קצב הטלפון.", "rate_limits.pronouns_changed_too_often": "שינית את כינויי הגוף יותר מדי פעמים לאחרונה. ניתן לנסות שוב בעוד {minutes} {minutes, plural, one {דקה} other {דקות}}.", "rate_limits.published_message_edit_rate_limited": "ההודעה המפורסמת הזו הגיעה למגבלת העריכה שלה. אפשר לערוך אותה 3 פעמים ברצף, ואז פעם אחת נוספת כל 20 דקות.", "rate_limits.rate_limited": "הגעת למגבלת קצב.", diff --git a/packages/errors/src/i18n/weblate/locales/hi.json b/packages/errors/src/i18n/weblate/locales/hi.json index a6976eba2..a38336b1c 100644 --- a/packages/errors/src/i18n/weblate/locales/hi.json +++ b/packages/errors/src/i18n/weblate/locales/hi.json @@ -3,9 +3,7 @@ "account.email_verification_required": "इस कार्रवाई के लिए ईमेल वेरिफ़िकेशन ज़रूरी है।", "account.guild_verification_required": "कम्युनिटी वेरिफ़िकेशन ज़रूरी है।", "account.ip_authorization_required": "IP ऑथराइज़ेशन ज़रूरी है।", - "account.locked_suspicious_activity": "संदिग्ध एक्टिविटी के कारण आपका अकाउंट लॉक कर दिया गया है।", - "account.phone_gate_escape_unavailable": "इस अकाउंट के लिए फ़ोन वेरिफ़िकेशन को टाला नहीं जा सकता।", - "account.phone_required_for_guild": "इस कम्युनिटी में मैसेज भेजने के लिए आपको एक फ़ोन नंबर जोड़ना होगा।", + "account.limited": "आपका अकाउंट सीमित है। इसे हटाने का तरीका जानने के लिए अपना ईमेल देखें।", "account.sensitive_content_filter_age_restricted": "यह संवेदनशील सामग्री फ़िल्टर आपके उम्र वर्ग के लिए उपलब्ध नहीं है।", "account.session_timeout": "सेशन टाइमआउट हो गया है। पेज रिफ़्रेश करें और दोबारा लॉगिन करें।", "account.session_token_mismatch": "सेशन टोकन मेल नहीं खा रहा।", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "अमान्य फ़ॉर्म बॉडी।", "admin_and_system.invalid_format": "दी गई वैल्यू का फ़ॉर्मेट अमान्य है।", "admin_and_system.invalid_integer_format": "अमान्य इंटीजर फ़ॉर्मेट।", - "admin_and_system.invalid_suspicious_flags_format": "अमान्य संदिग्ध फ़्लैग फ़ॉर्मेट।", "admin_and_system.invalid_system_flag": "अमान्य सिस्टम फ़्लैग।", "admin_and_system.invalid_timeout_value": "अमान्य टाइमआउट वैल्यू।", "admin_and_system.invalid_timestamp": "अमान्य टाइमस्टैम्प।", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "रिस्पॉन्स वैलिडेशन फेल हुआ: {errors}।", "admin_and_system.test_harness_disabled": "Test harness डिसेबल है।", "admin_and_system.test_harness_forbidden": "Test harness की अनुमति नहीं है।", - "admin_and_system.unknown_suspicious_flag": "अज्ञात संदिग्ध फ़्लैग।", "admin_and_system.update_failed": "रिसोर्स अपडेट नहीं किया जा सका। कृपया फिर से कोशिश करें।", "admin_and_system.user_must_be_bot_for_system_user": "सिस्टम यूज़र के रूप में मार्क किए जाने के लिए यूज़र का बॉट होना ज़रूरी है।", "age_verification.already_verified": "आपने पहले ही एज वेरिफ़िकेशन पूरा कर लिया है।", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "यह यूज़र चैनल में नहीं है।", "permissions.user_not_in_voice": "यह यूज़र वॉइस में नहीं है।", "permissions.user_owns_guilds": "यह यूज़र कम्युनिटी का मालिक है।", - "phone.add_not_eligible": "आप अपने अकाउंट में फ़ोन नंबर जोड़ने के योग्य नहीं हैं।", - "phone.country_not_supported": "हम इस देश में वेरिफ़िकेशन मैसेज नहीं भेजते। किसी दूसरे देश का मोबाइल नंबर इस्तेमाल करें, या support@fluxer.app पर ईमेल करें और कोई व्यक्ति आपके अकाउंट की समीक्षा करेगा।", - "phone.inbound_verification_required": "इस नंबर का वेरिफ़िकेशन इस तरह होता है कि आप हमें मैसेज भेजते हैं, हम आपको मैसेज नहीं भेजते। कोड और जिस नंबर पर मैसेज भेजना है, वह पाने के लिए फ़ोन वेरिफ़िकेशन दोबारा शुरू करें।", - "phone.invalid_number": "अमान्य फ़ोन नंबर।", - "phone.lookup_unavailable": "फ़ोन नंबर जाँचने वाली हमारी सेवा अभी काम नहीं कर रही है, इसलिए हमने आपका कोड भेजने से पहले ही रोक दिया। यह गड़बड़ी हमारी तरफ़ से है, आपके नंबर में कोई दिक्कत नहीं है। कुछ मिनट रुकें और वही नंबर दोबारा आज़माएँ।", - "phone.number_already_used": "फ़ोन नंबर पहले ही इस्तेमाल में है।", - "phone.number_format_required": "फ़ोन नंबर E.164 फ़ॉर्मेट में होना चाहिए (उदाहरण के लिए, +1234567890)।", - "phone.number_not_in_service": "आपकी टेलीकॉम कंपनी के अनुसार यह नंबर सेवा में नहीं है। नंबर जाँचें और दोबारा कोशिश करें, या अगर नंबर सही है तो support@fluxer.app पर ईमेल करें।", - "phone.number_not_mobile": "यह मोबाइल नंबर नहीं है, इसलिए इस पर हमारा मैसेज नहीं आ सकता। मोबाइल नंबर इस्तेमाल करें, या अगर आपको लगता है कि यह गलत है तो support@fluxer.app पर ईमेल करें।", - "phone.verification_code_invalid": "अमान्य फ़ोन वेरिफ़िकेशन कोड।", - "phone.verification_needs_review": "हम इस नंबर को अपने आप वेरिफ़ाई नहीं कर पाए। support@fluxer.app पर ईमेल करें और कोई व्यक्ति आपके अकाउंट की समीक्षा करेगा।", - "phone.verification_required": "फ़ोन वेरिफ़िकेशन ज़रूरी है।", "premium_and_plans.animated_avatars_require_premium": "एनिमेटेड अवतार के लिए प्रीमियम ज़रूरी है।", "premium_and_plans.banners_require_premium": "बैनर के लिए प्रीमियम ज़रूरी है।", "premium_and_plans.bio_requires_premium_for_length": "{maxLength} कैरेक्टर से लंबे बायो के लिए प्रीमियम ज़रूरी है।", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "IP ऑथराइज़ेशन दोबारा भेजने के लिए कूलडाउन चल रहा है।", "rate_limits.ip_authorization_resend_limit_exceeded": "IP ऑथराइज़ेशन दोबारा भेजने की सीमा पार हो गई।", "rate_limits.message_crosspost_rate_limited": "यह चैनल अपनी प्रकाशन सीमा तक पहुँच गया है। यह लगातार 10 मैसेज प्रकाशित कर सकता है, फिर हर 6 मिनट में एक और।", - "rate_limits.phone_rate_limit_exceeded": "फ़ोन रेट लिमिट पार हो गई।", "rate_limits.pronouns_changed_too_often": "आपने हाल ही में अपने प्रोनाउंस बहुत बार बदले हैं। कृपया {minutes} {minutes, plural, one {मिनट} other {मिनट}} में फिर से प्रयास करें।", "rate_limits.published_message_edit_rate_limited": "यह प्रकाशित मैसेज अपनी संपादन सीमा तक पहुँच गया है। इसे लगातार 3 बार संपादित किया जा सकता है, फिर हर 20 मिनट में एक बार और।", "rate_limits.rate_limited": "आप पर रेट लिमिट लागू है।", diff --git a/packages/errors/src/i18n/weblate/locales/hr.json b/packages/errors/src/i18n/weblate/locales/hr.json index fe3b048ff..ad514dced 100644 --- a/packages/errors/src/i18n/weblate/locales/hr.json +++ b/packages/errors/src/i18n/weblate/locales/hr.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Za ovu je radnju potrebna potvrda e-maila.", "account.guild_verification_required": "Potrebna je provjera zajednice.", "account.ip_authorization_required": "Potrebna je IP autorizacija.", - "account.locked_suspicious_activity": "Tvoj je račun zaključan zbog sumnjive aktivnosti.", - "account.phone_gate_escape_unavailable": "Odgoda provjere telefona nije dostupna za ovaj račun.", - "account.phone_required_for_guild": "Moraš dodati telefonski broj za slanje poruka u ovoj zajednici.", + "account.limited": "Tvoj je račun ograničen. Provjeri e-poštu kako bi saznao kako ukloniti ograničenje.", "account.sensitive_content_filter_age_restricted": "Ovaj filtar osjetljivog sadržaja nije dostupan za tvoju dobnu skupinu.", "account.session_timeout": "Sesija je istekla. Osvježi stranicu i prijavi se ponovno.", "account.session_token_mismatch": "Token sesije se ne podudara.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Nevažeći sadržaj obrasca.", "admin_and_system.invalid_format": "Navedena vrijednost ima nevažeći format.", "admin_and_system.invalid_integer_format": "Nevažeći format cijelog broja.", - "admin_and_system.invalid_suspicious_flags_format": "Nevažeći format sumnjivih zastavica.", "admin_and_system.invalid_system_flag": "Nevažeća sistemska zastavica.", "admin_and_system.invalid_timeout_value": "Nevažeća vrijednost za istek vremena.", "admin_and_system.invalid_timestamp": "Nevažeća vremenska oznaka.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Validacija odgovora nije uspjela: {errors}.", "admin_and_system.test_harness_disabled": "Testni sustav je onemogućen.", "admin_and_system.test_harness_forbidden": "Testni sustav je zabranjen.", - "admin_and_system.unknown_suspicious_flag": "Nepoznata sumnjiva zastavica.", "admin_and_system.update_failed": "Nismo mogli ažurirati resurs. Pokušaj ponovno.", "admin_and_system.user_must_be_bot_for_system_user": "Korisnik mora biti bot da bi bio označen kao sistemski korisnik.", "age_verification.already_verified": "Provjera dobi je već završena.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Ovaj korisnik nije u kanalu.", "permissions.user_not_in_voice": "Ovaj korisnik nije u glasovnom kanalu.", "permissions.user_owns_guilds": "Ovaj korisnik je vlasnik zajednica.", - "phone.add_not_eligible": "Ne ispunjavaš uvjete za dodavanje telefonskog broja na svoj račun.", - "phone.country_not_supported": "U ovu zemlju ne šaljemo SMS-ove za provjeru. Upotrijebi mobilni broj iz druge zemlje ili piši na support@fluxer.app i netko iz našeg tima pregledat će tvoj račun.", - "phone.inbound_verification_required": "Ovaj se broj provjerava tako da ti pošalješ SMS nama, a ne mi tebi. Ponovno pokreni provjeru telefona da dobiješ kod i broj na koji ga trebaš poslati.", - "phone.invalid_number": "Nevažeći telefonski broj.", - "phone.lookup_unavailable": "Naša provjera telefonskih brojeva trenutačno ne radi, pa smo stali prije nego što smo poslali tvoj kod. Krivnja je na nama, a ne na tvom broju. Pričekaj nekoliko minuta i pokušaj ponovno s istim brojem.", - "phone.number_already_used": "Telefonski broj je već u upotrebi.", - "phone.number_format_required": "Telefonski broj mora biti u E.164 formatu (npr. +1234567890).", - "phone.number_not_in_service": "Tvoj operater javlja da ovaj broj nije u funkciji. Provjeri broj i pokušaj ponovno ili piši na support@fluxer.app ako je broj točan.", - "phone.number_not_mobile": "Ovo nije mobilni broj pa ne može primiti našu SMS poruku. Upotrijebi mobilni broj ili piši na support@fluxer.app ako misliš da to nije točno.", - "phone.verification_code_invalid": "Nevažeći kod za provjeru telefona.", - "phone.verification_needs_review": "Ovaj broj nismo mogli automatski provjeriti. Piši na support@fluxer.app i netko iz našeg tima pregledat će tvoj račun.", - "phone.verification_required": "Potrebna je provjera telefona.", "premium_and_plans.animated_avatars_require_premium": "Animirani avatari zahtijevaju Premium pretplatu.", "premium_and_plans.banners_require_premium": "Banneri zahtijevaju Premium pretplatu.", "premium_and_plans.bio_requires_premium_for_length": "Opis profila duži od {maxLength} znakova zahtijeva Premium pretplatu.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Pričekaj prije ponovnog slanja IP autorizacije.", "rate_limits.ip_authorization_resend_limit_exceeded": "Prekoračeno je ograničenje ponovnog slanja IP autorizacije.", "rate_limits.message_crosspost_rate_limited": "Ovaj kanal dosegnuo je ograničenje objavljivanja. Može objaviti 10 poruka zaredom, a zatim još jednu svakih 6 minuta.", - "rate_limits.phone_rate_limit_exceeded": "Prekoračeno je ograničenje broja zahtjeva za telefon.", "rate_limits.pronouns_changed_too_often": "U zadnje vrijeme prečesto mijenjaš zamjenice. Pokušaj ponovno za {minutes, plural, one {# minutu} few {# minute} other {# minuta}}.", "rate_limits.published_message_edit_rate_limited": "Ova objavljena poruka dosegnula je ograničenje uređivanja. Može se urediti 3 puta zaredom, a zatim još jednom svakih 20 minuta.", "rate_limits.rate_limited": "Šalješ previše zahtjeva.", diff --git a/packages/errors/src/i18n/weblate/locales/hu.json b/packages/errors/src/i18n/weblate/locales/hu.json index 0622b5836..928834893 100644 --- a/packages/errors/src/i18n/weblate/locales/hu.json +++ b/packages/errors/src/i18n/weblate/locales/hu.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Ehhez a művelethez meg kell erősítened az e-mail-címedet.", "account.guild_verification_required": "Közösségi ellenőrzés szükséges.", "account.ip_authorization_required": "Az IP-cím engedélyezése szükséges.", - "account.locked_suspicious_activity": "Fiókod gyanús tevékenység miatt zárolva van.", - "account.phone_gate_escape_unavailable": "Ennél a fióknál nem halasztható el a telefonszám ellenőrzése.", - "account.phone_required_for_guild": "Telefonszámot kell hozzáadnod, hogy üzeneteket küldhess ebben a közösségben.", + "account.limited": "A fiókod korlátozva van. Az e-mailjeidben megtalálod, hogyan oldhatod fel a korlátozást.", "account.sensitive_content_filter_age_restricted": "Ez az érzékeny tartalmakat szűrő beállítás nem érhető el a korosztályodnak.", "account.session_timeout": "A munkamenet lejárt. Frissítsd az oldalt, és jelentkezz be újra.", "account.session_token_mismatch": "A munkamenettoken nem egyezik.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Érvénytelen űrlaptartalom.", "admin_and_system.invalid_format": "A megadott érték érvénytelen formátumú.", "admin_and_system.invalid_integer_format": "Érvénytelen egészszám-formátum.", - "admin_and_system.invalid_suspicious_flags_format": "A gyanús tevékenységet jelölő jelzők formátuma érvénytelen.", "admin_and_system.invalid_system_flag": "Érvénytelen rendszerjelző.", "admin_and_system.invalid_timeout_value": "Érvénytelen időtúllépési idő.", "admin_and_system.invalid_timestamp": "Érvénytelen időbélyeg.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "A válasz érvényesítése sikertelen: {errors}.", "admin_and_system.test_harness_disabled": "A tesztkeretrendszer ki van kapcsolva.", "admin_and_system.test_harness_forbidden": "A tesztkeretrendszer használata nem engedélyezett.", - "admin_and_system.unknown_suspicious_flag": "Ismeretlen, gyanús tevékenységet jelölő jelző.", "admin_and_system.update_failed": "Nem sikerült frissíteni az erőforrást. Próbáld újra.", "admin_and_system.user_must_be_bot_for_system_user": "Csak botfelhasználó jelölhető meg rendszerfelhasználóként.", "age_verification.already_verified": "Már elvégezted a korhatár-ellenőrzést.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Ez a felhasználó nincs a csatornán.", "permissions.user_not_in_voice": "Ez a felhasználó nincs hangcsatornán.", "permissions.user_owns_guilds": "Ez a felhasználó közösségek tulajdonosa.", - "phone.add_not_eligible": "Nem adhatsz hozzá telefonszámot a fiókodhoz.", - "phone.country_not_supported": "Nem küldünk ellenőrző SMS-eket ebbe az országba. Használj egy másik országból származó mobilszámot, vagy írj a support@fluxer.app címre, és egy munkatárs átnézi a fiókodat.", - "phone.inbound_verification_required": "Ezt a számot úgy ellenőrizzük, hogy te küldesz nekünk SMS-t, nem mi neked. Indítsd el újra a telefonos ellenőrzést, hogy megkapd a kódot és a számot, amelyre SMS-t kell küldened.", - "phone.invalid_number": "Érvénytelen telefonszám.", - "phone.lookup_unavailable": "A telefonszám-ellenőrzésünk jelenleg nem működik, ezért megálltunk, mielőtt elküldtük volna a kódodat. Ez a mi hibánk, nem a számodé. Várj pár percet, és próbáld újra ugyanazzal a számmal.", - "phone.number_already_used": "A telefonszám már használatban van.", - "phone.number_format_required": "A telefonszámnak E.164 formátumban kell lennie (például: +1234567890).", - "phone.number_not_in_service": "A szolgáltatód szerint ez a szám nem aktív. Ellenőrizd a számot és próbáld újra, vagy írj a support@fluxer.app címre, ha a szám helyes.", - "phone.number_not_mobile": "Ez nem mobilszám, így nem tudja fogadni az SMS-ünket. Használj mobilszámot, vagy írj a support@fluxer.app címre, ha szerinted ez tévedés.", - "phone.verification_code_invalid": "Érvénytelen telefonos ellenőrző kód.", - "phone.verification_needs_review": "Nem tudtuk automatikusan ellenőrizni ezt a számot. Írj a support@fluxer.app címre, és egy munkatárs átnézi a fiókodat.", - "phone.verification_required": "Telefonos ellenőrzés kötelező.", "premium_and_plans.animated_avatars_require_premium": "Az animált profilképekhez prémiumcsomag szükséges.", "premium_and_plans.banners_require_premium": "A borítóképekhez prémiumcsomag szükséges.", "premium_and_plans.bio_requires_premium_for_length": "A {maxLength} karakternél hosszabb bemutatkozáshoz prémiumcsomag szükséges.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Várnod kell, mielőtt újra kérheted az IP-cím engedélyezését.", "rate_limits.ip_authorization_resend_limit_exceeded": "Túllépted az IP-engedélyezés újraküldési korlátját.", "rate_limits.message_crosspost_rate_limited": "Ez a csatorna elérte a közzétételi korlátját. Egymás után 10 üzenetet tehet közzé, utána 6 percenként még egyet.", - "rate_limits.phone_rate_limit_exceeded": "Túl sok telefonos kérést küldtél.", "rate_limits.pronouns_changed_too_often": "Mostanában túl gyakran változtattad meg a névmásaidat. Próbáld újra {minutes, plural, one {# perc} other {# perc}} múlva.", "rate_limits.published_message_edit_rate_limited": "Ez a közzétett üzenet elérte a szerkesztési korlátját. Egymás után 3-szor szerkeszthető, utána 20 percenként még egyszer.", "rate_limits.rate_limited": "Túl sok kérést küldtél.", diff --git a/packages/errors/src/i18n/weblate/locales/id.json b/packages/errors/src/i18n/weblate/locales/id.json index 460a7bf4d..028a69144 100644 --- a/packages/errors/src/i18n/weblate/locales/id.json +++ b/packages/errors/src/i18n/weblate/locales/id.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Verifikasi email diperlukan untuk tindakan ini.", "account.guild_verification_required": "Verifikasi komunitas diperlukan.", "account.ip_authorization_required": "Otorisasi IP diperlukan.", - "account.locked_suspicious_activity": "Akunmu terkunci karena aktivitas mencurigakan.", - "account.phone_gate_escape_unavailable": "Verifikasi telepon tidak dapat ditunda untuk akun ini.", - "account.phone_required_for_guild": "Kamu perlu menambahkan nomor telepon untuk mengirim pesan di komunitas ini.", + "account.limited": "Akunmu dibatasi. Periksa emailmu untuk mengetahui cara mencabut pembatasannya.", "account.sensitive_content_filter_age_restricted": "Filter konten sensitif ini tidak tersedia untuk kelompok usiamu.", "account.session_timeout": "Sesi berakhir. Muat ulang halaman dan masuk lagi.", "account.session_token_mismatch": "Token sesi tidak cocok.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Isi formulir tidak valid.", "admin_and_system.invalid_format": "Nilai yang diberikan berformat tidak valid.", "admin_and_system.invalid_integer_format": "Format integer tidak valid.", - "admin_and_system.invalid_suspicious_flags_format": "Format flag mencurigakan tidak valid.", "admin_and_system.invalid_system_flag": "Flag sistem tidak valid.", "admin_and_system.invalid_timeout_value": "Nilai batas waktu tidak valid.", "admin_and_system.invalid_timestamp": "Timestamp tidak valid.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Validasi respons gagal: {errors}.", "admin_and_system.test_harness_disabled": "Test harness dinonaktifkan.", "admin_and_system.test_harness_forbidden": "Test harness dilarang.", - "admin_and_system.unknown_suspicious_flag": "Flag mencurigakan tidak dikenal.", "admin_and_system.update_failed": "Tidak bisa memperbarui sumber daya. Coba lagi.", "admin_and_system.user_must_be_bot_for_system_user": "Pengguna harus bot untuk ditandai sebagai pengguna sistem.", "age_verification.already_verified": "Kamu sudah menyelesaikan verifikasi usia.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Pengguna ini tidak ada di saluran.", "permissions.user_not_in_voice": "Pengguna ini tidak sedang di saluran suara.", "permissions.user_owns_guilds": "Pengguna ini memiliki komunitas.", - "phone.add_not_eligible": "Kamu tidak memenuhi syarat untuk menambahkan nomor telepon ke akunmu.", - "phone.country_not_supported": "Kami tidak mengirim SMS verifikasi ke negara ini. Pakai nomor ponsel dari negara lain, atau kirim email ke support@fluxer.app dan seseorang akan meninjau akunmu.", - "phone.inbound_verification_required": "Nomor ini diverifikasi dengan cara kamu yang mengirim SMS ke kami, bukan kami yang mengirim SMS ke kamu. Mulai verifikasi telepon lagi untuk mendapatkan kodenya dan nomor tujuan SMS-nya.", - "phone.invalid_number": "Nomor telepon tidak valid.", - "phone.lookup_unavailable": "Pengecekan nomor telepon kami sedang bermasalah, jadi kami berhenti sebelum mengirim kodemu. Ini masalah di sisi kami, bukan di nomormu. Tunggu beberapa menit, lalu coba lagi dengan nomor yang sama.", - "phone.number_already_used": "Nomor telepon sudah digunakan.", - "phone.number_format_required": "Nomor telepon harus dalam format E.164 (misalnya: +1234567890).", - "phone.number_not_in_service": "Operator selulermu menyatakan nomor ini tidak aktif. Periksa nomornya dan coba lagi, atau kirim email ke support@fluxer.app kalau nomornya sudah benar.", - "phone.number_not_mobile": "Ini bukan nomor ponsel, jadi tidak bisa menerima SMS dari kami. Pakai nomor ponsel, atau kirim email ke support@fluxer.app kalau menurutmu ini keliru.", - "phone.verification_code_invalid": "Kode verifikasi telepon tidak valid.", - "phone.verification_needs_review": "Kami tidak bisa memverifikasi nomor ini secara otomatis. Kirim email ke support@fluxer.app dan seseorang akan meninjau akunmu.", - "phone.verification_required": "Verifikasi telepon diperlukan.", "premium_and_plans.animated_avatars_require_premium": "Avatar animasi butuh paket Premium.", "premium_and_plans.banners_require_premium": "Banner butuh paket Premium.", "premium_and_plans.bio_requires_premium_for_length": "Bio lebih dari {maxLength} karakter butuh paket Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Kirim ulang otorisasi IP sedang dalam masa tunggu.", "rate_limits.ip_authorization_resend_limit_exceeded": "Batas kirim ulang otorisasi IP terlampaui.", "rate_limits.message_crosspost_rate_limited": "Saluran ini sudah mencapai batas publikasinya. Saluran ini bisa memublikasikan 10 pesan berturut-turut, lalu satu lagi setiap 6 menit.", - "rate_limits.phone_rate_limit_exceeded": "Batas laju permintaan telepon terlampaui.", "rate_limits.pronouns_changed_too_often": "Kamu terlalu sering mengubah kata ganti belakangan ini. Coba lagi dalam {minutes} {minutes, plural, other {menit}}.", "rate_limits.published_message_edit_rate_limited": "Pesan yang dipublikasikan ini sudah mencapai batas pengeditannya. Pesan ini bisa diedit 3 kali berturut-turut, lalu sekali lagi setiap 20 menit.", "rate_limits.rate_limited": "Kamu terkena batas laju.", diff --git a/packages/errors/src/i18n/weblate/locales/it.json b/packages/errors/src/i18n/weblate/locales/it.json index 40295170b..f5134e793 100644 --- a/packages/errors/src/i18n/weblate/locales/it.json +++ b/packages/errors/src/i18n/weblate/locales/it.json @@ -3,9 +3,7 @@ "account.email_verification_required": "La verifica dell'email è richiesta per questa azione.", "account.guild_verification_required": "La verifica della community è obbligatoria.", "account.ip_authorization_required": "L'autorizzazione IP è obbligatoria.", - "account.locked_suspicious_activity": "Il tuo account è bloccato a causa di attività sospette.", - "account.phone_gate_escape_unavailable": "Questo account non può rimandare la verifica del numero di telefono.", - "account.phone_required_for_guild": "Devi aggiungere un numero di telefono per inviare messaggi in questa community.", + "account.limited": "Il tuo account è limitato. Controlla la tua email per sapere come rimuovere la limitazione.", "account.sensitive_content_filter_age_restricted": "Questo filtro per contenuti sensibili non è disponibile per la tua età.", "account.session_timeout": "Sessione scaduta. Aggiorna la pagina e accedi di nuovo.", "account.session_token_mismatch": "Token di sessione non corrispondente.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Corpo del modulo non valido.", "admin_and_system.invalid_format": "Il valore fornito è in un formato non valido.", "admin_and_system.invalid_integer_format": "Formato dell'intero non valido.", - "admin_and_system.invalid_suspicious_flags_format": "Formato dei flag sospetti non valido.", "admin_and_system.invalid_system_flag": "Flag di sistema non valido.", "admin_and_system.invalid_timeout_value": "Valore di timeout non valido.", "admin_and_system.invalid_timestamp": "Timestamp non valido.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "La validazione della risposta è fallita: {errors}.", "admin_and_system.test_harness_disabled": "Ambiente di test disabilitato.", "admin_and_system.test_harness_forbidden": "Ambiente di test vietato.", - "admin_and_system.unknown_suspicious_flag": "Flag di attività sospetta sconosciuto.", "admin_and_system.update_failed": "Non è stato possibile aggiornare la risorsa. Riprova.", "admin_and_system.user_must_be_bot_for_system_user": "L'utente deve essere un bot per essere contrassegnato come utente di sistema.", "age_verification.already_verified": "Hai già completato la verifica dell'età.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "L'utente non è nel canale.", "permissions.user_not_in_voice": "Questo utente non è in un canale vocale.", "permissions.user_owns_guilds": "Questo utente è proprietario di community.", - "phone.add_not_eligible": "Non puoi aggiungere un numero di telefono al tuo account.", - "phone.country_not_supported": "Non inviamo SMS di verifica in questo Paese. Usa un numero di cellulare di un altro Paese, oppure scrivi a support@fluxer.app e una persona esaminerà il tuo account.", - "phone.inbound_verification_required": "Questo numero si verifica con un SMS che invii tu a noi, non con un SMS che ti inviamo noi. Avvia di nuovo la verifica del telefono per ottenere il codice e il numero a cui inviarlo.", - "phone.invalid_number": "Numero di telefono non valido.", - "phone.lookup_unavailable": "Il nostro controllo dei numeri di telefono al momento non funziona, quindi ci siamo fermati prima di inviarti il codice. La colpa è nostra, non del tuo numero. Aspetta qualche minuto e riprova con lo stesso numero.", - "phone.number_already_used": "Il numero di telefono è già in uso.", - "phone.number_format_required": "Il numero di telefono deve essere nel formato E.164 (ad esempio, +1234567890).", - "phone.number_not_in_service": "Il tuo operatore dice che questo numero non è attivo. Controlla il numero e riprova, oppure scrivi a support@fluxer.app se è corretto.", - "phone.number_not_mobile": "Questo non è un numero di cellulare, quindi non può ricevere il nostro SMS. Usa un numero di cellulare, oppure scrivi a support@fluxer.app se pensi che sia un errore.", - "phone.verification_code_invalid": "Codice di verifica del telefono non valido.", - "phone.verification_needs_review": "Non siamo riusciti a verificare questo numero automaticamente. Scrivi a support@fluxer.app e una persona esaminerà il tuo account.", - "phone.verification_required": "La verifica del telefono è richiesta.", "premium_and_plans.animated_avatars_require_premium": "Gli avatar animati richiedono Premium.", "premium_and_plans.banners_require_premium": "I banner richiedono Premium.", "premium_and_plans.bio_requires_premium_for_length": "Una biografia più lunga di {maxLength} caratteri richiede Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Devi attendere prima di richiedere un nuovo invio dell’email di autorizzazione IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "Il limite di reinvio dell'autorizzazione IP è stato superato.", "rate_limits.message_crosspost_rate_limited": "Questo canale ha raggiunto il limite di pubblicazione. Può pubblicare 10 messaggi di fila, poi uno in più ogni 6 minuti.", - "rate_limits.phone_rate_limit_exceeded": "Hai superato il limite di richieste di verifica telefonica.", "rate_limits.pronouns_changed_too_often": "Hai cambiato i tuoi pronomi troppo spesso di recente. Riprova tra {minutes, plural, one {# minuto} other {# minuti}}.", "rate_limits.published_message_edit_rate_limited": "Questo messaggio pubblicato ha raggiunto il limite di modifiche. Può essere modificato 3 volte di fila, poi un'altra volta ogni 20 minuti.", "rate_limits.rate_limited": "Hai superato il limite di richieste.", diff --git a/packages/errors/src/i18n/weblate/locales/ja.json b/packages/errors/src/i18n/weblate/locales/ja.json index 3a54dbb25..d9e7e6b29 100644 --- a/packages/errors/src/i18n/weblate/locales/ja.json +++ b/packages/errors/src/i18n/weblate/locales/ja.json @@ -3,9 +3,7 @@ "account.email_verification_required": "この操作にはメールアドレスの確認が必要です。", "account.guild_verification_required": "コミュニティの認証が必要です。", "account.ip_authorization_required": "IPアドレスの認証が必要です。", - "account.locked_suspicious_activity": "不審なアクティビティのため、アカウントはロックされています。", - "account.phone_gate_escape_unavailable": "このアカウントでは、電話番号の確認を保留することはできません。", - "account.phone_required_for_guild": "このコミュニティでメッセージを送信するには、電話番号を追加する必要があります。", + "account.limited": "アカウントが制限されています。制限を解除する方法はメールをご確認ください。", "account.sensitive_content_filter_age_restricted": "このセンシティブコンテンツフィルターは、現在の年齢層ではご利用いただけません。", "account.session_timeout": "セッションがタイムアウトしました。ページを更新して、もう一度ログインしてください。", "account.session_token_mismatch": "セッショントークンが一致しません。", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "フォームデータが無効です。", "admin_and_system.invalid_format": "入力された値の形式が無効です。", "admin_and_system.invalid_integer_format": "整数の形式が無効です。", - "admin_and_system.invalid_suspicious_flags_format": "不審フラグの形式が無効です。", "admin_and_system.invalid_system_flag": "システムのフラグが無効です。", "admin_and_system.invalid_timeout_value": "タイムアウトの値が無効です。", "admin_and_system.invalid_timestamp": "タイムスタンプが無効です。", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "レスポンスの検証に失敗しました:{errors}。", "admin_and_system.test_harness_disabled": "テストハーネスは無効です。", "admin_and_system.test_harness_forbidden": "テストハーネスは禁止されています。", - "admin_and_system.unknown_suspicious_flag": "不明な不審フラグです。", "admin_and_system.update_failed": "リソースを更新できませんでした。もう一度お試しください。", "admin_and_system.user_must_be_bot_for_system_user": "システムユーザーとしてマークするには、ユーザーはボットである必要があります。", "age_verification.already_verified": "年齢確認はすでに完了しています。", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "このユーザーはチャンネルにいません。", "permissions.user_not_in_voice": "このユーザーはボイスチャンネルにいません。", "permissions.user_owns_guilds": "このユーザーはコミュニティを所有しています。", - "phone.add_not_eligible": "このアカウントには電話番号を追加できません。", - "phone.country_not_supported": "この国には認証SMSを送信していません。別の国の携帯電話番号を使用するか、support@fluxer.appにメールしていただければ、担当者がアカウントを確認します。", - "phone.inbound_verification_required": "この番号は、こちらからSMSを送るのではなく、ご自身からこちらにSMSを送っていただいて認証します。電話認証をもう一度開始すると、送信するコードと送信先の番号が表示されます。", - "phone.invalid_number": "電話番号が無効です。", - "phone.lookup_unavailable": "電話番号の確認システムが現在停止しているため、認証コードを送信する前に処理を中止しました。原因は番号ではなく、こちら側にあります。数分待ってから、同じ番号でもう一度お試しください。", - "phone.number_already_used": "電話番号はすでに使用されています。", - "phone.number_format_required": "電話番号はE.164形式(例: +1234567890)である必要があります。", - "phone.number_not_in_service": "この番号は現在使われていないと携帯電話会社から回答がありました。番号を確認してもう一度お試しいただくか、番号が正しい場合はsupport@fluxer.appにメールしてください。", - "phone.number_not_mobile": "この番号は携帯電話番号ではないため、こちらからのSMSを受信できません。携帯電話番号を使用するか、誤りだと思う場合はsupport@fluxer.appにメールしてください。", - "phone.verification_code_invalid": "電話認証コードが無効です。", - "phone.verification_needs_review": "この番号を自動で認証できませんでした。support@fluxer.appにメールしていただければ、担当者がアカウントを確認します。", - "phone.verification_required": "電話認証が必要です。", "premium_and_plans.animated_avatars_require_premium": "アニメーションアバターにはプレミアムが必要です。", "premium_and_plans.banners_require_premium": "バナーにはプレミアムが必要です。", "premium_and_plans.bio_requires_premium_for_length": "{maxLength}文字を超える自己紹介にはプレミアムが必要です。", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "IP認証の再送信はクールダウン中です。", "rate_limits.ip_authorization_resend_limit_exceeded": "IP認証の再送信制限を超えました。", "rate_limits.message_crosspost_rate_limited": "このチャンネルは公開の上限に達しました。連続で10件まで公開でき、その後は6分ごとに1件ずつ公開できます。", - "rate_limits.phone_rate_limit_exceeded": "電話番号のレート制限を超えました。", "rate_limits.pronouns_changed_too_often": "代名詞の変更回数が多すぎます。{minutes, plural, other {#分}}後にもう一度お試しください。", "rate_limits.published_message_edit_rate_limited": "この公開済みメッセージは編集の上限に達しました。連続で3回まで編集でき、その後は20分ごとに1回ずつ編集できます。", "rate_limits.rate_limited": "レート制限がかかっています。", diff --git a/packages/errors/src/i18n/weblate/locales/ko.json b/packages/errors/src/i18n/weblate/locales/ko.json index 11c2d3691..979c4b507 100644 --- a/packages/errors/src/i18n/weblate/locales/ko.json +++ b/packages/errors/src/i18n/weblate/locales/ko.json @@ -3,9 +3,7 @@ "account.email_verification_required": "이 작업에는 이메일 인증이 필요해요.", "account.guild_verification_required": "커뮤니티 인증이 필요해요.", "account.ip_authorization_required": "IP 인증이 필요해요.", - "account.locked_suspicious_activity": "의심스러운 활동으로 계정이 잠겼어요.", - "account.phone_gate_escape_unavailable": "이 계정에서는 전화번호 인증을 미룰 수 없어요.", - "account.phone_required_for_guild": "이 커뮤니티에서 메시지를 보내려면 전화번호를 추가해야 해요.", + "account.limited": "계정이 제한되었어요. 제한을 해제하는 방법은 이메일을 확인해 주세요.", "account.sensitive_content_filter_age_restricted": "이 민감한 콘텐츠 필터는 현재 연령대에서는 사용할 수 없어요.", "account.session_timeout": "세션이 만료되었어요. 페이지를 새로고침하고 다시 로그인해 주세요.", "account.session_token_mismatch": "세션 토큰이 일치하지 않아요.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "양식 본문이 유효하지 않아요.", "admin_and_system.invalid_format": "제공된 값의 형식이 올바르지 않아요.", "admin_and_system.invalid_integer_format": "정수 형식이 유효하지 않아요.", - "admin_and_system.invalid_suspicious_flags_format": "의심스러운 플래그 형식이 유효하지 않아요.", "admin_and_system.invalid_system_flag": "시스템 플래그가 유효하지 않아요.", "admin_and_system.invalid_timeout_value": "타임아웃 값이 유효하지 않아요.", "admin_and_system.invalid_timestamp": "타임스탬프가 유효하지 않아요.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "응답 유효성 검사에 실패했어요: {errors}.", "admin_and_system.test_harness_disabled": "테스트 하네스가 비활성화되었어요.", "admin_and_system.test_harness_forbidden": "테스트 하네스 사용이 금지되어 있어요.", - "admin_and_system.unknown_suspicious_flag": "알 수 없는 의심스러운 플래그예요.", "admin_and_system.update_failed": "리소스를 업데이트하지 못했어요. 다시 시도해 주세요.", "admin_and_system.user_must_be_bot_for_system_user": "시스템 사용자로 표시하려면 봇이어야 해요.", "age_verification.already_verified": "연령 인증을 이미 완료했어요.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "이 사용자는 채널에 없어요.", "permissions.user_not_in_voice": "이 사용자는 음성 채널에 없어요.", "permissions.user_owns_guilds": "이 사용자는 커뮤니티를 소유하고 있어요.", - "phone.add_not_eligible": "회원님 계정에 전화번호를 추가할 수 없어요.", - "phone.country_not_supported": "이 국가로는 인증 문자 메시지를 보내지 않아요. 다른 국가의 휴대전화 번호를 사용하거나, support@fluxer.app으로 메일을 보내면 담당자가 회원님 계정을 검토해 드려요.", - "phone.inbound_verification_required": "이 번호는 저희가 문자 메시지를 보내는 대신, 회원님이 저희에게 문자 메시지를 보내서 인증해요. 전화 인증을 다시 시작하면 보낼 코드와 받는 번호를 알려드려요.", - "phone.invalid_number": "전화번호가 올바르지 않아요.", - "phone.lookup_unavailable": "전화번호 확인 시스템에 문제가 생겨서 인증 코드를 보내기 전에 멈췄어요. 회원님 번호 문제가 아니라 저희 문제예요. 몇 분 뒤에 같은 번호로 다시 시도해 주세요.", - "phone.number_already_used": "이미 사용 중인 전화번호예요.", - "phone.number_format_required": "전화번호는 E.164 형식(예: +1234567890)이어야 해요.", - "phone.number_not_in_service": "통신사에서 이 번호가 사용 중이 아니라고 알려왔어요. 번호를 확인하고 다시 시도하거나, 번호가 맞다면 support@fluxer.app으로 메일을 보내 주세요.", - "phone.number_not_mobile": "이 번호는 휴대전화 번호가 아니라서 저희 문자 메시지를 받을 수 없어요. 휴대전화 번호를 사용하거나, 잘못된 것 같다면 support@fluxer.app으로 메일을 보내 주세요.", - "phone.verification_code_invalid": "전화 인증 코드가 올바르지 않아요.", - "phone.verification_needs_review": "이 번호를 자동으로 인증하지 못했어요. support@fluxer.app으로 메일을 보내면 담당자가 회원님 계정을 검토해 드려요.", - "phone.verification_required": "전화 인증이 필요해요.", "premium_and_plans.animated_avatars_require_premium": "움직이는 아바타는 프리미엄이 필요해요.", "premium_and_plans.banners_require_premium": "배너는 프리미엄이 필요해요.", "premium_and_plans.bio_requires_premium_for_length": "{maxLength}자가 넘는 소개글을 쓰려면 프리미엄이 필요해요.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "IP 인증을 다시 보내려면 잠시 기다려 주세요.", "rate_limits.ip_authorization_resend_limit_exceeded": "IP 인증 재전송 한도를 초과했어요.", "rate_limits.message_crosspost_rate_limited": "이 채널의 발행 한도에 도달했어요. 연속으로 10개의 메시지를 발행할 수 있고, 그 후에는 6분마다 1개씩 더 발행할 수 있어요.", - "rate_limits.phone_rate_limit_exceeded": "전화번호 요청 한도를 초과했어요.", "rate_limits.pronouns_changed_too_often": "최근에 대명사를 너무 자주 변경했어요. {minutes, plural, other {#분}} 후에 다시 시도해 주세요.", "rate_limits.published_message_edit_rate_limited": "이 발행된 메시지의 수정 한도에 도달했어요. 연속으로 3번 수정할 수 있고, 그 후에는 20분마다 1번씩 더 수정할 수 있어요.", "rate_limits.rate_limited": "요청이 제한되고 있어요.", diff --git a/packages/errors/src/i18n/weblate/locales/lt.json b/packages/errors/src/i18n/weblate/locales/lt.json index 3f90919b1..9e969e5ce 100644 --- a/packages/errors/src/i18n/weblate/locales/lt.json +++ b/packages/errors/src/i18n/weblate/locales/lt.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Šiam veiksmui reikia patvirtinti el. paštą.", "account.guild_verification_required": "Reikalingas bendruomenės patvirtinimas.", "account.ip_authorization_required": "Reikalinga IP adreso autorizacija.", - "account.locked_suspicious_activity": "Tavo paskyra užrakinta dėl įtartinos veiklos.", - "account.phone_gate_escape_unavailable": "Telefono numerio patikrinimo atidėjimas šiai paskyrai negalimas.", - "account.phone_required_for_guild": "Kad galėtum siųsti žinutes šioje bendruomenėje, turi pridėti telefono numerį.", + "account.limited": "Tavo paskyra apribota. Patikrink el. paštą, kaip panaikinti apribojimą.", "account.sensitive_content_filter_age_restricted": "Šis jautraus turinio filtras negalimas tavo amžiaus grupei.", "account.session_timeout": "Seanso laikas baigėsi. Atnaujink puslapį ir prisijunk dar kartą.", "account.session_token_mismatch": "Seanso žetonas neatitinka.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Netinkamas formos turinys.", "admin_and_system.invalid_format": "Pateikta reikšmė yra netinkamo formato.", "admin_and_system.invalid_integer_format": "Netinkamas sveikojo skaičiaus formatas.", - "admin_and_system.invalid_suspicious_flags_format": "Netinkamas įtartinų vėliavėlių formatas.", "admin_and_system.invalid_system_flag": "Netinkama sistemos vėliavėlė.", "admin_and_system.invalid_timeout_value": "Netinkama laiko intervalo reikšmė.", "admin_and_system.invalid_timestamp": "Netinkama laiko žyma.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Nepavyko patikrinti atsakymo: {errors}.", "admin_and_system.test_harness_disabled": "Testavimo sistema išjungta.", "admin_and_system.test_harness_forbidden": "Testavimo sistema draudžiama.", - "admin_and_system.unknown_suspicious_flag": "Nežinoma įtartina vėliavėlė.", "admin_and_system.update_failed": "Ištekliaus atnaujinti nepavyko. Pabandyk dar kartą.", "admin_and_system.user_must_be_bot_for_system_user": "Naudotojas turi būti botas, kad jį būtų galima pažymėti kaip sistemos naudotoją.", "age_verification.already_verified": "Amžiaus patvirtinimą jau atlikai.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Šio naudotojo nėra kanale.", "permissions.user_not_in_voice": "Šis naudotojas nėra balso kanale.", "permissions.user_owns_guilds": "Šis naudotojas yra bendruomenių savininkas.", - "phone.add_not_eligible": "Negali pridėti telefono numerio prie savo paskyros.", - "phone.country_not_supported": "Į šią šalį patvirtinimo žinučių nesiunčiame. Naudok kitos šalies mobiliojo telefono numerį arba parašyk el. laišką adresu support@fluxer.app ir žmogus peržiūrės tavo paskyrą.", - "phone.inbound_verification_required": "Šis numeris patvirtinamas taip, kad žinutę mums siunti tu, o ne mes tau. Pradėk telefono patvirtinimą iš naujo, kad gautum kodą ir numerį, kuriuo reikia išsiųsti žinutę.", - "phone.invalid_number": "Neteisingas telefono numeris.", - "phone.lookup_unavailable": "Mūsų telefono numerių patikra šiuo metu neveikia, todėl sustojome dar neišsiuntę tavo kodo. Tai mūsų, o ne tavo numerio kaltė. Palauk kelias minutes ir pabandyk tą patį numerį dar kartą.", - "phone.number_already_used": "Telefono numeris jau naudojamas.", - "phone.number_format_required": "Telefono numeris turi būti E.164 formatu (pvz., +1234567890).", - "phone.number_not_in_service": "Tavo operatorius nurodo, kad šis numeris neaktyvus. Patikrink numerį ir bandyk dar kartą arba parašyk el. laišką adresu support@fluxer.app, jei numeris teisingas.", - "phone.number_not_mobile": "Tai ne mobiliojo telefono numeris, todėl jis negali gauti mūsų žinutės. Naudok mobiliojo telefono numerį arba parašyk el. laišką adresu support@fluxer.app, jei manai, kad tai klaida.", - "phone.verification_code_invalid": "Neteisingas telefono patvirtinimo kodas.", - "phone.verification_needs_review": "Nepavyko automatiškai patvirtinti šio numerio. Parašyk el. laišką adresu support@fluxer.app ir žmogus peržiūrės tavo paskyrą.", - "phone.verification_required": "Reikalingas telefono patvirtinimas.", "premium_and_plans.animated_avatars_require_premium": "Animuotiems avatarams reikia Premium.", "premium_and_plans.banners_require_premium": "Baneriams reikia Premium.", "premium_and_plans.bio_requires_premium_for_length": "Biografijai, ilgesnei nei {maxLength} simbolių, reikia Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "IP autorizacijos pakartotinis siuntimas yra apribotas.", "rate_limits.ip_authorization_resend_limit_exceeded": "Viršyta IP autorizacijos pakartotinio siuntimo riba.", "rate_limits.message_crosspost_rate_limited": "Šis kanalas pasiekė skelbimo ribą. Jis gali paskelbti 10 žinučių iš eilės, o paskui dar po vieną kas 6 minutes.", - "rate_limits.phone_rate_limit_exceeded": "Viršyta telefono užklausų riba.", "rate_limits.pronouns_changed_too_often": "Pastaruoju metu per dažnai keitei įvardžius. Bandyk dar kartą po {minutes, plural, one {# minutės} few {# minučių} many {# minutės} other {# minučių}}.", "rate_limits.published_message_edit_rate_limited": "Ši paskelbta žinutė pasiekė redagavimo ribą. Ją galima redaguoti 3 kartus iš eilės, o paskui dar kartą kas 20 minučių.", "rate_limits.rate_limited": "Tavo veiksmai ribojami.", diff --git a/packages/errors/src/i18n/weblate/locales/nl.json b/packages/errors/src/i18n/weblate/locales/nl.json index e012393ce..c45890583 100644 --- a/packages/errors/src/i18n/weblate/locales/nl.json +++ b/packages/errors/src/i18n/weblate/locales/nl.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Voor deze actie is e-mailverificatie vereist.", "account.guild_verification_required": "Voor deze community is verificatie vereist.", "account.ip_authorization_required": "IP-autorisatie is vereist.", - "account.locked_suspicious_activity": "Je account is vergrendeld vanwege verdachte activiteit.", - "account.phone_gate_escape_unavailable": "Voor dit account kan de verificatie van het telefoonnummer niet worden uitgesteld.", - "account.phone_required_for_guild": "Je moet een telefoonnummer toevoegen om berichten te kunnen versturen in deze community.", + "account.limited": "Je account is beperkt. Bekijk je e-mail om te zien hoe je de beperking opheft.", "account.sensitive_content_filter_age_restricted": "Dit filter voor gevoelige inhoud is niet beschikbaar voor jouw leeftijdsgroep.", "account.session_timeout": "Sessie is verlopen. Vernieuw de pagina en log opnieuw in.", "account.session_token_mismatch": "Sessietoken komt niet overeen.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Ongeldige formuliergegevens.", "admin_and_system.invalid_format": "De opgegeven waarde heeft een ongeldig formaat.", "admin_and_system.invalid_integer_format": "Ongeldig formaat voor een geheel getal.", - "admin_and_system.invalid_suspicious_flags_format": "Ongeldig formaat voor markeringen van verdachte activiteit.", "admin_and_system.invalid_system_flag": "Ongeldige systeem-vlag.", "admin_and_system.invalid_timeout_value": "Ongeldige time-outwaarde.", "admin_and_system.invalid_timestamp": "Ongeldige tijdstempel.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Validatie van de respons mislukt: {errors}.", "admin_and_system.test_harness_disabled": "Testfunctionaliteit is uitgeschakeld.", "admin_and_system.test_harness_forbidden": "Testfunctionaliteit is verboden.", - "admin_and_system.unknown_suspicious_flag": "Onbekende markering voor verdachte activiteit.", "admin_and_system.update_failed": "We konden het item niet bijwerken. Probeer het opnieuw.", "admin_and_system.user_must_be_bot_for_system_user": "Gebruiker moet een bot zijn om als systeemgebruiker te worden gemarkeerd.", "age_verification.already_verified": "Je hebt de leeftijdsverificatie al voltooid.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Deze gebruiker is niet in het kanaal.", "permissions.user_not_in_voice": "Deze gebruiker zit niet in een spraakkanaal.", "permissions.user_owns_guilds": "Deze gebruiker is eigenaar van communities.", - "phone.add_not_eligible": "Je kunt geen telefoonnummer aan je account toevoegen.", - "phone.country_not_supported": "We sturen geen verificatie-sms naar dit land. Gebruik een mobiel nummer uit een ander land of mail naar support@fluxer.app, dan beoordeelt een medewerker je account.", - "phone.inbound_verification_required": "Dit nummer wordt geverifieerd doordat jij ons een sms stuurt, niet doordat wij jou er een sturen. Start de telefoonverificatie opnieuw om de code te krijgen en het nummer waar je die naartoe stuurt.", - "phone.invalid_number": "Ongeldig telefoonnummer.", - "phone.lookup_unavailable": "Onze controle van telefoonnummers werkt op dit moment niet, dus we zijn gestopt voordat je code werd verstuurd. Dit ligt aan ons, niet aan je nummer. Wacht een paar minuten en probeer daarna hetzelfde nummer opnieuw.", - "phone.number_already_used": "Telefoonnummer is al in gebruik.", - "phone.number_format_required": "Telefoonnummer moet in E.164-formaat zijn (bijvoorbeeld +1234567890).", - "phone.number_not_in_service": "Je provider geeft aan dat dit nummer niet actief is. Controleer het nummer en probeer het opnieuw, of mail naar support@fluxer.app als het klopt.", - "phone.number_not_mobile": "Dit is geen mobiel nummer, dus het kan onze sms niet ontvangen. Gebruik een mobiel nummer of mail naar support@fluxer.app als je denkt dat dat niet klopt.", - "phone.verification_code_invalid": "Ongeldige verificatiecode voor telefoonnummer.", - "phone.verification_needs_review": "We konden dit nummer niet automatisch verifiëren. Mail naar support@fluxer.app, dan beoordeelt een medewerker je account.", - "phone.verification_required": "Telefoonverificatie is nodig.", "premium_and_plans.animated_avatars_require_premium": "Premium is vereist voor geanimeerde avatars.", "premium_and_plans.banners_require_premium": "Premium is vereist voor banners.", "premium_and_plans.bio_requires_premium_for_length": "Een bio langer dan {maxLength} tekens vereist Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Wacht even voordat je de e-mail voor IP-autorisatie opnieuw verstuurt.", "rate_limits.ip_authorization_resend_limit_exceeded": "De limiet voor het opnieuw versturen van IP-autorisatie is overschreden.", "rate_limits.message_crosspost_rate_limited": "Dit kanaal heeft zijn publicatielimiet bereikt. Het kan 10 berichten achter elkaar publiceren en daarna elke 6 minuten één extra.", - "rate_limits.phone_rate_limit_exceeded": "De limiet voor telefoonaanvragen is overschreden.", "rate_limits.pronouns_changed_too_often": "Je hebt je voornaamwoorden de laatste tijd te vaak gewijzigd. Probeer het over {minutes, plural, one {# minuut} other {# minuten}} opnieuw.", "rate_limits.published_message_edit_rate_limited": "Dit gepubliceerde bericht heeft zijn bewerkingslimiet bereikt. Het kan 3 keer achter elkaar worden bewerkt en daarna elke 20 minuten nog één keer.", "rate_limits.rate_limited": "Je hebt te veel verzoeken in korte tijd verstuurd.", diff --git a/packages/errors/src/i18n/weblate/locales/no.json b/packages/errors/src/i18n/weblate/locales/no.json index 66776d36a..1347a1e47 100644 --- a/packages/errors/src/i18n/weblate/locales/no.json +++ b/packages/errors/src/i18n/weblate/locales/no.json @@ -3,9 +3,7 @@ "account.email_verification_required": "E-postbekreftelse kreves for denne handlingen.", "account.guild_verification_required": "Verifisering i fellesskapet er nødvendig.", "account.ip_authorization_required": "IP-autorisasjon er nødvendig.", - "account.locked_suspicious_activity": "Kontoen din er låst på grunn av mistenkelig aktivitet.", - "account.phone_gate_escape_unavailable": "Denne kontoen kan ikke utsette verifiseringen av telefonnummeret.", - "account.phone_required_for_guild": "Du må legge til et telefonnummer for å sende meldinger i dette fellesskapet.", + "account.limited": "Kontoen din er begrenset. Sjekk e-posten din for å se hvordan du opphever begrensningen.", "account.sensitive_content_filter_age_restricted": "Dette filteret for sensitivt innhold er ikke tilgjengelig for aldersgruppen din.", "account.session_timeout": "Økten din er utløpt. Oppdater siden og logg inn på nytt.", "account.session_token_mismatch": "Økttokenet samsvarer ikke.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Ugyldig skjemainnhold.", "admin_and_system.invalid_format": "Verdien er i et ugyldig format.", "admin_and_system.invalid_integer_format": "Ugyldig heltallsformat.", - "admin_and_system.invalid_suspicious_flags_format": "Ugyldig format for flagg som markerer mistenkelig aktivitet.", "admin_and_system.invalid_system_flag": "Ugyldig systemflagg.", "admin_and_system.invalid_timeout_value": "Ugyldig tidsavbruddsverdi.", "admin_and_system.invalid_timestamp": "Ugyldig tidsstempel.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Validering av svaret mislyktes: {errors}.", "admin_and_system.test_harness_disabled": "Testrammeverket er deaktivert.", "admin_and_system.test_harness_forbidden": "Testrammeverket er ikke tillatt.", - "admin_and_system.unknown_suspicious_flag": "Ukjent flagg for mistenkelig aktivitet.", "admin_and_system.update_failed": "Vi kunne ikke oppdatere ressursen. Prøv på nytt.", "admin_and_system.user_must_be_bot_for_system_user": "Brukeren må være en bot for å bli merket som en systembruker.", "age_verification.already_verified": "Du har allerede fullført aldersverifisering.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Denne brukeren er ikke i kanalen.", "permissions.user_not_in_voice": "Denne brukeren er ikke tilkoblet tale.", "permissions.user_owns_guilds": "Denne brukeren eier fellesskap.", - "phone.add_not_eligible": "Du oppfyller ikke kravene for å legge til et telefonnummer på kontoen din.", - "phone.country_not_supported": "Vi sender ikke bekreftelses-SMS til dette landet. Bruk et mobilnummer fra et annet land, eller send en e-post til support@fluxer.app, så går en person gjennom kontoen din.", - "phone.inbound_verification_required": "Dette nummeret bekreftes ved at du sender oss en SMS, ikke ved at vi sender deg en. Start telefonbekreftelsen på nytt for å få koden og nummeret du skal sende den til.", - "phone.invalid_number": "Ugyldig telefonnummer.", - "phone.lookup_unavailable": "Kontrollen vår av telefonnumre er nede akkurat nå, så vi stoppet før koden din ble sendt. Feilen ligger hos oss og skyldes ikke nummeret ditt. Vent noen minutter og prøv det samme nummeret igjen.", - "phone.number_already_used": "Telefonnummeret er allerede i bruk.", - "phone.number_format_required": "Telefonnummeret må være i E.164-format (for eksempel +1234567890).", - "phone.number_not_in_service": "Mobiloperatøren din oppgir at dette nummeret ikke er aktivt. Kontroller nummeret og prøv igjen, eller send en e-post til support@fluxer.app hvis det er riktig.", - "phone.number_not_mobile": "Dette er ikke et mobilnummer, så det kan ikke motta SMS-en vår. Bruk et mobilnummer, eller send en e-post til support@fluxer.app hvis du mener det er feil.", - "phone.verification_code_invalid": "Ugyldig telefonbekreftelseskode.", - "phone.verification_needs_review": "Vi kunne ikke bekrefte dette nummeret automatisk. Send en e-post til support@fluxer.app, så går en person gjennom kontoen din.", - "phone.verification_required": "Telefonbekreftelse er påkrevd.", "premium_and_plans.animated_avatars_require_premium": "Animerte avatarer krever Premium.", "premium_and_plans.banners_require_premium": "Bannere krever Premium.", "premium_and_plans.bio_requires_premium_for_length": "En bio på mer enn {maxLength} tegn krever Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Du må vente før du kan be om å få tilsendt IP-autorisasjonen på nytt.", "rate_limits.ip_authorization_resend_limit_exceeded": "Grensen for å sende IP-autorisasjonen på nytt er overskredet.", "rate_limits.message_crosspost_rate_limited": "Denne kanalen har nådd publiseringsgrensen sin. Den kan publisere 10 meldinger på rad, og deretter én til hvert 6. minutt.", - "rate_limits.phone_rate_limit_exceeded": "Grensen for telefonforespørsler er overskredet.", "rate_limits.pronouns_changed_too_often": "Du har endret pronomenene dine for ofte nylig. Prøv igjen om {minutes, plural, one {# minutt} other {# minutter}}.", "rate_limits.published_message_edit_rate_limited": "Denne publiserte meldingen har nådd redigeringsgrensen sin. Den kan redigeres 3 ganger på rad, og deretter én gang til hvert 20. minutt.", "rate_limits.rate_limited": "Du har sendt for mange forespørsler på kort tid.", diff --git a/packages/errors/src/i18n/weblate/locales/pl.json b/packages/errors/src/i18n/weblate/locales/pl.json index d50e06b87..54e502238 100644 --- a/packages/errors/src/i18n/weblate/locales/pl.json +++ b/packages/errors/src/i18n/weblate/locales/pl.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Weryfikacja adresu e-mail jest wymagana do wykonania tej czynności.", "account.guild_verification_required": "Wymagana jest weryfikacja społeczności.", "account.ip_authorization_required": "Wymagana jest autoryzacja adresu IP.", - "account.locked_suspicious_activity": "Twoje konto jest zablokowane z powodu podejrzanej aktywności.", - "account.phone_gate_escape_unavailable": "Na tym koncie nie można odłożyć weryfikacji numeru telefonu.", - "account.phone_required_for_guild": "Aby wysyłać wiadomości w tej społeczności, musisz dodać numer telefonu.", + "account.limited": "Twoje konto jest ograniczone. Sprawdź swoją skrzynkę e-mail, aby dowiedzieć się, jak znieść ograniczenie.", "account.sensitive_content_filter_age_restricted": "Ten filtr treści wrażliwych nie jest dostępny dla Twojej grupy wiekowej.", "account.session_timeout": "Sesja wygasła. Odśwież stronę i zaloguj się jeszcze raz.", "account.session_token_mismatch": "Niezgodność tokenu sesji.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Nieprawidłowe dane formularza.", "admin_and_system.invalid_format": "Podana wartość ma nieprawidłowy format.", "admin_and_system.invalid_integer_format": "Nieprawidłowy format liczby całkowitej.", - "admin_and_system.invalid_suspicious_flags_format": "Nieprawidłowy format flag podejrzanej aktywności.", "admin_and_system.invalid_system_flag": "Nieprawidłowa flaga systemowa.", "admin_and_system.invalid_timeout_value": "Nieprawidłowa wartość limitu czasu.", "admin_and_system.invalid_timestamp": "Nieprawidłowy znacznik czasu.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Walidacja odpowiedzi nie powiodła się: {errors}.", "admin_and_system.test_harness_disabled": "Środowisko testowe wyłączone.", "admin_and_system.test_harness_forbidden": "Środowisko testowe zabronione.", - "admin_and_system.unknown_suspicious_flag": "Nieznana flaga podejrzanej aktywności.", "admin_and_system.update_failed": "Nie udało się zaktualizować zasobu. Spróbuj jeszcze raz.", "admin_and_system.user_must_be_bot_for_system_user": "Użytkownik musi być botem, aby mógł być oznaczony jako użytkownik systemowy.", "age_verification.already_verified": "Weryfikacja wieku została już zakończona.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Użytkownika nie ma na kanale.", "permissions.user_not_in_voice": "Ten użytkownik nie uczestniczy w rozmowie głosowej.", "permissions.user_owns_guilds": "Ten użytkownik jest właścicielem społeczności.", - "phone.add_not_eligible": "Nie spełniasz warunków dodania numeru telefonu do konta.", - "phone.country_not_supported": "Nie wysyłamy SMS-ów weryfikacyjnych do tego kraju. Użyj numeru komórkowego z innego kraju albo napisz na support@fluxer.app, a Twoje konto sprawdzi człowiek.", - "phone.inbound_verification_required": "Ten numer weryfikuje się tak, że to Ty wysyłasz SMS-a do nas, a nie my do Ciebie. Rozpocznij weryfikację telefonu jeszcze raz, aby otrzymać kod i numer, na który masz go wysłać.", - "phone.invalid_number": "Nieprawidłowy numer telefonu.", - "phone.lookup_unavailable": "Nasza usługa sprawdzania numerów telefonów chwilowo nie działa, więc nie wysłaliśmy kodu. To problem po naszej stronie, nie z Twoim numerem. Odczekaj kilka minut i spróbuj ponownie z tym samym numerem.", - "phone.number_already_used": "Numer telefonu jest już w użyciu.", - "phone.number_format_required": "Numer telefonu musi być w formacie E.164 (na przykład +1234567890).", - "phone.number_not_in_service": "Twój operator zgłasza, że ten numer jest nieaktywny. Sprawdź numer i spróbuj ponownie albo napisz na support@fluxer.app, jeśli numer jest poprawny.", - "phone.number_not_mobile": "To nie jest numer komórkowy, więc nie może odebrać naszego SMS-a. Użyj numeru komórkowego albo napisz na support@fluxer.app, jeśli uważasz, że to pomyłka.", - "phone.verification_code_invalid": "Nieprawidłowy kod weryfikacyjny numeru telefonu.", - "phone.verification_needs_review": "Nie udało nam się zweryfikować tego numeru automatycznie. Napisz na support@fluxer.app, a Twoje konto sprawdzi człowiek.", - "phone.verification_required": "Wymagana jest weryfikacja numeru telefonu.", "premium_and_plans.animated_avatars_require_premium": "Animowane awatary wymagają Premium.", "premium_and_plans.banners_require_premium": "Banery wymagają Premium.", "premium_and_plans.bio_requires_premium_for_length": "Biogram dłuższy niż {maxLength} znaków wymaga Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Musisz odczekać przed ponownym wysłaniem wiadomości autoryzującej adres IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "Przekroczono limit ponownego wysyłania wiadomości autoryzujących adres IP.", "rate_limits.message_crosspost_rate_limited": "Ten kanał osiągnął limit publikowania. Może opublikować 10 wiadomości z rzędu, a potem jedną więcej co 6 minut.", - "rate_limits.phone_rate_limit_exceeded": "Przekroczono limit częstotliwości żądań dla numeru telefonu.", "rate_limits.pronouns_changed_too_often": "Ostatnio zbyt często zmieniasz zaimki. Spróbuj ponownie za {minutes, plural, one {# minutę} few {# minuty} many {# minut} other {# minuty}}.", "rate_limits.published_message_edit_rate_limited": "Ta opublikowana wiadomość osiągnęła limit edycji. Można ją edytować 3 razy z rzędu, a potem jeszcze raz co 20 minut.", "rate_limits.rate_limited": "Przekroczono limit żądań.", diff --git a/packages/errors/src/i18n/weblate/locales/pt-BR.json b/packages/errors/src/i18n/weblate/locales/pt-BR.json index 2fd4eb520..239922816 100644 --- a/packages/errors/src/i18n/weblate/locales/pt-BR.json +++ b/packages/errors/src/i18n/weblate/locales/pt-BR.json @@ -3,9 +3,7 @@ "account.email_verification_required": "A verificação do e-mail é necessária para esta ação.", "account.guild_verification_required": "A verificação da comunidade é necessária.", "account.ip_authorization_required": "A autorização de IP é necessária.", - "account.locked_suspicious_activity": "Sua conta está bloqueada devido a atividades suspeitas.", - "account.phone_gate_escape_unavailable": "Não é possível adiar a verificação do telefone nesta conta.", - "account.phone_required_for_guild": "Você precisa adicionar um número de telefone para enviar mensagens nesta comunidade.", + "account.limited": "Sua conta está limitada. Confira seu e-mail para saber como remover a limitação.", "account.sensitive_content_filter_age_restricted": "Este filtro de conteúdo sensível não está disponível para sua faixa etária.", "account.session_timeout": "A sessão expirou. Atualize a página e entre novamente.", "account.session_token_mismatch": "Token de sessão incompatível.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Corpo do formulário inválido.", "admin_and_system.invalid_format": "O valor fornecido está em um formato inválido.", "admin_and_system.invalid_integer_format": "Formato de número inteiro inválido.", - "admin_and_system.invalid_suspicious_flags_format": "Formato de flags suspeitas inválido.", "admin_and_system.invalid_system_flag": "Flag de sistema inválida.", "admin_and_system.invalid_timeout_value": "Data de término da suspensão temporária inválida.", "admin_and_system.invalid_timestamp": "Timestamp inválido.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Falha na validação da resposta: {errors}.", "admin_and_system.test_harness_disabled": "A ferramenta de teste está desativada.", "admin_and_system.test_harness_forbidden": "A ferramenta de teste é proibida.", - "admin_and_system.unknown_suspicious_flag": "Flag suspeita desconhecida.", "admin_and_system.update_failed": "Não foi possível atualizar o recurso. Tente de novo.", "admin_and_system.user_must_be_bot_for_system_user": "O usuário deve ser um bot para ser marcado como usuário de sistema.", "age_verification.already_verified": "Você já concluiu a verificação de idade.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Este usuário não está no canal.", "permissions.user_not_in_voice": "Este usuário não está em um canal de voz.", "permissions.user_owns_guilds": "Este usuário é dono de comunidades.", - "phone.add_not_eligible": "Você não é elegível para adicionar um número de telefone à sua conta.", - "phone.country_not_supported": "Não enviamos SMS de verificação para este país. Use um número de celular de outro país ou escreva para support@fluxer.app e uma pessoa vai revisar sua conta.", - "phone.inbound_verification_required": "Este número é verificado com um SMS que você envia para nós, e não com um SMS que nós enviamos para você. Inicie a verificação de telefone novamente para receber o código e o número para o qual enviá-lo.", - "phone.invalid_number": "Número de telefone inválido.", - "phone.lookup_unavailable": "Nossa checagem de números de telefone está fora do ar agora, então paramos antes de enviar seu código. O problema é nosso, não do seu número. Aguarde alguns minutos e tente o mesmo número novamente.", - "phone.number_already_used": "Número de telefone já está em uso.", - "phone.number_format_required": "Número de telefone deve seguir o formato E.164 (por exemplo, +1234567890).", - "phone.number_not_in_service": "Sua operadora diz que este número não está em serviço. Confira o número e tente novamente, ou escreva para support@fluxer.app se ele estiver correto.", - "phone.number_not_mobile": "Este não é um número de celular, então não pode receber nosso SMS. Use um número de celular ou escreva para support@fluxer.app se achar que isso está errado.", - "phone.verification_code_invalid": "Código de verificação de telefone inválido.", - "phone.verification_needs_review": "Não conseguimos verificar este número automaticamente. Escreva para support@fluxer.app e uma pessoa vai revisar sua conta.", - "phone.verification_required": "Verificação de telefone é obrigatória.", "premium_and_plans.animated_avatars_require_premium": "Avatares animados exigem o plano Premium.", "premium_and_plans.banners_require_premium": "Banners exigem o plano Premium.", "premium_and_plans.bio_requires_premium_for_length": "Uma biografia com mais de {maxLength} caracteres requer o plano Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Aguarde antes de reenviar a autorização de IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "Limite de reenvio de autorização IP excedido.", "rate_limits.message_crosspost_rate_limited": "Este canal atingiu o limite de publicações. Ele pode publicar 10 mensagens seguidas e depois mais uma a cada 6 minutos.", - "rate_limits.phone_rate_limit_exceeded": "O limite de solicitações de telefone foi excedido.", "rate_limits.pronouns_changed_too_often": "Você alterou seus pronomes muitas vezes recentemente. Tente novamente em {minutes, plural, =1 {# minuto} other {# minutos}}.", "rate_limits.published_message_edit_rate_limited": "Esta mensagem publicada atingiu o limite de edições. Ela pode ser editada 3 vezes seguidas e depois mais uma vez a cada 20 minutos.", "rate_limits.rate_limited": "Você atingiu o limite de solicitações.", diff --git a/packages/errors/src/i18n/weblate/locales/ro.json b/packages/errors/src/i18n/weblate/locales/ro.json index 8cac7251a..b6b129668 100644 --- a/packages/errors/src/i18n/weblate/locales/ro.json +++ b/packages/errors/src/i18n/weblate/locales/ro.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Verificarea e-mailului este necesară pentru această acțiune.", "account.guild_verification_required": "Este necesară verificarea comunității.", "account.ip_authorization_required": "Este necesară autorizarea IP.", - "account.locked_suspicious_activity": "Contul tău este blocat din cauza activității suspecte.", - "account.phone_gate_escape_unavailable": "Amânarea verificării telefonice nu este disponibilă pentru acest cont.", - "account.phone_required_for_guild": "Trebuie să adaugi un număr de telefon pentru a trimite mesaje în această comunitate.", + "account.limited": "Contul tău este limitat. Verifică-ți e-mailul ca să afli cum poți ridica limitarea.", "account.sensitive_content_filter_age_restricted": "Acest filtru de conținut sensibil nu este disponibil pentru grupa ta de vârstă.", "account.session_timeout": "Sesiunea a expirat. Reîmprospătează pagina și conectează-te din nou.", "account.session_token_mismatch": "Token de sesiune necorespunzător.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Corpul formularului este invalid.", "admin_and_system.invalid_format": "Valoarea furnizată este într-un format invalid.", "admin_and_system.invalid_integer_format": "Formatul numărului întreg este invalid.", - "admin_and_system.invalid_suspicious_flags_format": "Formatul indicatorilor suspecți este invalid.", "admin_and_system.invalid_system_flag": "Indicatorul de sistem este invalid.", "admin_and_system.invalid_timeout_value": "Valoarea de timeout este invalidă.", "admin_and_system.invalid_timestamp": "Marca de timp este invalidă.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Validarea răspunsului a eșuat: {errors}.", "admin_and_system.test_harness_disabled": "Cadrul de testare este dezactivat.", "admin_and_system.test_harness_forbidden": "Cadrul de testare este interzis.", - "admin_and_system.unknown_suspicious_flag": "Indicatorul suspect este necunoscut.", "admin_and_system.update_failed": "Resursa nu a putut fi actualizată. Încearcă din nou.", "admin_and_system.user_must_be_bot_for_system_user": "Utilizatorul trebuie să fie un bot pentru a fi marcat ca utilizator de sistem.", "age_verification.already_verified": "Ai finalizat deja verificarea vârstei.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Acest utilizator nu este în canal.", "permissions.user_not_in_voice": "Acest utilizator nu este într-un canal vocal.", "permissions.user_owns_guilds": "Acest utilizator deține comunități.", - "phone.add_not_eligible": "Nu ești eligibil pentru a adăuga un număr de telefon la contul tău.", - "phone.country_not_supported": "Nu trimitem SMS-uri de verificare în această țară. Folosește un număr de mobil dintr-o altă țară sau scrie la support@fluxer.app și o persoană îți va examina contul.", - "phone.inbound_verification_required": "Acest număr se verifică printr-un SMS pe care ni-l trimiți tu, nu printr-unul pe care ți-l trimitem noi. Pornește din nou verificarea telefonului pentru a primi codul și numărul la care să îl trimiți.", - "phone.invalid_number": "Număr de telefon invalid.", - "phone.lookup_unavailable": "Verificarea noastră a numerelor de telefon nu funcționează în acest moment, așa că ne-am oprit înainte de a-ți trimite codul. Problema este la noi, nu la numărul tău. Așteaptă câteva minute și încearcă din nou cu același număr.", - "phone.number_already_used": "Numărul de telefon este deja utilizat.", - "phone.number_format_required": "Numărul de telefon trebuie să fie în format E.164 (de exemplu, +1234567890).", - "phone.number_not_in_service": "Operatorul tău spune că acest număr nu este activ. Verifică numărul și încearcă din nou sau scrie la support@fluxer.app dacă este corect.", - "phone.number_not_mobile": "Acesta nu este un număr de mobil, așa că nu poate primi SMS-ul nostru. Folosește un număr de mobil sau scrie la support@fluxer.app dacă crezi că este o greșeală.", - "phone.verification_code_invalid": "Cod de verificare telefonică invalid.", - "phone.verification_needs_review": "Nu am putut verifica automat acest număr. Scrie la support@fluxer.app și o persoană îți va examina contul.", - "phone.verification_required": "Este necesară verificarea telefonului.", "premium_and_plans.animated_avatars_require_premium": "Avatarele animate necesită Premium.", "premium_and_plans.banners_require_premium": "Bannerele necesită Premium.", "premium_and_plans.bio_requires_premium_for_length": "O biografie mai lungă de {maxLength} caractere necesită Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Trebuie să aștepți înainte de a retrimite autorizarea IP.", "rate_limits.ip_authorization_resend_limit_exceeded": "S-a depășit limita de retrimitere a autorizării IP.", "rate_limits.message_crosspost_rate_limited": "Acest canal a atins limita de publicare. Poate publica 10 mesaje la rând, apoi încă unul la fiecare 6 minute.", - "rate_limits.phone_rate_limit_exceeded": "S-a depășit limita de rată pentru telefon.", "rate_limits.pronouns_changed_too_often": "Ți-ai schimbat pronumele prea des recent. Încearcă din nou peste {minutes, plural, one {# minut} few {# minute} other {# de minute}}.", "rate_limits.published_message_edit_rate_limited": "Acest mesaj publicat a atins limita de editare. Poate fi editat de 3 ori la rând, apoi încă o dată la fiecare 20 de minute.", "rate_limits.rate_limited": "Ai atins limita de rată.", diff --git a/packages/errors/src/i18n/weblate/locales/ru.json b/packages/errors/src/i18n/weblate/locales/ru.json index 89e05a2a7..db571a6a4 100644 --- a/packages/errors/src/i18n/weblate/locales/ru.json +++ b/packages/errors/src/i18n/weblate/locales/ru.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Для этого действия требуется подтверждение email.", "account.guild_verification_required": "Нужно пройти проверку сообщества.", "account.ip_authorization_required": "Требуется авторизация по IP.", - "account.locked_suspicious_activity": "Твой аккаунт заблокирован из-за подозрительной активности.", - "account.phone_gate_escape_unavailable": "Отложить проверку телефона для этого аккаунта нельзя.", - "account.phone_required_for_guild": "Тебе нужно добавить номер телефона, чтобы отправлять сообщения в этом сообществе.", + "account.limited": "Твой аккаунт ограничен. Проверь почту, чтобы узнать, как снять ограничение.", "account.sensitive_content_filter_age_restricted": "Этот фильтр контента 18+ недоступен для твоей возрастной группы.", "account.session_timeout": "Время сессии истекло. Обнови страницу и войди снова.", "account.session_token_mismatch": "Токен сессии не совпадает.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Неверное тело формы.", "admin_and_system.invalid_format": "Неверный формат значения.", "admin_and_system.invalid_integer_format": "Неверный формат целого числа.", - "admin_and_system.invalid_suspicious_flags_format": "Неверный формат флагов подозрительной активности.", "admin_and_system.invalid_system_flag": "Неверный системный флаг.", "admin_and_system.invalid_timeout_value": "Неверное значение тайм-аута.", "admin_and_system.invalid_timestamp": "Неверная метка времени.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Ошибка проверки ответа: {errors}.", "admin_and_system.test_harness_disabled": "Тестовый стенд отключён.", "admin_and_system.test_harness_forbidden": "Тестовый стенд запрещён.", - "admin_and_system.unknown_suspicious_flag": "Неизвестный подозрительный флаг.", "admin_and_system.update_failed": "Не удалось обновить ресурс. Попробуй ещё раз.", "admin_and_system.user_must_be_bot_for_system_user": "Пользователь должен быть ботом, чтобы отметить его как системного пользователя.", "age_verification.already_verified": "Возраст уже подтверждён.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Этого пользователя нет в канале.", "permissions.user_not_in_voice": "Этот пользователь не в голосовом канале.", "permissions.user_owns_guilds": "Этот пользователь владеет сообществами.", - "phone.add_not_eligible": "Ты не можешь добавить номер телефона к своему аккаунту.", - "phone.country_not_supported": "Мы не отправляем SMS с кодом подтверждения в эту страну. Укажи мобильный номер другой страны или напиши на support@fluxer.app, и твой аккаунт проверит человек.", - "phone.inbound_verification_required": "Этот номер подтверждается так: SMS отправляешь ты нам, а не мы тебе. Начни подтверждение телефона заново, чтобы получить код и номер, на который его нужно отправить.", - "phone.invalid_number": "Неверный номер телефона.", - "phone.lookup_unavailable": "Наша проверка номеров сейчас не работает, поэтому мы остановились и не отправили твой код. Дело в нас, а не в твоём номере. Подожди пару минут и попробуй ещё раз с тем же номером.", - "phone.number_already_used": "Номер телефона уже используется.", - "phone.number_format_required": "Номер телефона должен быть указан в формате E.164 (например, +1234567890).", - "phone.number_not_in_service": "Твой оператор сообщает, что этот номер не обслуживается. Проверь номер и попробуй ещё раз или напиши на support@fluxer.app, если номер верный.", - "phone.number_not_mobile": "Это не мобильный номер, поэтому наше SMS на него не придёт. Укажи мобильный номер или напиши на support@fluxer.app, если считаешь, что это ошибка.", - "phone.verification_code_invalid": "Неверный код подтверждения телефона.", - "phone.verification_needs_review": "Нам не удалось подтвердить этот номер автоматически. Напиши на support@fluxer.app, и твой аккаунт проверит человек.", - "phone.verification_required": "Требуется подтверждение телефона.", "premium_and_plans.animated_avatars_require_premium": "Для анимированных аватаров нужен Премиум.", "premium_and_plans.banners_require_premium": "Для баннеров нужен Премиум.", "premium_and_plans.bio_requires_premium_for_length": "Для биографии длиннее {maxLength} символов нужен Премиум.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Повторная отправка авторизации по IP пока недоступна. Подожди немного.", "rate_limits.ip_authorization_resend_limit_exceeded": "Превышен лимит повторных отправок авторизации по IP.", "rate_limits.message_crosspost_rate_limited": "Этот канал достиг лимита публикаций. Он может опубликовать 10 сообщений подряд, а затем ещё одно каждые 6 минут.", - "rate_limits.phone_rate_limit_exceeded": "Превышен лимит отправок на телефон.", "rate_limits.pronouns_changed_too_often": "Ты слишком часто меняешь местоимения. Попробуй ещё раз через {minutes} {minutes, plural, one {минуту} few {минуты} many {минут} other {минуты}}.", "rate_limits.published_message_edit_rate_limited": "Это опубликованное сообщение достигло лимита правок. Его можно отредактировать 3 раза подряд, а затем ещё раз каждые 20 минут.", "rate_limits.rate_limited": "Слишком много запросов. Подожди немного.", diff --git a/packages/errors/src/i18n/weblate/locales/sv-SE.json b/packages/errors/src/i18n/weblate/locales/sv-SE.json index 929d7e109..a91df1142 100644 --- a/packages/errors/src/i18n/weblate/locales/sv-SE.json +++ b/packages/errors/src/i18n/weblate/locales/sv-SE.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Du måste verifiera din e-postadress för att utföra den här åtgärden.", "account.guild_verification_required": "Communityverifiering krävs.", "account.ip_authorization_required": "IP-adressen måste godkännas.", - "account.locked_suspicious_activity": "Ditt konto är låst på grund av misstänkt aktivitet.", - "account.phone_gate_escape_unavailable": "Det här kontot kan inte skjuta upp telefonverifieringen.", - "account.phone_required_for_guild": "Du måste lägga till ett telefonnummer för att skicka meddelanden i denna community.", + "account.limited": "Ditt konto är begränsat. Kolla din e-post för att se hur du häver begränsningen.", "account.sensitive_content_filter_age_restricted": "Det här filtret för känsligt innehåll är inte tillgängligt för din åldersgrupp.", "account.session_timeout": "Sessionen har löpt ut. Uppdatera sidan och logga in igen.", "account.session_token_mismatch": "Sessionstoken matchar inte.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Ogiltigt formulärinnehåll.", "admin_and_system.invalid_format": "Det angivna värdet har ett ogiltigt format.", "admin_and_system.invalid_integer_format": "Ogiltigt heltalsformat.", - "admin_and_system.invalid_suspicious_flags_format": "Ogiltigt format för misstänkta flaggor.", "admin_and_system.invalid_system_flag": "Ogiltig systemflagga.", "admin_and_system.invalid_timeout_value": "Ogiltigt timeout-värde.", "admin_and_system.invalid_timestamp": "Ogiltig tidsstämpel.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Svarsvalideringen misslyckades: {errors}.", "admin_and_system.test_harness_disabled": "Testverktyget är inaktiverat.", "admin_and_system.test_harness_forbidden": "Testverktyget är inte tillåtet.", - "admin_and_system.unknown_suspicious_flag": "Okänd misstänkt flagga.", "admin_and_system.update_failed": "Det gick inte att uppdatera resursen. Försök igen.", "admin_and_system.user_must_be_bot_for_system_user": "Användaren måste vara en bot för att markeras som en systemanvändare.", "age_verification.already_verified": "Du har redan slutfört åldersverifieringen.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Denna användare är inte i kanalen.", "permissions.user_not_in_voice": "Den här användaren deltar inte i något röstsamtal.", "permissions.user_owns_guilds": "Den här användaren äger communities.", - "phone.add_not_eligible": "Du får inte lägga till ett telefonnummer på ditt konto.", - "phone.country_not_supported": "Vi skickar inte verifieringssms till det här landet. Använd ett mobilnummer från ett annat land, eller mejla support@fluxer.app så granskar en person ditt konto.", - "phone.inbound_verification_required": "Det här numret verifieras genom att du skickar ett sms till oss, inte genom att vi skickar ett till dig. Starta telefonverifieringen igen för att få koden och numret du ska skicka den till.", - "phone.invalid_number": "Ogiltigt telefonnummer.", - "phone.lookup_unavailable": "Vår kontroll av telefonnummer ligger nere just nu, så vi avbröt innan din kod skickades. Problemet ligger hos oss, inte hos ditt nummer. Vänta några minuter och försök igen med samma nummer.", - "phone.number_already_used": "Telefonnumret används redan.", - "phone.number_format_required": "Telefonnumret måste vara i E.164-format (till exempel +1234567890).", - "phone.number_not_in_service": "Din operatör uppger att det här numret inte är aktivt. Kontrollera numret och försök igen, eller mejla support@fluxer.app om det stämmer.", - "phone.number_not_mobile": "Det här är inte ett mobilnummer, så det kan inte ta emot vårt sms. Använd ett mobilnummer, eller mejla support@fluxer.app om du anser att bedömningen är felaktig.", - "phone.verification_code_invalid": "Ogiltig telefonverifieringskod.", - "phone.verification_needs_review": "Vi kunde inte verifiera det här numret automatiskt. Mejla support@fluxer.app så granskar en person ditt konto.", - "phone.verification_required": "Telefonverifiering krävs.", "premium_and_plans.animated_avatars_require_premium": "Animerade avatarer kräver Premium.", "premium_and_plans.banners_require_premium": "Bannrar kräver Premium.", "premium_and_plans.bio_requires_premium_for_length": "En presentation som är längre än {maxLength} tecken kräver Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Du måste vänta innan du kan skicka ett nytt mejl för att godkänna IP-adressen.", "rate_limits.ip_authorization_resend_limit_exceeded": "Gränsen för att skicka nya mejl för godkännande av IP-adressen har överskridits.", "rate_limits.message_crosspost_rate_limited": "Den här kanalen har nått sin publiceringsgräns. Den kan publicera 10 meddelanden i rad och därefter ett till var 6:e minut.", - "rate_limits.phone_rate_limit_exceeded": "Gränsen för telefonförfrågningar har överskridits.", "rate_limits.pronouns_changed_too_often": "Du har ändrat dina pronomen för ofta den senaste tiden. Försök igen om {minutes, plural, one {# minut} other {# minuter}}.", "rate_limits.published_message_edit_rate_limited": "Det här publicerade meddelandet har nått sin redigeringsgräns. Det kan redigeras 3 gånger i rad och därefter en gång till var 20:e minut.", "rate_limits.rate_limited": "Du har nått maxgränsen för förfrågningar.", diff --git a/packages/errors/src/i18n/weblate/locales/th.json b/packages/errors/src/i18n/weblate/locales/th.json index 184fda513..57763682f 100644 --- a/packages/errors/src/i18n/weblate/locales/th.json +++ b/packages/errors/src/i18n/weblate/locales/th.json @@ -3,9 +3,7 @@ "account.email_verification_required": "ต้องยืนยันอีเมลสำหรับการดำเนินการนี้", "account.guild_verification_required": "ต้องมีการยืนยันคอมมูนิตี้", "account.ip_authorization_required": "ต้องมีการอนุญาต IP", - "account.locked_suspicious_activity": "บัญชีของคุณถูกล็อกเนื่องจากกิจกรรมที่น่าสงสัย", - "account.phone_gate_escape_unavailable": "บัญชีนี้ไม่สามารถเลื่อนการยืนยันหมายเลขโทรศัพท์ออกไปได้", - "account.phone_required_for_guild": "คุณต้องเพิ่มหมายเลขโทรศัพท์เพื่อส่งข้อความในคอมมูนิตี้นี้", + "account.limited": "บัญชีของคุณถูกจำกัด โปรดตรวจสอบอีเมลเพื่อดูวิธียกเลิกการจำกัด", "account.sensitive_content_filter_age_restricted": "ตัวกรองเนื้อหาที่ละเอียดอ่อนนี้ไม่พร้อมใช้งานสำหรับกลุ่มอายุของคุณ", "account.session_timeout": "เซสชันหมดเวลา โปรดรีเฟรชหน้าและเข้าสู่ระบบอีกครั้ง", "account.session_token_mismatch": "โทเค็นเซสชันไม่ตรงกัน", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "เนื้อหาฟอร์มไม่ถูกต้อง", "admin_and_system.invalid_format": "ค่าที่ให้มาอยู่ในรูปแบบที่ไม่ถูกต้อง", "admin_and_system.invalid_integer_format": "รูปแบบจำนวนเต็มไม่ถูกต้อง", - "admin_and_system.invalid_suspicious_flags_format": "รูปแบบแฟล็กที่น่าสงสัยไม่ถูกต้อง", "admin_and_system.invalid_system_flag": "แฟล็กระบบไม่ถูกต้อง", "admin_and_system.invalid_timeout_value": "ค่าไทม์เอาต์ไม่ถูกต้อง", "admin_and_system.invalid_timestamp": "การประทับเวลาไม่ถูกต้อง", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "การตรวจสอบการตอบกลับล้มเหลว: {errors}", "admin_and_system.test_harness_disabled": "ปิดใช้งาน test harness แล้ว", "admin_and_system.test_harness_forbidden": "ไม่อนุญาตให้ใช้ test harness", - "admin_and_system.unknown_suspicious_flag": "ไม่รู้จักแฟล็กที่น่าสงสัยนี้", "admin_and_system.update_failed": "ไม่สามารถอัปเดตทรัพยากรได้ โปรดลองอีกครั้ง", "admin_and_system.user_must_be_bot_for_system_user": "ผู้ใช้ต้องเป็นบอทจึงจะสามารถระบุว่าเป็นผู้ใช้ระบบได้", "age_verification.already_verified": "คุณยืนยันอายุเรียบร้อยแล้ว", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "ผู้ใช้รายนี้ไม่ได้อยู่ในช่อง", "permissions.user_not_in_voice": "ผู้ใช้รายนี้ไม่ได้อยู่ในช่องเสียง", "permissions.user_owns_guilds": "ผู้ใช้รายนี้เป็นเจ้าของคอมมูนิตี้", - "phone.add_not_eligible": "คุณไม่มีสิทธิ์เพิ่มหมายเลขโทรศัพท์ในบัญชีของคุณ", - "phone.country_not_supported": "เราไม่ส่งข้อความยืนยันไปยังประเทศนี้ โปรดใช้หมายเลขมือถือของประเทศอื่น หรือส่งอีเมลถึง support@fluxer.app แล้วจะมีเจ้าหน้าที่ตรวจสอบบัญชีของคุณ", - "phone.inbound_verification_required": "หมายเลขนี้ยืนยันด้วยการที่คุณส่งข้อความมาหาเรา ไม่ใช่เราส่งข้อความไปหาคุณ โปรดเริ่มการยืนยันโทรศัพท์อีกครั้งเพื่อรับรหัสและหมายเลขที่ต้องส่งข้อความไป", - "phone.invalid_number": "หมายเลขโทรศัพท์ไม่ถูกต้อง", - "phone.lookup_unavailable": "ระบบตรวจสอบหมายเลขโทรศัพท์ของเราใช้งานไม่ได้ในขณะนี้ เราจึงหยุดก่อนที่จะส่งรหัสให้คุณ ปัญหานี้อยู่ที่ฝั่งเรา ไม่ใช่ที่หมายเลขของคุณ โปรดรอสองสามนาทีแล้วลองหมายเลขเดิมอีกครั้ง", - "phone.number_already_used": "หมายเลขโทรศัพท์นี้ถูกใช้งานอยู่แล้ว", - "phone.number_format_required": "หมายเลขโทรศัพท์ต้องอยู่ในรูปแบบ E.164 (เช่น +1234567890)", - "phone.number_not_in_service": "ผู้ให้บริการเครือข่ายของคุณแจ้งว่าหมายเลขนี้ไม่ได้เปิดใช้งาน โปรดตรวจสอบหมายเลขแล้วลองอีกครั้ง หรือส่งอีเมลถึง support@fluxer.app หากหมายเลขถูกต้อง", - "phone.number_not_mobile": "นี่ไม่ใช่หมายเลขมือถือ จึงรับข้อความของเราไม่ได้ โปรดใช้หมายเลขมือถือ หรือส่งอีเมลถึง support@fluxer.app หากคุณคิดว่าข้อมูลนี้ไม่ถูกต้อง", - "phone.verification_code_invalid": "รหัสยืนยันโทรศัพท์ไม่ถูกต้อง", - "phone.verification_needs_review": "เราไม่สามารถยืนยันหมายเลขนี้โดยอัตโนมัติได้ โปรดส่งอีเมลถึง support@fluxer.app แล้วจะมีเจ้าหน้าที่ตรวจสอบบัญชีของคุณ", - "phone.verification_required": "จำเป็นต้องมีการยืนยันโทรศัพท์", "premium_and_plans.animated_avatars_require_premium": "รูปโปรไฟล์แบบเคลื่อนไหวต้องใช้ Premium", "premium_and_plans.banners_require_premium": "แบนเนอร์ต้องใช้ Premium", "premium_and_plans.bio_requires_premium_for_length": "ประวัติส่วนตัวที่ยาวเกิน {maxLength} ตัวอักษรต้องใช้ Premium", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "การส่งการอนุญาต IP อีกครั้งยังอยู่ในช่วงคูลดาวน์", "rate_limits.ip_authorization_resend_limit_exceeded": "เกินขีดจำกัดการส่งการอนุญาต IP อีกครั้ง", "rate_limits.message_crosspost_rate_limited": "ช่องนี้ถึงขีดจำกัดการเผยแพร่แล้ว สามารถเผยแพร่ได้ 10 ข้อความติดต่อกัน จากนั้นเพิ่มได้อีกหนึ่งข้อความทุก 6 นาที", - "rate_limits.phone_rate_limit_exceeded": "เกินขีดจำกัดคำขอเกี่ยวกับหมายเลขโทรศัพท์", "rate_limits.pronouns_changed_too_often": "คุณเปลี่ยนคำสรรพนามบ่อยเกินไปเมื่อเร็ว ๆ นี้ โปรดลองอีกครั้งใน {minutes} {minutes, plural, other {นาที}}", "rate_limits.published_message_edit_rate_limited": "ข้อความที่เผยแพร่นี้ถึงขีดจำกัดการแก้ไขแล้ว สามารถแก้ไขได้ 3 ครั้งติดต่อกัน จากนั้นแก้ไขได้อีกหนึ่งครั้งทุก 20 นาที", "rate_limits.rate_limited": "คุณถูกจำกัดอัตราการใช้งาน", diff --git a/packages/errors/src/i18n/weblate/locales/tr.json b/packages/errors/src/i18n/weblate/locales/tr.json index 2574528d4..4f4e1ed26 100644 --- a/packages/errors/src/i18n/weblate/locales/tr.json +++ b/packages/errors/src/i18n/weblate/locales/tr.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Bu işlem için e-posta doğrulaması gerekiyor.", "account.guild_verification_required": "Topluluk doğrulaması gerekli.", "account.ip_authorization_required": "IP yetkilendirmesi gerekli.", - "account.locked_suspicious_activity": "Hesabın şüpheli etkinlik nedeniyle kilitlendi.", - "account.phone_gate_escape_unavailable": "Telefon doğrulama kontrolü bu hesap için ertelenemez.", - "account.phone_required_for_guild": "Bu toplulukta mesaj göndermek için bir telefon numarası eklemen gerekiyor.", + "account.limited": "Hesabın kısıtlandı. Kısıtlamayı nasıl kaldıracağını öğrenmek için e-postanı kontrol et.", "account.sensitive_content_filter_age_restricted": "Bu hassas içerik filtresi yaş grubun için kullanılamıyor.", "account.session_timeout": "Oturum zaman aşımına uğradı. Sayfayı yenile ve tekrar giriş yap.", "account.session_token_mismatch": "Oturum belirteci uyuşmuyor.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Geçersiz form gövdesi.", "admin_and_system.invalid_format": "Sağlanan değer geçersiz biçimde.", "admin_and_system.invalid_integer_format": "Geçersiz tam sayı biçimi.", - "admin_and_system.invalid_suspicious_flags_format": "Geçersiz şüpheli bayraklar biçimi.", "admin_and_system.invalid_system_flag": "Geçersiz sistem bayrağı.", "admin_and_system.invalid_timeout_value": "Geçersiz zaman aşımı değeri.", "admin_and_system.invalid_timestamp": "Geçersiz zaman damgası.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Yanıt doğrulanamadı: {errors}.", "admin_and_system.test_harness_disabled": "Test altyapısı devre dışı.", "admin_and_system.test_harness_forbidden": "Test altyapısı yasak.", - "admin_and_system.unknown_suspicious_flag": "Bilinmeyen şüpheli bayrak.", "admin_and_system.update_failed": "Kaynağı güncelleyemedik. Tekrar dene.", "admin_and_system.user_must_be_bot_for_system_user": "Kullanıcı, sistem kullanıcısı olarak işaretlenmek için bot olmalı.", "age_verification.already_verified": "Yaş doğrulamasını zaten tamamladın.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Bu kullanıcı kanalda değil.", "permissions.user_not_in_voice": "Bu kullanıcı sesli kanalda değil.", "permissions.user_owns_guilds": "Bu kullanıcının sahip olduğu topluluklar var.", - "phone.add_not_eligible": "Hesabına telefon numarası eklemeye uygun değilsin.", - "phone.country_not_supported": "Bu ülkeye doğrulama SMS'i göndermiyoruz. Başka bir ülkeye ait mobil numara kullan ya da support@fluxer.app adresine e-posta gönder, bir kişi hesabını inceleyecek.", - "phone.inbound_verification_required": "Bu numara, bizim sana SMS göndermemizle değil, senin bize SMS göndermenle doğrulanıyor. Kodu ve SMS göndereceğin numarayı almak için telefon doğrulamasını yeniden başlat.", - "phone.invalid_number": "Geçersiz telefon numarası.", - "phone.lookup_unavailable": "Telefon numarası kontrolümüz şu anda çalışmıyor, bu yüzden kodunu göndermeden önce durduk. Bu bizim hatamız, numaranın değil. Birkaç dakika bekle ve aynı numarayı tekrar dene.", - "phone.number_already_used": "Telefon numarası zaten kullanımda.", - "phone.number_format_required": "Telefon numarası E.164 biçiminde olmalı (örneğin, +1234567890).", - "phone.number_not_in_service": "Operatörün bu numaranın hizmette olmadığını bildiriyor. Numarayı kontrol et ve tekrar dene ya da numara doğruysa support@fluxer.app adresine e-posta gönder.", - "phone.number_not_mobile": "Bu bir mobil numara değil, bu yüzden SMS'imizi alamaz. Mobil bir numara kullan ya da bunun yanlış olduğunu düşünüyorsan support@fluxer.app adresine e-posta gönder.", - "phone.verification_code_invalid": "Geçersiz telefon doğrulama kodu.", - "phone.verification_needs_review": "Bu numarayı otomatik olarak doğrulayamadık. Bir kişinin hesabını incelemesi için support@fluxer.app adresine e-posta gönder.", - "phone.verification_required": "Telefon doğrulaması gerekli.", "premium_and_plans.animated_avatars_require_premium": "Hareketli avatarlar için Premium gerekli.", "premium_and_plans.banners_require_premium": "Banner'lar için Premium gerekli.", "premium_and_plans.bio_requires_premium_for_length": "Biyografin {maxLength} karakterden uzunsa Premium gerekli.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "IP yetkilendirme yeniden gönderme bekleme süresinde.", "rate_limits.ip_authorization_resend_limit_exceeded": "IP yetkilendirme yeniden gönderme limiti aşıldı.", "rate_limits.message_crosspost_rate_limited": "Bu kanal yayınlama sınırına ulaştı. Arka arkaya 10 mesaj yayınlayabilir, ardından her 6 dakikada bir tane daha.", - "rate_limits.phone_rate_limit_exceeded": "Telefon hız sınırı aşıldı.", "rate_limits.pronouns_changed_too_often": "Son zamanlarda zamirlerini çok sık değiştirdin. Lütfen {minutes, plural, one {# dakika} other {# dakika}} sonra tekrar dene.", "rate_limits.published_message_edit_rate_limited": "Bu yayınlanmış mesaj düzenleme sınırına ulaştı. Arka arkaya 3 kez düzenlenebilir, ardından her 20 dakikada bir kez daha.", "rate_limits.rate_limited": "Hız sınırlamasına takıldın.", diff --git a/packages/errors/src/i18n/weblate/locales/uk.json b/packages/errors/src/i18n/weblate/locales/uk.json index 1ba955310..565d2473a 100644 --- a/packages/errors/src/i18n/weblate/locales/uk.json +++ b/packages/errors/src/i18n/weblate/locales/uk.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Для цієї дії потрібно підтвердити електронну адресу.", "account.guild_verification_required": "Потрібно пройти перевірку спільноти.", "account.ip_authorization_required": "Потрібне підтвердження IP-адреси.", - "account.locked_suspicious_activity": "Твій акаунт заблоковано через підозрілу активність.", - "account.phone_gate_escape_unavailable": "Відкласти підтвердження телефону для цього акаунта не можна.", - "account.phone_required_for_guild": "Щоб надсилати повідомлення в цій спільноті, тобі потрібно додати номер телефону.", + "account.limited": "Твій акаунт обмежено. Перевір електронну пошту, щоб дізнатися, як зняти обмеження.", "account.sensitive_content_filter_age_restricted": "Цей фільтр чутливого вмісту недоступний для твоєї вікової групи.", "account.session_timeout": "Час сесії вичерпано. Онови сторінку та увійди знову.", "account.session_token_mismatch": "Токен сесії не збігається.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Недійсний вміст форми.", "admin_and_system.invalid_format": "Надане значення має недійсний формат.", "admin_and_system.invalid_integer_format": "Недійсний формат цілого числа.", - "admin_and_system.invalid_suspicious_flags_format": "Недійсний формат підозрілих прапорців.", "admin_and_system.invalid_system_flag": "Недійсний системний прапорець.", "admin_and_system.invalid_timeout_value": "Недійсне значення тайм-ауту.", "admin_and_system.invalid_timestamp": "Недійсна мітка часу.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Не вдалося перевірити відповідь: {errors}.", "admin_and_system.test_harness_disabled": "Тестову систему вимкнено.", "admin_and_system.test_harness_forbidden": "Тестову систему заборонено.", - "admin_and_system.unknown_suspicious_flag": "Невідомий підозрілий прапорець.", "admin_and_system.update_failed": "Не вдалося оновити ресурс. Спробуй ще раз.", "admin_and_system.user_must_be_bot_for_system_user": "Користувач має бути ботом, щоб його можна було позначити як системного користувача.", "age_verification.already_verified": "Перевірку віку вже пройдено.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Цього користувача немає в каналі.", "permissions.user_not_in_voice": "Цього користувача немає в голосовому каналі.", "permissions.user_owns_guilds": "Цей користувач є власником спільнот.", - "phone.add_not_eligible": "Ти не можеш додати номер телефону до свого акаунта.", - "phone.country_not_supported": "Ми не надсилаємо SMS з кодом підтвердження в цю країну. Використай мобільний номер іншої країни або напиши на support@fluxer.app, і твій акаунт перевірить людина.", - "phone.inbound_verification_required": "Цей номер підтверджується так: SMS надсилаєш ти нам, а не ми тобі. Почни підтвердження телефону заново, щоб отримати код і номер, на який його треба надіслати.", - "phone.invalid_number": "Неправильний номер телефону.", - "phone.lookup_unavailable": "Наша перевірка номерів зараз не працює, тому ми зупинилися і не надіслали твій код. Це наша проблема, а не твого номера. Зачекай кілька хвилин і спробуй ще раз із тим самим номером.", - "phone.number_already_used": "Номер телефону вже використовується.", - "phone.number_format_required": "Номер телефону має бути у форматі E.164 (наприклад, +1234567890).", - "phone.number_not_in_service": "Твій оператор повідомляє, що цей номер не обслуговується. Перевір номер і спробуй ще раз або напиши на support@fluxer.app, якщо номер правильний.", - "phone.number_not_mobile": "Це не мобільний номер, тому наше SMS на нього не надійде. Використай мобільний номер або напиши на support@fluxer.app, якщо вважаєш, що це помилка.", - "phone.verification_code_invalid": "Неправильний код підтвердження телефону.", - "phone.verification_needs_review": "Нам не вдалося підтвердити цей номер автоматично. Напиши на support@fluxer.app, і твій акаунт перевірить людина.", - "phone.verification_required": "Потрібне підтвердження телефону.", "premium_and_plans.animated_avatars_require_premium": "Анімовані аватари потребують Преміум-підписки.", "premium_and_plans.banners_require_premium": "Банери потребують Преміум-підписки.", "premium_and_plans.bio_requires_premium_for_length": "Біо, що перевищує {maxLength} символів, потребує Преміум-підписки.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Повторне надсилання авторизації IP тимчасово недоступне.", "rate_limits.ip_authorization_resend_limit_exceeded": "Перевищено ліміт повторного надсилання авторизації IP.", "rate_limits.message_crosspost_rate_limited": "Цей канал досяг ліміту публікацій. Він може опублікувати 10 повідомлень поспіль, а потім ще одне кожні 6 хвилин.", - "rate_limits.phone_rate_limit_exceeded": "Перевищено ліміт запитів на підтвердження телефону.", "rate_limits.pronouns_changed_too_often": "Останнім часом ти занадто часто змінюєш займенники. Спробуй ще раз за {minutes} {minutes, plural, one {хвилину} few {хвилини} many {хвилин} other {хвилини}}.", "rate_limits.published_message_edit_rate_limited": "Це опубліковане повідомлення досягло ліміту редагувань. Його можна відредагувати 3 рази поспіль, а потім ще раз кожні 20 хвилин.", "rate_limits.rate_limited": "Застосовано обмеження частоти запитів.", diff --git a/packages/errors/src/i18n/weblate/locales/vi.json b/packages/errors/src/i18n/weblate/locales/vi.json index 0f083f0ea..88afa111f 100644 --- a/packages/errors/src/i18n/weblate/locales/vi.json +++ b/packages/errors/src/i18n/weblate/locales/vi.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Cần xác minh email cho hành động này.", "account.guild_verification_required": "Yêu cầu xác minh cộng đồng.", "account.ip_authorization_required": "Yêu cầu ủy quyền IP.", - "account.locked_suspicious_activity": "Tài khoản của bạn đã bị khóa do hoạt động đáng ngờ.", - "account.phone_gate_escape_unavailable": "Không thể tạm hoãn việc xác minh điện thoại cho tài khoản này.", - "account.phone_required_for_guild": "Bạn cần thêm số điện thoại để gửi tin nhắn trong cộng đồng này.", + "account.limited": "Tài khoản của bạn đang bị giới hạn. Hãy kiểm tra email để biết cách gỡ giới hạn.", "account.sensitive_content_filter_age_restricted": "Bộ lọc nội dung nhạy cảm này không khả dụng cho độ tuổi của bạn.", "account.session_timeout": "Phiên đã hết hạn. Hãy làm mới trang và đăng nhập lại.", "account.session_token_mismatch": "Token phiên không khớp.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Nội dung biểu mẫu không hợp lệ.", "admin_and_system.invalid_format": "Giá trị được cung cấp có định dạng không hợp lệ.", "admin_and_system.invalid_integer_format": "Định dạng số nguyên không hợp lệ.", - "admin_and_system.invalid_suspicious_flags_format": "Định dạng cờ đáng ngờ không hợp lệ.", "admin_and_system.invalid_system_flag": "Cờ hệ thống không hợp lệ.", "admin_and_system.invalid_timeout_value": "Giá trị thời gian tạm khóa không hợp lệ.", "admin_and_system.invalid_timestamp": "Mốc thời gian không hợp lệ.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Xác thực phản hồi không thành công: {errors}.", "admin_and_system.test_harness_disabled": "Tính năng test harness đã bị tắt.", "admin_and_system.test_harness_forbidden": "Tính năng test harness bị cấm.", - "admin_and_system.unknown_suspicious_flag": "Cờ đáng ngờ không xác định.", "admin_and_system.update_failed": "Không thể cập nhật tài nguyên. Vui lòng thử lại.", "admin_and_system.user_must_be_bot_for_system_user": "Người dùng phải là bot mới được đánh dấu là người dùng hệ thống.", "age_verification.already_verified": "Bạn đã hoàn tất xác minh tuổi.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "Người dùng này không ở trong kênh.", "permissions.user_not_in_voice": "Người dùng này không ở trong kênh thoại.", "permissions.user_owns_guilds": "Người dùng này sở hữu các cộng đồng.", - "phone.add_not_eligible": "Bạn không đủ điều kiện để thêm số điện thoại vào tài khoản của mình.", - "phone.country_not_supported": "Chúng tôi không gửi tin nhắn xác minh đến quốc gia này. Hãy dùng số di động của một quốc gia khác, hoặc gửi email đến support@fluxer.app để một nhân viên xem xét tài khoản của bạn.", - "phone.inbound_verification_required": "Số này được xác minh bằng cách bạn nhắn tin cho chúng tôi, chứ không phải chúng tôi nhắn tin cho bạn. Hãy bắt đầu lại quá trình xác minh điện thoại để nhận mã và số cần nhắn tin đến.", - "phone.invalid_number": "Số điện thoại không hợp lệ.", - "phone.lookup_unavailable": "Hệ thống kiểm tra số điện thoại của chúng tôi đang gặp sự cố, nên chúng tôi đã dừng lại trước khi gửi mã cho bạn. Lỗi này nằm ở phía chúng tôi, không phải ở số của bạn. Hãy đợi vài phút rồi thử lại chính số đó.", - "phone.number_already_used": "Số điện thoại đã được sử dụng.", - "phone.number_format_required": "Số điện thoại phải ở định dạng E.164 (ví dụ: +1234567890).", - "phone.number_not_in_service": "Nhà mạng của bạn cho biết số này không còn hoạt động. Hãy kiểm tra lại số và thử lần nữa, hoặc gửi email đến support@fluxer.app nếu số đó đúng.", - "phone.number_not_mobile": "Đây không phải số di động nên không thể nhận tin nhắn của chúng tôi. Hãy dùng một số di động, hoặc gửi email đến support@fluxer.app nếu bạn cho rằng điều này chưa đúng.", - "phone.verification_code_invalid": "Mã xác minh điện thoại không hợp lệ.", - "phone.verification_needs_review": "Chúng tôi không thể xác minh số này một cách tự động. Hãy gửi email đến support@fluxer.app để một nhân viên xem xét tài khoản của bạn.", - "phone.verification_required": "Yêu cầu xác minh số điện thoại.", "premium_and_plans.animated_avatars_require_premium": "Ảnh đại diện động yêu cầu gói Premium.", "premium_and_plans.banners_require_premium": "Ảnh bìa yêu cầu gói Premium.", "premium_and_plans.bio_requires_premium_for_length": "Tiểu sử dài hơn {maxLength} ký tự yêu cầu gói Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "Gửi lại ủy quyền IP đang trong thời gian chờ.", "rate_limits.ip_authorization_resend_limit_exceeded": "Đã vượt quá giới hạn gửi lại ủy quyền IP.", "rate_limits.message_crosspost_rate_limited": "Kênh này đã đạt giới hạn xuất bản. Kênh có thể xuất bản 10 tin nhắn liên tiếp, sau đó thêm một tin mỗi 6 phút.", - "rate_limits.phone_rate_limit_exceeded": "Đã vượt quá giới hạn tốc độ đối với số điện thoại.", "rate_limits.pronouns_changed_too_often": "Bạn đã thay đổi đại từ nhân xưng quá thường xuyên gần đây. Vui lòng thử lại sau {minutes} {minutes, plural, other {phút}}.", "rate_limits.published_message_edit_rate_limited": "Tin nhắn đã xuất bản này đã đạt giới hạn chỉnh sửa. Tin nhắn có thể được chỉnh sửa 3 lần liên tiếp, sau đó thêm một lần mỗi 20 phút.", "rate_limits.rate_limited": "Bạn đang bị giới hạn tốc độ.", diff --git a/packages/errors/src/i18n/weblate/locales/zh-CN.json b/packages/errors/src/i18n/weblate/locales/zh-CN.json index 297ba05be..aa9ce2980 100644 --- a/packages/errors/src/i18n/weblate/locales/zh-CN.json +++ b/packages/errors/src/i18n/weblate/locales/zh-CN.json @@ -3,9 +3,7 @@ "account.email_verification_required": "此操作需要验证邮箱。", "account.guild_verification_required": "需要社区验证。", "account.ip_authorization_required": "需要 IP 授权。", - "account.locked_suspicious_activity": "你的账号因可疑活动已被锁定。", - "account.phone_gate_escape_unavailable": "此账号无法暂缓手机验证。", - "account.phone_required_for_guild": "你需要添加手机号才能在此社区发送消息。", + "account.limited": "你的账号已被限制。请查看你的邮箱,了解如何解除限制。", "account.sensitive_content_filter_age_restricted": "此敏感内容过滤器不适用于你的年龄段。", "account.session_timeout": "会话超时。刷新页面后重新登录。", "account.session_token_mismatch": "会话令牌不匹配。", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "表单正文无效。", "admin_and_system.invalid_format": "提供的值格式无效。", "admin_and_system.invalid_integer_format": "整数格式无效。", - "admin_and_system.invalid_suspicious_flags_format": "可疑标志格式无效。", "admin_and_system.invalid_system_flag": "系统标志无效。", "admin_and_system.invalid_timeout_value": "超时值无效。", "admin_and_system.invalid_timestamp": "时间戳无效。", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "响应验证失败:{errors}。", "admin_and_system.test_harness_disabled": "测试工具已禁用。", "admin_and_system.test_harness_forbidden": "禁止使用测试工具。", - "admin_and_system.unknown_suspicious_flag": "未知可疑标志。", "admin_and_system.update_failed": "无法更新资源。请重试。", "admin_and_system.user_must_be_bot_for_system_user": "用户必须是机器人才能被标记为系统用户。", "age_verification.already_verified": "你已完成年龄验证。", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "此用户不在频道中。", "permissions.user_not_in_voice": "此用户不在语音频道中。", "permissions.user_owns_guilds": "此用户拥有社区。", - "phone.add_not_eligible": "你的账号不符合添加手机号码的条件。", - "phone.country_not_supported": "我们不向该国家/地区发送验证短信。请使用其他国家/地区的手机号码,或发送邮件至 support@fluxer.app,会有工作人员审核你的账号。", - "phone.inbound_verification_required": "这个号码的验证方式是由你给我们发短信,而不是我们给你发短信。请重新开始手机验证,我们会给出验证码和接收短信的号码。", - "phone.invalid_number": "手机号码无效。", - "phone.lookup_unavailable": "我们的手机号码检查服务目前中断,所以在发送验证码之前就停下了。这是我们的问题,不是你号码的问题。请等几分钟后用同一个号码重试。", - "phone.number_already_used": "该手机号已被使用。", - "phone.number_format_required": "手机号码必须为 E.164 格式(例如,+1234567890)。", - "phone.number_not_in_service": "运营商反馈这个号码已停机或不在使用中。请检查号码后重试,如果号码没错,请发送邮件至 support@fluxer.app。", - "phone.number_not_mobile": "这不是手机号码,无法接收我们的短信。请使用手机号码,如果你认为这是误判,请发送邮件至 support@fluxer.app。", - "phone.verification_code_invalid": "无效的手机验证码。", - "phone.verification_needs_review": "我们无法自动验证这个号码。请发送邮件至 support@fluxer.app,会有工作人员审核你的账号。", - "phone.verification_required": "需要手机号码验证。", "premium_and_plans.animated_avatars_require_premium": "动态头像需要高级会员。", "premium_and_plans.banners_require_premium": "横幅需要高级会员。", "premium_and_plans.bio_requires_premium_for_length": "个人简介超过 {maxLength} 个字符需要高级会员。", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "IP 授权重新发送冷却中。", "rate_limits.ip_authorization_resend_limit_exceeded": "IP 授权重新发送已达上限。", "rate_limits.message_crosspost_rate_limited": "此频道已达到发布上限。它可以连续发布 10 条消息,之后每 6 分钟可再发布 1 条。", - "rate_limits.phone_rate_limit_exceeded": "手机号请求频率过高。", "rate_limits.pronouns_changed_too_often": "你最近修改人称代词过于频繁。请在 {minutes, plural, other {# 分钟}}后重试。", "rate_limits.published_message_edit_rate_limited": "此已发布消息已达到编辑上限。它可以连续编辑 3 次,之后每 20 分钟可再编辑 1 次。", "rate_limits.rate_limited": "你的操作频率受限。", diff --git a/packages/errors/src/i18n/weblate/locales/zh-TW.json b/packages/errors/src/i18n/weblate/locales/zh-TW.json index 3a7b8aa83..e00dbcbaf 100644 --- a/packages/errors/src/i18n/weblate/locales/zh-TW.json +++ b/packages/errors/src/i18n/weblate/locales/zh-TW.json @@ -3,9 +3,7 @@ "account.email_verification_required": "此操作需要驗證電子郵件。", "account.guild_verification_required": "需要社群驗證。", "account.ip_authorization_required": "需要 IP 授權。", - "account.locked_suspicious_activity": "你的帳號因可疑活動遭到鎖定。", - "account.phone_gate_escape_unavailable": "此帳號無法暫緩電話驗證。", - "account.phone_required_for_guild": "你需要新增電話號碼才能在這個社群傳送訊息。", + "account.limited": "你的帳號已受到限制。請查看你的電子郵件,了解如何解除限制。", "account.sensitive_content_filter_age_restricted": "這個敏感內容篩選器不適用於你的年齡層。", "account.session_timeout": "工作階段逾時。請重新整理頁面並重新登入。", "account.session_token_mismatch": "工作階段權杖不符。", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "表單內容無效。", "admin_and_system.invalid_format": "提供的值格式無效。", "admin_and_system.invalid_integer_format": "整數格式無效。", - "admin_and_system.invalid_suspicious_flags_format": "可疑旗標格式無效。", "admin_and_system.invalid_system_flag": "系統旗標無效。", "admin_and_system.invalid_timeout_value": "逾時值無效。", "admin_and_system.invalid_timestamp": "時間戳記無效。", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "回應驗證失敗:{errors}。", "admin_and_system.test_harness_disabled": "測試工具已停用。", "admin_and_system.test_harness_forbidden": "禁止使用測試工具。", - "admin_and_system.unknown_suspicious_flag": "未知的可疑旗標。", "admin_and_system.update_failed": "我們無法更新資源。請再試一次。", "admin_and_system.user_must_be_bot_for_system_user": "使用者必須是機器人才能標記為系統使用者。", "age_verification.already_verified": "你已完成年齡驗證。", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "此使用者不在頻道中。", "permissions.user_not_in_voice": "此使用者不在語音頻道中。", "permissions.user_owns_guilds": "此使用者擁有社群。", - "phone.add_not_eligible": "你的帳號無法新增電話號碼。", - "phone.country_not_supported": "我們不會發送驗證簡訊到這個國家/地區。請使用其他國家/地區的手機號碼,或寄信到 support@fluxer.app,會有專人審核你的帳號。", - "phone.inbound_verification_required": "這個號碼的驗證方式是由你傳簡訊給我們,而不是我們傳簡訊給你。請重新開始電話驗證,我們會提供驗證碼和要傳送的號碼。", - "phone.invalid_number": "無效的電話號碼。", - "phone.lookup_unavailable": "我們的電話號碼檢查服務目前中斷,所以我們在傳送驗證碼前就先停下來了。這是我們的問題,不是你號碼的問題。請等幾分鐘後用同一個號碼再試一次。", - "phone.number_already_used": "電話號碼已被使用。", - "phone.number_format_required": "電話號碼必須是 E.164 格式(例如:+1234567890)。", - "phone.number_not_in_service": "電信業者表示這個號碼是空號。請檢查號碼後再試一次,如果號碼正確,請寄信到 support@fluxer.app。", - "phone.number_not_mobile": "這不是手機號碼,無法接收我們的簡訊。請使用手機號碼,如果你認為這是誤判,請寄信到 support@fluxer.app。", - "phone.verification_code_invalid": "無效的電話驗證碼。", - "phone.verification_needs_review": "我們無法自動驗證這個號碼。請寄信到 support@fluxer.app,會有專人審核你的帳號。", - "phone.verification_required": "需要電話驗證。", "premium_and_plans.animated_avatars_require_premium": "動態頭像需要進階方案。", "premium_and_plans.banners_require_premium": "橫幅需要進階方案。", "premium_and_plans.bio_requires_premium_for_length": "超過 {maxLength} 個字元的個人簡介需要進階方案。", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "IP 授權重新傳送正在冷卻中。", "rate_limits.ip_authorization_resend_limit_exceeded": "已超過 IP 授權重新傳送次數限制。", "rate_limits.message_crosspost_rate_limited": "此頻道已達發布上限。它可以連續發布 10 則訊息,之後每 6 分鐘可再發布 1 則。", - "rate_limits.phone_rate_limit_exceeded": "已超過電話頻率限制。", "rate_limits.pronouns_changed_too_often": "你最近太常變更代名詞。請在 {minutes, plural, other {# 分鐘}}後再試一次。", "rate_limits.published_message_edit_rate_limited": "此已發布訊息已達編輯上限。它可以連續編輯 3 次,之後每 20 分鐘可再編輯 1 次。", "rate_limits.rate_limited": "你受到頻率限制。", diff --git a/packages/errors/src/i18n/weblate/messages.json b/packages/errors/src/i18n/weblate/messages.json index 6f8ab339a..05183023f 100644 --- a/packages/errors/src/i18n/weblate/messages.json +++ b/packages/errors/src/i18n/weblate/messages.json @@ -3,9 +3,7 @@ "account.email_verification_required": "Email verification is required for this action.", "account.guild_verification_required": "Community verification is required.", "account.ip_authorization_required": "IP authorization is required.", - "account.locked_suspicious_activity": "Your account is locked due to suspicious activity.", - "account.phone_gate_escape_unavailable": "This account cannot postpone the phone verification check.", - "account.phone_required_for_guild": "You need to add a phone number to send messages in this community.", + "account.limited": "Your account is limited. Check your email for how to lift it.", "account.sensitive_content_filter_age_restricted": "This sensitive content filter isn't available for your age group.", "account.session_timeout": "Session timed out. Refresh the page and log in again.", "account.session_token_mismatch": "Session token mismatch.", @@ -28,7 +26,6 @@ "admin_and_system.invalid_form_body": "Invalid form body.", "admin_and_system.invalid_format": "The provided value is in an invalid format.", "admin_and_system.invalid_integer_format": "Invalid integer format.", - "admin_and_system.invalid_suspicious_flags_format": "Invalid suspicious flags format.", "admin_and_system.invalid_system_flag": "Invalid system flag.", "admin_and_system.invalid_timeout_value": "Invalid timeout value.", "admin_and_system.invalid_timestamp": "Invalid timestamp.", @@ -40,7 +37,6 @@ "admin_and_system.response_validation_failed": "Response validation failed: {errors}.", "admin_and_system.test_harness_disabled": "Test harness is disabled.", "admin_and_system.test_harness_forbidden": "Test harness is forbidden.", - "admin_and_system.unknown_suspicious_flag": "Unknown suspicious flag.", "admin_and_system.update_failed": "We couldn't update the resource. Please try again.", "admin_and_system.user_must_be_bot_for_system_user": "User must be a bot to be marked as a system user.", "age_verification.already_verified": "You've already completed age verification.", @@ -390,18 +386,6 @@ "permissions.user_not_in_channel": "This user isn't in the channel.", "permissions.user_not_in_voice": "This user isn't in voice.", "permissions.user_owns_guilds": "This user owns communities.", - "phone.add_not_eligible": "You are not eligible to add a phone number to your account.", - "phone.country_not_supported": "We don't send verification texts to this country. Use a mobile number from another country, or email support@fluxer.app and a person will review your account.", - "phone.inbound_verification_required": "This number is verified by texting us instead of us texting you. Start phone verification again to get the code and the number to text.", - "phone.invalid_number": "Invalid phone number.", - "phone.lookup_unavailable": "Our phone number check is down right now, so we stopped before sending your code. This is on us, not your number. Wait a few minutes and try the same number again.", - "phone.number_already_used": "Phone number is already in use.", - "phone.number_format_required": "Phone number must be in E.164 format (for example, +1234567890).", - "phone.number_not_in_service": "Your carrier says this number isn't in service. Check the number and try again, or email support@fluxer.app if it's correct.", - "phone.number_not_mobile": "This isn't a mobile number, so it can't receive our text. Use a mobile number, or email support@fluxer.app if you think that's wrong.", - "phone.verification_code_invalid": "Invalid phone verification code.", - "phone.verification_needs_review": "We couldn't verify this number automatically. Email support@fluxer.app and a person will review your account.", - "phone.verification_required": "Phone verification is required.", "premium_and_plans.animated_avatars_require_premium": "Animated avatars require Premium.", "premium_and_plans.banners_require_premium": "Banners require Premium.", "premium_and_plans.bio_requires_premium_for_length": "A bio longer than {maxLength} characters requires Premium.", @@ -419,7 +403,6 @@ "rate_limits.ip_authorization_resend_cooldown": "IP authorization resend is on cooldown.", "rate_limits.ip_authorization_resend_limit_exceeded": "IP authorization resend limit exceeded.", "rate_limits.message_crosspost_rate_limited": "This channel has reached its publishing limit. It can publish 10 messages in a row, then one more every 6 minutes.", - "rate_limits.phone_rate_limit_exceeded": "Phone rate limit exceeded.", "rate_limits.pronouns_changed_too_often": "You've changed your pronouns too often recently. Please try again in {minutes, plural, one {# minute} other {# minutes}}.", "rate_limits.published_message_edit_rate_limited": "This published message has reached its editing limit. It allows 3 quick edits, then 1 every 20 minutes.", "rate_limits.rate_limited": "You're being rate limited.", diff --git a/packages/openapi/src/OpenAPITypes.ts b/packages/openapi/src/OpenAPITypes.ts index 41476906e..3f1876153 100644 --- a/packages/openapi/src/OpenAPITypes.ts +++ b/packages/openapi/src/OpenAPITypes.ts @@ -19,7 +19,6 @@ export interface ExtractedRoute { middlewares: Array; hasLoginRequired: boolean; hasDefaultUserOnly: boolean; - hasLoginRequiredAllowSuspicious: boolean; rateLimitConfig: string | null; responseSchemaName: string | null; responseContentType: string; diff --git a/packages/openapi/src/extractors/RouteExtractor.ts b/packages/openapi/src/extractors/RouteExtractor.ts index 17f939f2a..90f4052bf 100644 --- a/packages/openapi/src/extractors/RouteExtractor.ts +++ b/packages/openapi/src/extractors/RouteExtractor.ts @@ -375,7 +375,6 @@ function buildRoute( middlewares: [], hasLoginRequired: false, hasDefaultUserOnly: false, - hasLoginRequiredAllowSuspicious: false, rateLimitConfig: null, responseSchemaName: null, responseContentType: 'application/json', @@ -404,7 +403,6 @@ function buildRoute( route.middlewares.push(name); if (name === 'LoginRequired') route.hasLoginRequired = true; if (name === 'DefaultUserOnly') route.hasDefaultUserOnly = true; - if (name === 'LoginRequiredAllowSuspicious') route.hasLoginRequiredAllowSuspicious = true; continue; } if (Node.isArrowFunction(arg) || Node.isFunctionExpression(arg)) { diff --git a/packages/openapi/src/extractors/__tests__/RouteDiscovery.test.ts b/packages/openapi/src/extractors/__tests__/RouteDiscovery.test.ts index 28a9d4d73..29976868b 100644 --- a/packages/openapi/src/extractors/__tests__/RouteDiscovery.test.ts +++ b/packages/openapi/src/extractors/__tests__/RouteDiscovery.test.ts @@ -31,7 +31,6 @@ describe('discoverControllerFiles', () => { expect(shapes).toContain('GET /gifs/featured'); }); it('reads routes registered outside a *Controller.ts file', () => { - expect(shapes).toContain('POST /webhooks/twilio/sms'); expect(shapes).toContain('GET /_metrics'); expect(shapes).toContain('GET /_health'); }); diff --git a/packages/openapi/src/generator/OpenAPIOperationBuilder.ts b/packages/openapi/src/generator/OpenAPIOperationBuilder.ts index cab6a79db..2a390803c 100644 --- a/packages/openapi/src/generator/OpenAPIOperationBuilder.ts +++ b/packages/openapi/src/generator/OpenAPIOperationBuilder.ts @@ -90,7 +90,7 @@ export class OpenAPIOperationBuilder { if (route.path === '/users/@me' || route.path.startsWith('/users/@me/')) { return [{bearerToken: []}, {sessionToken: []}]; } - if (!route.hasLoginRequired && !route.hasLoginRequiredAllowSuspicious && !route.hasDefaultUserOnly) { + if (!route.hasLoginRequired && !route.hasDefaultUserOnly) { return []; } if (route.hasDefaultUserOnly) { diff --git a/packages/schema/proto/fluxer/user/preferences/v1/preferences.proto b/packages/schema/proto/fluxer/user/preferences/v1/preferences.proto index 593ffa3a1..9d414ba95 100644 --- a/packages/schema/proto/fluxer/user/preferences/v1/preferences.proto +++ b/packages/schema/proto/fluxer/user/preferences/v1/preferences.proto @@ -152,7 +152,7 @@ message NagbarDismissals { bool desktop_download = 10; bool guild_membership_cta = 11; bool visionary_mfa = 12; - bool legacy_phone_unlink = 14; + reserved 14; map pending_bulk_deletion = 15; map invites_disabled = 16; map guild_mfa_requirement = 17; diff --git a/packages/schema/src/contracts/search/SearchDocumentTypes.ts b/packages/schema/src/contracts/search/SearchDocumentTypes.ts index cc2eb1370..25fbfb86b 100644 --- a/packages/schema/src/contracts/search/SearchDocumentTypes.ts +++ b/packages/schema/src/contracts/search/SearchDocumentTypes.ts @@ -113,7 +113,6 @@ export interface SearchableUser { premiumType: number | null; emailVerified: boolean; emailBounced: boolean; - suspiciousActivityFlags: number; acls: Array; createdAt: number; lastActiveAt: number | null; @@ -132,7 +131,6 @@ export interface UserSearchFilters { isTempBanned?: boolean; isPendingDeletion?: boolean; hasAcl?: Array; - minSuspiciousActivityFlags?: number; createdAtGreaterThanOrEqual?: number; createdAtLessThanOrEqual?: number; sortBy?: 'createdAt' | 'lastActiveAt' | 'relevance'; diff --git a/packages/schema/src/domains/admin/AdminBulkSchemas.ts b/packages/schema/src/domains/admin/AdminBulkSchemas.ts index 463dc6a58..204773b16 100644 --- a/packages/schema/src/domains/admin/AdminBulkSchemas.ts +++ b/packages/schema/src/domains/admin/AdminBulkSchemas.ts @@ -7,14 +7,12 @@ import { import {BulkDeleteUserMessagesRequest} from '@fluxer/schema/src/domains/admin/AdminMessageSchemas'; import { BulkScheduleUserDeletionRequest, - BulkUpdateSuspiciousActivityFlagsRequest, BulkUpdateUserFlagsRequest, } from '@fluxer/schema/src/domains/admin/AdminUserSchemas'; import {z} from 'zod'; export const AdminBulkTaskType = { UPDATE_USER_FLAGS: 'update_user_flags', - UPDATE_SUSPICIOUS_ACTIVITY_FLAGS: 'update_suspicious_activity_flags', UPDATE_GUILD_FEATURES: 'update_guild_features', ADD_GUILD_MEMBERS: 'add_guild_members', SCHEDULE_USER_DELETION: 'schedule_user_deletion', @@ -29,11 +27,6 @@ export const AdminBulkJobCreateRequest = z.discriminatedUnion('task', [ .literal(AdminBulkTaskType.UPDATE_USER_FLAGS) .describe('Adds and removes account flags on every targeted user'), }), - BulkUpdateSuspiciousActivityFlagsRequest.extend({ - task: z - .literal(AdminBulkTaskType.UPDATE_SUSPICIOUS_ACTIVITY_FLAGS) - .describe('Adds and removes verification requirements on every targeted user'), - }), BulkUpdateGuildFeaturesRequest.extend({ task: z .literal(AdminBulkTaskType.UPDATE_GUILD_FEATURES) diff --git a/packages/schema/src/domains/admin/AdminGuildSchemas.ts b/packages/schema/src/domains/admin/AdminGuildSchemas.ts index d6ca562fd..eaff65f38 100644 --- a/packages/schema/src/domains/admin/AdminGuildSchemas.ts +++ b/packages/schema/src/domains/admin/AdminGuildSchemas.ts @@ -15,7 +15,7 @@ import { DefaultMessageNotificationsSchema, GuildExplicitContentFilterSchema, GuildMFALevelSchema, - GuildVerificationLevelSchema, + GuildVerificationLevelInputSchema, NSFWLevelSchema, } from '@fluxer/schema/src/primitives/GuildValidators'; import {createQueryIntegerType} from '@fluxer/schema/src/primitives/QueryValidators'; @@ -156,7 +156,7 @@ export type UpdateGuildNameRequest = z.infer; export const UpdateGuildSettingsRequest = z.object({ guild_id: SnowflakeType.describe('ID of the guild to update'), verification_level: withFieldDescription( - GuildVerificationLevelSchema, + GuildVerificationLevelInputSchema, 'Required verification level for guild members', ).optional(), mfa_level: withFieldDescription(GuildMFALevelSchema, 'Required MFA level for moderators').optional(), diff --git a/packages/schema/src/domains/admin/AdminUserSchemas.ts b/packages/schema/src/domains/admin/AdminUserSchemas.ts index 22b9249c8..d718a9e6f 100644 --- a/packages/schema/src/domains/admin/AdminUserSchemas.ts +++ b/packages/schema/src/domains/admin/AdminUserSchemas.ts @@ -4,8 +4,6 @@ import {DeletionReasons} from '@fluxer/constants/src/Core'; import { PremiumFlags, PremiumFlagsDescriptions, - SuspiciousActivityFlags, - SuspiciousActivityFlagsDescriptions, UserFlags, UserFlagsDescriptions, } from '@fluxer/constants/src/UserConstants'; @@ -49,7 +47,6 @@ export const UserAdminResponseSchema = z.object({ email: z.string().nullable(), email_verified: z.boolean(), email_bounced: z.boolean(), - has_verified_phone: z.boolean(), date_of_birth: z.string().nullable(), locale: z.string().nullable(), premium_type: Int32Type.nullable(), @@ -57,13 +54,6 @@ export const UserAdminResponseSchema = z.object({ premium_until: z.string().nullable(), premium_grace_ends_at: z.string().nullable(), premium_lifetime_sequence: Int32Type.nullable(), - suspicious_activity_flags: createBitflagInt32Type( - SuspiciousActivityFlags, - SuspiciousActivityFlagsDescriptions, - 'Suspicious activity indicators', - 'SuspiciousActivityFlags', - ), - phone_verification_deferred: z.boolean().describe('Whether a stored phone requirement is deferred and not enforced'), temp_banned_until: z.string().nullable(), pending_deletion_at: z.string().nullable(), pending_bulk_message_deletion_at: z.string().nullable(), @@ -369,13 +359,6 @@ export const SetUserTraitsRequest = z.object({ export type SetUserTraitsRequest = z.infer; -export const UpdateHasVerifiedPhoneRequest = z.object({ - user_id: SnowflakeType.describe('ID of the user to update'), - has_verified_phone: z.boolean().describe('Whether the user should be treated as having completed phone verification'), -}); - -export type UpdateHasVerifiedPhoneRequest = z.infer; - export const ChangeDobRequest = z.object({ user_id: SnowflakeType.describe('ID of the user to change date of birth for'), date_of_birth: createStringType(10, 10) @@ -385,47 +368,6 @@ export const ChangeDobRequest = z.object({ export type ChangeDobRequest = z.infer; -export const UpdateSuspiciousActivityFlagsRequest = z.object({ - user_id: SnowflakeType.describe('ID of the user to update suspicious activity flags for'), - flags: createBitflagInt32Type( - SuspiciousActivityFlags, - SuspiciousActivityFlagsDescriptions, - 'Bitmask of suspicious activity flags', - 'SuspiciousActivityFlags', - ), -}); - -export type UpdateSuspiciousActivityFlagsRequest = z.infer; - -export const DisableForSuspiciousActivityRequest = z.object({ - user_id: SnowflakeType.describe('ID of the user to disable for suspicious activity'), - flags: createBitflagInt32Type( - SuspiciousActivityFlags, - SuspiciousActivityFlagsDescriptions, - 'Bitmask of suspicious activity flags that triggered the disable', - 'SuspiciousActivityFlags', - ), - notify_user: z.boolean().default(true).describe('Whether to email the user that the account was disabled'), -}); - -export type DisableForSuspiciousActivityRequest = z.infer; - -export const BulkUpdateSuspiciousActivityFlagsRequest = z.object({ - user_ids: z.array(SnowflakeType).max(1000).describe('List of user IDs to update'), - add_flags: z - .array(z.string()) - .max(32) - .default([]) - .describe('Suspicious activity flag names to add to all specified users'), - remove_flags: z - .array(z.string()) - .max(32) - .default([]) - .describe('Suspicious activity flag names to remove from all specified users'), -}); - -export type BulkUpdateSuspiciousActivityFlagsRequest = z.infer; - export const BulkUpdateUserFlagsRequest = z.object({ user_ids: z.array(SnowflakeType).max(1000).describe('List of user IDs to update'), add_flags: z.array(UserFlagValueType).max(64).default([]).describe('User flags to add to all specified users'), @@ -691,22 +633,10 @@ export const AdminUserPremiumFlagsUpdateRequest = UpdatePremiumFlagsRequest.omit export type AdminUserPremiumFlagsUpdateRequest = z.infer; -export const AdminUserPhoneVerificationRequest = UpdateHasVerifiedPhoneRequest.omit({user_id: true}); - -export type AdminUserPhoneVerificationRequest = z.infer; - export const AdminUserDobUpdateRequest = ChangeDobRequest.omit({user_id: true}); export type AdminUserDobUpdateRequest = z.infer; -export const AdminUserSuspiciousActivityFlagsRequest = UpdateSuspiciousActivityFlagsRequest.omit({user_id: true}); - -export type AdminUserSuspiciousActivityFlagsRequest = z.infer; - -export const AdminUserSuspiciousDisableRequest = DisableForSuspiciousActivityRequest.omit({user_id: true}); - -export type AdminUserSuspiciousDisableRequest = z.infer; - export const AdminUserDmChannelListResponse = z.union([ListUserDmChannelsResponse, ListUserGroupDmChannelsResponse]); export type AdminUserDmChannelListResponse = z.infer; diff --git a/packages/schema/src/domains/admin/CaptchaSchemas.test.ts b/packages/schema/src/domains/admin/CaptchaSchemas.test.ts index a6587553e..a90e761fe 100644 --- a/packages/schema/src/domains/admin/CaptchaSchemas.test.ts +++ b/packages/schema/src/domains/admin/CaptchaSchemas.test.ts @@ -8,7 +8,7 @@ import { import {describe, expect, test} from 'vitest'; describe('captcha configuration', () => { - test('defaults to enabled at the phone-friendly difficulty', () => { + test('defaults to enabled at the mobile-friendly difficulty', () => { expect(CaptchaConfigSchema.parse({})).toEqual({enabled: true, cost: 5000, max_counter: 1000}); expect(DEFAULT_CAPTCHA_CONFIG).toEqual({enabled: true, cost: 5000, max_counter: 1000}); }); diff --git a/packages/schema/src/domains/auth/AuthSchemas.ts b/packages/schema/src/domains/auth/AuthSchemas.ts index fe2369fbe..9ea6ffb7d 100644 --- a/packages/schema/src/domains/auth/AuthSchemas.ts +++ b/packages/schema/src/domains/auth/AuthSchemas.ts @@ -12,13 +12,7 @@ import { createStringType, SnowflakeStringType, } from '@fluxer/schema/src/primitives/SchemaPrimitives'; -import { - EmailType, - GlobalNameType, - PasswordType, - PhoneNumberType, - UsernameType, -} from '@fluxer/schema/src/primitives/UserValidators'; +import {EmailType, GlobalNameType, PasswordType, UsernameType} from '@fluxer/schema/src/primitives/UserValidators'; import {z} from 'zod'; const RegisterThemeType = createNamedStringLiteralUnion( @@ -418,52 +412,6 @@ export const MfaBackupCodesChallengeRegenerateRequest = MfaBackupCodesChallengeR export type MfaBackupCodesChallengeRegenerateRequest = z.infer; -export const PhoneSendVerificationRequest = z.object({ - phone: PhoneNumberType.describe('Phone number to send verification code'), - channel: z - .enum(['sms', 'inbound_challenge']) - .optional() - .describe( - 'Channel to deliver the OTP on. Defaults to the first available channel from server policy. Server may override to an available fallback when the requested channel is disabled.', - ), -}); - -export type PhoneSendVerificationRequest = z.infer; - -const PhoneSendVerificationDeliveredResponse = z.object({ - channel: z - .literal('sms') - .describe('Channel actually used for delivery (may differ from request when server adjusts)'), -}); - -const PhoneSendVerificationInboundChallengeResponse = z.object({ - channel: z.literal('inbound_challenge').describe('The user must send Fluxer an SMS instead of receiving one'), - challenge_code: createStringType(4, 12).describe('The numeric code the user must text to our number'), - our_number: createStringType(4, 32).describe('The Twilio number the user must text the code to (E.164)'), - expires_at: z.iso.datetime().describe('ISO 8601 timestamp when this inbound challenge expires'), - reason: z.enum(['verification_required']).describe('Always verification_required'), -}); - -export const PhoneSendVerificationResponse = z.union([ - PhoneSendVerificationDeliveredResponse, - PhoneSendVerificationInboundChallengeResponse, -]); - -export type PhoneSendVerificationResponse = z.infer; - -export const PhoneVerifyRequest = z.object({ - phone: PhoneNumberType.describe('Phone number being verified'), - code: createStringType(1, 32).describe('The verification code'), -}); - -export type PhoneVerifyRequest = z.infer; - -export const PhoneVerifyResponse = z.object({ - verified: z.literal(true).describe('Indicates the phone number was verified successfully'), -}); - -export type PhoneVerifyResponse = z.infer; - export const WebAuthnCredentialResponse = z.object({ id: z.string().describe('The credential ID'), name: z.string().describe('User-assigned name for the credential'), @@ -527,12 +475,4 @@ export const SudoMfaMethodsResponse = z.object({ export type SudoMfaMethodsResponse = z.infer; -export const InboundSmsChallengeStartResponse = z.object({ - challenge_code: createStringType(4, 12).describe('The numeric code the user must text to our number'), - our_number: createStringType(4, 32).describe('The Twilio number the user must text the code to (E.164)'), - expires_at: z.string().describe('ISO timestamp at which the challenge becomes invalid'), -}); - -export type InboundSmsChallengeStartResponse = z.infer; - export const LogoutAuthSessionsWithVerificationRequest = LogoutAuthSessionsRequest.extend(SudoVerificationSchema.shape); diff --git a/packages/schema/src/domains/guild/GuildRequestSchemas.ts b/packages/schema/src/domains/guild/GuildRequestSchemas.ts index 1dee9383d..c2052858f 100644 --- a/packages/schema/src/domains/guild/GuildRequestSchemas.ts +++ b/packages/schema/src/domains/guild/GuildRequestSchemas.ts @@ -26,7 +26,7 @@ import { DefaultMessageNotificationsSchema, GuildExplicitContentFilterSchema, GuildMFALevelSchema, - GuildVerificationLevelSchema, + GuildVerificationLevelInputSchema, NSFWLevelSchema, SplashCardAlignmentSchema, } from '@fluxer/schema/src/primitives/GuildValidators'; @@ -86,7 +86,7 @@ export const GuildUpdateRequest = z 'Default notification level for new members', ), verification_level: withFieldDescription( - GuildVerificationLevelSchema, + GuildVerificationLevelInputSchema, 'Required verification level for members to participate', ), mfa_level: withFieldDescription(GuildMFALevelSchema, 'Required MFA level for moderation actions'), diff --git a/packages/schema/src/domains/instance/InstanceSchemas.ts b/packages/schema/src/domains/instance/InstanceSchemas.ts index 590533c17..186528924 100644 --- a/packages/schema/src/domains/instance/InstanceSchemas.ts +++ b/packages/schema/src/domains/instance/InstanceSchemas.ts @@ -113,9 +113,7 @@ export const InstanceFeaturesSchema = z self_hosted: z.boolean().describe('Whether this is a self-hosted instance'), presigned_attachment_uploads: z.boolean().describe('Whether clients can request presigned attachment upload URLs'), emails_enabled: z.boolean().describe('Whether the instance sends emails (verification, password reset, etc.)'), - phone_verification_enabled: z - .boolean() - .describe('Whether users can verify a phone number, so the very high guild verification level applies'), + phone_verification_enabled: z.boolean().describe('Deprecated. Always false.'), }) .describe('Feature flags for this instance'); export type InstanceFeatures = z.infer; diff --git a/packages/schema/src/domains/user/UserResponseSchemas.ts b/packages/schema/src/domains/user/UserResponseSchemas.ts index de6154952..9b49d1d50 100644 --- a/packages/schema/src/domains/user/UserResponseSchemas.ts +++ b/packages/schema/src/domains/user/UserResponseSchemas.ts @@ -80,13 +80,7 @@ export const UserPrivateResponse = UserPartialResponse.extend({ .boolean() .optional() .describe('Whether the current email address is marked as bounced by the mail provider'), - phone: z - .string() - .nullish() - .describe( - 'Always null. Retained for old-client backward compatibility — phone numbers are no longer stored on the user record.', - ), - has_verified_phone: z.boolean().describe('Whether this account has completed phone verification'), + has_verified_phone: z.boolean().describe('Deprecated. Always false.'), bio: z.string().nullable().describe('The user biography text'), pronouns: z.string().nullable().describe('The preferred pronouns of the user'), accent_color: Int32Type.nullable().describe('The user-selected accent color as an integer'), @@ -107,6 +101,7 @@ export const UserPrivateResponse = UserPartialResponse.extend({ .optional() .describe('The types of authenticators configured for MFA'), verified: z.boolean().describe('Whether the email address has been verified'), + account_limited: z.boolean().optional().describe('Whether the account is limited'), premium_type: withFieldDescription(UserPremiumTypesSchema, 'The type of premium subscription').nullable(), premium_since: z.string().nullable().describe('ISO8601 timestamp of when premium was first activated'), premium_until: z @@ -134,10 +129,6 @@ export const UserPrivateResponse = UserPartialResponse.extend({ premium_purchase_disabled: z.boolean().describe('Whether premium purchases are disabled for this account'), premium_enabled_override: z.boolean().describe('Whether premium features are enabled via override'), premium_perks_disabled: z.boolean().describe('Whether premium perks are temporarily disabled for this account'), - force_inbound_phone_verification: z - .boolean() - .optional() - .describe('Whether this account is forced through the inbound phone verification flow, for debugging'), password_last_changed_at: z.string().nullable().describe('ISO8601 timestamp of the last password change'), last_voice_activity_sharing_change_at: z .string() @@ -145,7 +136,7 @@ export const UserPrivateResponse = UserPartialResponse.extend({ .describe( 'ISO8601 timestamp of the last bulk voice-activity-sharing change. Drives the 24-hour cooldown for re-toggling the Active Now sharing default.', ), - required_actions: z.array(z.string()).describe('Actions the user must complete before full access'), + required_actions: z.array(z.string()).describe('Deprecated. Always empty.'), nsfw_allowed: z.boolean().describe('Whether the user is allowed to view NSFW content'), has_dismissed_premium_onboarding: z.boolean().describe('Whether the user has dismissed the premium onboarding flow'), has_ever_purchased: z.boolean().describe('Whether the user has ever made a purchase'), @@ -411,17 +402,6 @@ export const RelationshipResponse = z.object({ }); export type RelationshipResponse = z.infer; -export type RequiredAction = - | 'REQUIRE_VERIFIED_EMAIL' - | 'REQUIRE_REVERIFIED_EMAIL' - | 'REQUIRE_VERIFIED_PHONE' - | 'REQUIRE_REVERIFIED_PHONE' - | 'REQUIRE_VERIFIED_EMAIL_OR_VERIFIED_PHONE' - | 'REQUIRE_REVERIFIED_EMAIL_OR_VERIFIED_PHONE' - | 'REQUIRE_VERIFIED_EMAIL_OR_REVERIFIED_PHONE' - | 'REQUIRE_REVERIFIED_EMAIL_OR_REVERIFIED_PHONE' - | 'REQUIRE_INBOUND_PHONE_VERIFICATION'; - export interface BackupCode { readonly code: string; readonly consumed: boolean; @@ -453,10 +433,10 @@ export interface UserPrivate extends UserPartial, UserProfile { readonly email: string | null; readonly email_bounced?: boolean; readonly mfa_enabled: boolean; - readonly phone?: string | null; readonly has_verified_phone: boolean; readonly authenticator_types: ReadonlyArray; readonly verified: boolean; + readonly account_limited?: boolean; readonly premium_type: number | null; readonly premium_since: string | null; readonly premium_until: string | null; @@ -472,12 +452,11 @@ export interface UserPrivate extends UserPartial, UserProfile { readonly premium_purchase_disabled: boolean; readonly premium_enabled_override: boolean; readonly premium_perks_disabled: boolean; - readonly force_inbound_phone_verification?: boolean; readonly timezone?: string | null; readonly timezone_privacy_flags?: number; readonly password_last_changed_at: string | null; readonly last_voice_activity_sharing_change_at: string | null; - readonly required_actions: ReadonlyArray; + readonly required_actions: ReadonlyArray; readonly nsfw_allowed: boolean; readonly pending_bulk_message_deletion: PendingBulkMessageDeletion | null; readonly has_dismissed_premium_onboarding: boolean; @@ -645,17 +624,4 @@ export const BulkIgnoreFriendRequestsResponse = z.object({ export type BulkIgnoreFriendRequestsResponse = z.infer; -const PhoneGateEscapeGuildResponse = z.object({ - id: SnowflakeStringType.describe('The unique identifier (snowflake) for the community'), - name: z.string().describe('The community name'), -}); - -export const PhoneGateEscapePreviewResponse = z.object({ - available: z.boolean().describe('Whether this account can set a due phone verification requirement aside right now'), - guilds: z.array(PhoneGateEscapeGuildResponse).describe('Always empty, the escape leaves no community'), - owned_guilds: z.array(PhoneGateEscapeGuildResponse).describe('Always empty, the escape leaves no community'), -}); - -export type PhoneGateEscapePreviewResponse = z.infer; - export const RelationshipListResponse = z.array(RelationshipResponse); diff --git a/packages/schema/src/gen/fluxer/user/preferences/v1/preferences_pb.ts b/packages/schema/src/gen/fluxer/user/preferences/v1/preferences_pb.ts index 6294b3647..c88bd73f0 100644 --- a/packages/schema/src/gen/fluxer/user/preferences/v1/preferences_pb.ts +++ b/packages/schema/src/gen/fluxer/user/preferences/v1/preferences_pb.ts @@ -10,7 +10,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file fluxer/user/preferences/v1/preferences.proto. */ export const file_fluxer_user_preferences_v1_preferences: GenFile = /*@__PURE__*/ - fileDesc("CixmbHV4ZXIvdXNlci9wcmVmZXJlbmNlcy92MS9wcmVmZXJlbmNlcy5wcm90bxIaZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEi+RUKEVN5bmNlZFByZWZlcmVuY2VzEkgKDWFjY2Vzc2liaWxpdHkYASABKAsyMS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5BY2Nlc3NpYmlsaXR5U2V0dGluZ3MSUwoXYWNjZXNzaWJpbGl0eV9vdmVycmlkZXMYAiABKAsyMi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5BY2Nlc3NpYmlsaXR5T3ZlcnJpZGVzEksKD3RleHR1YWxfcHJldmlldxgDIAEoCzIyLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlRleHR1YWxQcmV2aWV3U2V0dGluZ3MSQgoMZW1vamlfcGlja2VyGBQgASgLMiwuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRW1vamlQaWNrZXJTdGF0ZRJGCg5zdGlja2VyX3BpY2tlchgVIAEoCzIuLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlN0aWNrZXJQaWNrZXJTdGF0ZRJCCgxtZW1lc19waWNrZXIYFiABKAsyLC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5NZW1lc1BpY2tlclN0YXRlEjUKBWVtb2ppGBcgASgLMiYuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRW1vamlTdGF0ZRJUChRlbW9qaV9zdGlja2VyX2xheW91dBgYIAEoCzI2LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkVtb2ppU3RpY2tlckxheW91dFNldHRpbmdzEkYKDWZhdm9yaXRlX2dpZnMYGSABKAsyLy5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5GYXZvcml0ZUdpZlNldHRpbmdzEj0KCWZhdm9yaXRlcxgoIAEoCzIqLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkZhdm9yaXRlc1N0YXRlEksKD3JlY2VudF9tZW50aW9ucxgpIAEoCzIyLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlJlY2VudE1lbnRpb25zU2V0dGluZ3MSPwoHc2lkZWJhchgqIAEoCzIuLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlNpZGViYXJQcmVmZXJlbmNlcxJACgttZW1iZXJfbGlzdBgrIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk1lbWJlckxpc3RTdGF0ZRJICg91bnJlYWRfY2hhbm5lbHMYLCABKAsyLy5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5VbnJlYWRDaGFubmVsc1N0YXRlEkoKEG1lbnRpb25fZnJlY2VuY3kYLSABKAsyMC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5NZW50aW9uRnJlY2VuY3lTdGF0ZRI9CgduYWdiYXJzGDwgASgLMiwuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTmFnYmFyRGlzbWlzc2FscxJHChFkaXNtaXNzZWRfdXBzZWxscxg9IAEoCzIsLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkRpc21pc3NlZFVwc2VsbHMSTgoVZ3VpbGRfbnNmd19hZ3JlZW1lbnRzGD4gASgLMi8uZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGROc2Z3QWdyZWVtZW50cxI8Cgl3aGF0c19uZXcYPyABKAsyKS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5XaGF0c05ld1N0YXRlEj8KB3ByaXZhY3kYUCABKAsyLi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Qcml2YWN5UHJlZmVyZW5jZXMSUAoUbG9jYWxfc3BhbV9vdmVycmlkZXMYUSABKAsyMi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Mb2NhbFVzZXJTcGFtT3ZlcnJpZGVzEhUKDXNhbml0aXplX3VybHMYUiABKAgSOAoFc291bmQYZCABKAsyKS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Tb3VuZFNldHRpbmdzEkIKCnNwZWxsY2hlY2sYZSABKAsyLi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5TcGVsbGNoZWNrU2V0dGluZ3MSSAoOc2VhcmNoX2VuZ2luZXMYZiABKAsyMC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5TZWFyY2hFbmdpbmVTZXR0aW5ncxJPChFwZXJtaXNzaW9uX2xheW91dBhnIAEoCzI0LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlBlcm1pc3Npb25MYXlvdXRTZXR0aW5ncxJSChNndWlsZF9tZW1iZXJfbGF5b3V0GGggASgLMjUuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGRNZW1iZXJMYXlvdXRTZXR0aW5ncxJLCg1ndWlsZF9mb2xkZXJzGGkgASgLMjQuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGRGb2xkZXJFeHBhbmRlZFN0YXRlElAKFGhpZGRlbl9ndWlsZF9idXR0b25zGGogASgLMjIuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuSGlkZGVuR3VpbGRMaXN0QnV0dG9ucxJPChNrZXlib2FyZF9tb2RlX2ludHJvGGsgASgLMjIuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuS2V5Ym9hcmRNb2RlSW50cm9TdGF0ZRJRChBpbnB1dF9tb25pdG9yaW5nGGwgASgLMjcuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuSW5wdXRNb25pdG9yaW5nUHJvbXB0c1N0YXRlEkQKDXZvaWNlX3Byb21wdHMYbSABKAsyLS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Wb2ljZVByb21wdHNTdGF0ZRJACgtzdWRvX3Byb21wdBhuIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlN1ZG9Qcm9tcHRTdGF0ZRI9CghrZXliaW5kcxhvIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLktleWJpbmRTZXR0aW5ncxJBCgpjaGF0X2lucHV0GHAgASgLMi0uZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuQ2hhdElucHV0U2V0dGluZ3MSKgodc2F2ZV9jYW1lcmFfdXBsb2Fkc190b19kZXZpY2UYcSABKAhIAIgBARJGChNkb3VibGVfdGFwX3JlYWN0aW9uGHIgASgLMikuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuUmVhY3Rpb25FbW9qaRJKChBjaGFubmVsX2ZyZWNlbmN5GHMgASgLMjAuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuQ2hhbm5lbEZyZWNlbmN5U3RhdGUSUgoUYW5ub3VuY2VtZW50X3Byb21wdHMYdCABKAsyNC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Bbm5vdW5jZW1lbnRQcm9tcHRzU3RhdGVCIAoeX3NhdmVfY2FtZXJhX3VwbG9hZHNfdG9fZGV2aWNlIrABChJTcGVsbGNoZWNrU2V0dGluZ3MSFAoHZW5hYmxlZBgBIAEoCEgAiAEBEhEKCWxhbmd1YWdlcxgCIAMoCRIbChNwZXJzb25hbF9kaWN0aW9uYXJ5GAMgAygJEhgKC2F1dG9fZGV0ZWN0GAQgASgISAGIAQESEwoGZW5naW5lGAUgASgJSAKIAQFCCgoIX2VuYWJsZWRCDgoMX2F1dG9fZGV0ZWN0QgkKB19lbmdpbmUi5gEKFFNlYXJjaEVuZ2luZVNldHRpbmdzEiIKFXRleHRfc2VhcmNoX2VuZ2luZV9pZBgBIAEoCUgAiAEBEisKHnJldmVyc2VfaW1hZ2Vfc2VhcmNoX2VuZ2luZV9pZBgCIAEoCUgBiAEBEiQKF3RyYW5zbGF0aW9uX3Byb3ZpZGVyX2lkGAMgASgJSAKIAQFCGAoWX3RleHRfc2VhcmNoX2VuZ2luZV9pZEIhCh9fcmV2ZXJzZV9pbWFnZV9zZWFyY2hfZW5naW5lX2lkQhoKGF90cmFuc2xhdGlvbl9wcm92aWRlcl9pZCK1AQoSUHJpdmFjeVByZWZlcmVuY2VzEh8KF2Rpc2FibGVfc3RyZWFtX3ByZXZpZXdzGAEgASgIEhwKD3Nob3dfYWN0aXZlX25vdxgCIAEoCEgAiAEBEioKHXByZXVwbG9hZF9tZXNzYWdlX2F0dGFjaG1lbnRzGAMgASgISAGIAQFCEgoQX3Nob3dfYWN0aXZlX25vd0IgCh5fcHJldXBsb2FkX21lc3NhZ2VfYXR0YWNobWVudHMiUAoWTG9jYWxVc2VyU3BhbU92ZXJyaWRlcxIYChBzcGFtbWVyX3VzZXJfaWRzGAEgAygJEhwKFG5vdF9zcGFtbWVyX3VzZXJfaWRzGAIgAygJIisKFlRleHR1YWxQcmV2aWV3U2V0dGluZ3MSEQoJd3JhcF90ZXh0GAEgASgIItwBChJTaWRlYmFyUHJlZmVyZW5jZXMSHAoUaW5saW5lX2Rtc19jb2xsYXBzZWQYASABKAgSLAofc2hvd19jb2xsYXBzZWRfdW5yZWFkX2Rtc19iYWRnZRgCIAEoCEgAiAEBEi8KInNob3dfaW5jb21pbmdfZnJpZW5kX3JlcXVlc3RfYmFkZ2UYAyABKAhIAYgBAUIiCiBfc2hvd19jb2xsYXBzZWRfdW5yZWFkX2Rtc19iYWRnZUIlCiNfc2hvd19pbmNvbWluZ19mcmllbmRfcmVxdWVzdF9iYWRnZSI9Cg9NZW1iZXJMaXN0U3RhdGUSGQoMbWVtYmVyc19vcGVuGAEgASgISACIAQFCDwoNX21lbWJlcnNfb3BlbiI0ChNVbnJlYWRDaGFubmVsc1N0YXRlEh0KFWNvbGxhcHNlZF9jaGFubmVsX2lkcxgBIAMoCSKqAQoWUmVjZW50TWVudGlvbnNTZXR0aW5ncxIdChBpbmNsdWRlX2V2ZXJ5b25lGAEgASgISACIAQESGgoNaW5jbHVkZV9yb2xlcxgCIAEoCEgBiAEBEhsKDmluY2x1ZGVfZ3VpbGRzGAMgASgISAKIAQFCEwoRX2luY2x1ZGVfZXZlcnlvbmVCEAoOX2luY2x1ZGVfcm9sZXNCEQoPX2luY2x1ZGVfZ3VpbGRzIv8BChRNZW50aW9uRnJlY2VuY3lTdGF0ZRJGCgZzY29wZXMYASADKAsyNi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5NZW50aW9uRnJlY2VuY3lTdGF0ZS5TY29wZRo7CgVFbnRyeRIPCgd1c2VyX2lkGAEgASgJEg0KBWNvdW50GAIgASgNEhIKCmxhc3RfYXRfbXMYAyABKAMaYgoFU2NvcGUSEAoIZ3VpbGRfaWQYASABKAkSRwoHZW50cmllcxgCIAMoCzI2LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk1lbnRpb25GcmVjZW5jeVN0YXRlLkVudHJ5It0BCg5GYXZvcml0ZXNTdGF0ZRI9CghjaGFubmVscxgBIAMoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkZhdm9yaXRlQ2hhbm5lbBJACgpjYXRlZ29yaWVzGAIgAygLMiwuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRmF2b3JpdGVDYXRlZ29yeRIeChZjb2xsYXBzZWRfY2F0ZWdvcnlfaWRzGAMgAygJEhsKE2hpZGVfbXV0ZWRfY2hhbm5lbHMYBCABKAgSDQoFbXV0ZWQYBSABKAgikwEKD0Zhdm9yaXRlQ2hhbm5lbBISCgpjaGFubmVsX2lkGAEgASgJEhAKCGd1aWxkX2lkGAIgASgJEhYKCXBhcmVudF9pZBgDIAEoCUgAiAEBEhAKCHBvc2l0aW9uGAQgASgFEhUKCG5pY2tuYW1lGAUgASgJSAGIAQFCDAoKX3BhcmVudF9pZEILCglfbmlja25hbWUiPgoQRmF2b3JpdGVDYXRlZ29yeRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhAKCHBvc2l0aW9uGAMgASgFIvoIChBOYWdiYXJEaXNtaXNzYWxzEhMKC2lvc19pbnN0YWxsGAEgASgIEhMKC3B3YV9pbnN0YWxsGAIgASgIEhkKEXB1c2hfbm90aWZpY2F0aW9uGAMgASgIEhwKFGRlc2t0b3Bfbm90aWZpY2F0aW9uGAQgASgIEhwKFHByZW1pdW1fZ3JhY2VfcGVyaW9kGAUgASgIEhcKD3ByZW1pdW1fZXhwaXJlZBgGIAEoCBIaChJwcmVtaXVtX29uYm9hcmRpbmcYByABKAgSHgoWcHJlbWl1bV90cmlhbF9leHBpcmluZxgIIAEoCBIWCg5naWZ0X2ludmVudG9yeRgJIAEoCBIYChBkZXNrdG9wX2Rvd25sb2FkGAogASgIEhwKFGd1aWxkX21lbWJlcnNoaXBfY3RhGAsgASgIEhUKDXZpc2lvbmFyeV9tZmEYDCABKAgSGwoTbGVnYWN5X3Bob25lX3VubGluaxgOIAEoCBJkChVwZW5kaW5nX2J1bGtfZGVsZXRpb24YDyADKAsyRS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5OYWdiYXJEaXNtaXNzYWxzLlBlbmRpbmdCdWxrRGVsZXRpb25FbnRyeRJbChBpbnZpdGVzX2Rpc2FibGVkGBAgAygLMkEuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTmFnYmFyRGlzbWlzc2Fscy5JbnZpdGVzRGlzYWJsZWRFbnRyeRJkChVndWlsZF9tZmFfcmVxdWlyZW1lbnQYESADKAsyRS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5OYWdiYXJEaXNtaXNzYWxzLkd1aWxkTWZhUmVxdWlyZW1lbnRFbnRyeRJfChJwcmljZV9hbm5vdW5jZW1lbnQYEiADKAsyQy5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5OYWdiYXJEaXNtaXNzYWxzLlByaWNlQW5ub3VuY2VtZW50RW50cnkSXwoTbGVnYWN5X3ByaWNlX29wdF9pbhgTIAMoCzJCLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk5hZ2JhckRpc21pc3NhbHMuTGVnYWN5UHJpY2VPcHRJbkVudHJ5GjoKGFBlbmRpbmdCdWxrRGVsZXRpb25FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBGjYKFEludml0ZXNEaXNhYmxlZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEaOgoYR3VpbGRNZmFSZXF1aXJlbWVudEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEaOAoWUHJpY2VBbm5vdW5jZW1lbnRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBGjcKFUxlZ2FjeVByaWNlT3B0SW5FbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBIioKEERpc21pc3NlZFVwc2VsbHMSFgoOcGlja2VyX3ByZW1pdW0YASABKAgiaAoTR3VpbGROc2Z3QWdyZWVtZW50cxIaChJhZ3JlZWRfY2hhbm5lbF9pZHMYASADKAkSGAoQYWdyZWVkX2d1aWxkX2lkcxgCIAMoCRIbChNhZ3JlZWRfY2F0ZWdvcnlfaWRzGAMgAygJIlEKDVdoYXRzTmV3U3RhdGUSJAoXbGFzdF9kaXNtaXNzZWRfZW50cnlfaWQYASABKAlIAIgBAUIaChhfbGFzdF9kaXNtaXNzZWRfZW50cnlfaWQimgEKGFBlcm1pc3Npb25MYXlvdXRTZXR0aW5ncxJACgZsYXlvdXQYASABKA4yMC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5QZXJtaXNzaW9uTGF5b3V0TW9kZRI8CgRncmlkGAIgASgOMi4uZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuUGVybWlzc2lvbkdyaWRNb2RlIloKGUd1aWxkTWVtYmVyTGF5b3V0U2V0dGluZ3MSPQoEbW9kZRgBIAEoDjIvLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkd1aWxkTWVtYmVyVmlld01vZGUiNwoYR3VpbGRGb2xkZXJFeHBhbmRlZFN0YXRlEhsKE2V4cGFuZGVkX2ZvbGRlcl9pZHMYASADKAYiRgoWSGlkZGVuR3VpbGRMaXN0QnV0dG9ucxIXCg9kb3dubG9hZF9idXR0b24YASABKAgSEwoLaGVscF9idXR0b24YAiABKAgiJgoWS2V5Ym9hcmRNb2RlSW50cm9TdGF0ZRIMCgRzZWVuGAEgASgIIi8KG0lucHV0TW9uaXRvcmluZ1Byb21wdHNTdGF0ZRIQCghzZWVuX2N0YRgBIAEoCCJkChFWb2ljZVByb21wdHNTdGF0ZRIkChxza2lwX2hpZGVfb3duX2NhbWVyYV9jb25maXJtGAEgASgIEikKIXNraXBfaGlkZV9vd25fc2NyZWVuc2hhcmVfY29uZmlybRgCIAEoCCI2ChhBbm5vdW5jZW1lbnRQcm9tcHRzU3RhdGUSGgoSaGlkZV9wdWJsaXNoX251ZGdlGAEgASgIInQKD1N1ZG9Qcm9tcHRTdGF0ZRJIChRsYXN0X3VzZWRfbWZhX21ldGhvZBgBIAEoDjIlLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk1mYU1ldGhvZEgAiAEBQhcKFV9sYXN0X3VzZWRfbWZhX21ldGhvZCK6AQoPS2V5YmluZFNldHRpbmdzEkIKD2N1c3RvbV9rZXliaW5kcxgBIAMoCzIpLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkN1c3RvbUtleWJpbmQSFQoNdHJhbnNtaXRfbW9kZRgCIAEoCRIqCh1wdXNoX3RvX3RhbGtfcmVsZWFzZV9kZWxheV9tcxgDIAEoDUgAiAEBQiAKHl9wdXNoX3RvX3RhbGtfcmVsZWFzZV9kZWxheV9tcyKFAQoNQ3VzdG9tS2V5YmluZBIKCgJpZBgBIAEoCRITCgZhY3Rpb24YAiABKAlIAIgBARI3CgVjb21ibxgDIAEoCzIoLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLktleWJpbmRDb21ibxIPCgdlbmFibGVkGAQgASgIQgkKB19hY3Rpb24izgIKDEtleWJpbmRDb21ibxILCgNrZXkYASABKAkSEQoEY29kZRgCIAEoCUgAiAEBEhQKDGN0cmxfb3JfbWV0YRgDIAEoCBIMCgRjdHJsGAQgASgIEgsKA2FsdBgFIAEoCBINCgVzaGlmdBgGIAEoCBIMCgRtZXRhGAcgASgIEhMKBmdsb2JhbBgIIAEoCEgBiAEBEhQKB2VuYWJsZWQYCSABKAhIAogBARIVCg1tb2RpZmllcl9vbmx5GAogASgIEhIKCmJvdGhfc2lkZXMYCyABKAgSGQoMbW91c2VfYnV0dG9uGAwgASgNSAOIAQESGwoOZ2FtZXBhZF9idXR0b24YDSABKA1IBIgBAUIHCgVfY29kZUIJCgdfZ2xvYmFsQgoKCF9lbmFibGVkQg8KDV9tb3VzZV9idXR0b25CEQoPX2dhbWVwYWRfYnV0dG9uIkIKFENoYW5uZWxGcmVjZW5jeUVudHJ5EhIKCnRvdGFsX3VzZXMYASABKA0SFgoOcmVjZW50X3VzZXNfbXMYAiADKAMiwgEKFENoYW5uZWxGcmVjZW5jeVN0YXRlEkoKBXVzYWdlGAEgAygLMjsuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuQ2hhbm5lbEZyZWNlbmN5U3RhdGUuVXNhZ2VFbnRyeRpeCgpVc2FnZUVudHJ5EgsKA2tleRgBIAEoCRI/CgV2YWx1ZRgCIAEoCzIwLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkNoYW5uZWxGcmVjZW5jeUVudHJ5OgI4ASJJChFDaGF0SW5wdXRTZXR0aW5ncxIeChFjb252ZXJ0X2Vtb3RpY29ucxgBIAEoCEgAiAEBQhQKEl9jb252ZXJ0X2Vtb3RpY29ucyI1Cg1SZWFjdGlvbkVtb2ppEg8KAmlkGAEgASgJSACIAQESDAoEbmFtZRgCIAEoCUIFCgNfaWQqggEKFFBlcm1pc3Npb25MYXlvdXRNb2RlEiYKIlBFUk1JU1NJT05fTEFZT1VUX01PREVfVU5TUEVDSUZJRUQQABIgChxQRVJNSVNTSU9OX0xBWU9VVF9NT0RFX0NPTUZZEAESIAocUEVSTUlTU0lPTl9MQVlPVVRfTU9ERV9ERU5TRRACKnoKElBlcm1pc3Npb25HcmlkTW9kZRIkCiBQRVJNSVNTSU9OX0dSSURfTU9ERV9VTlNQRUNJRklFRBAAEh8KG1BFUk1JU1NJT05fR1JJRF9NT0RFX1NJTkdMRRABEh0KGVBFUk1JU1NJT05fR1JJRF9NT0RFX0dSSUQQAiqAAQoTR3VpbGRNZW1iZXJWaWV3TW9kZRImCiJHVUlMRF9NRU1CRVJfVklFV19NT0RFX1VOU1BFQ0lGSUVEEAASIAocR1VJTERfTUVNQkVSX1ZJRVdfTU9ERV9UQUJMRRABEh8KG0dVSUxEX01FTUJFUl9WSUVXX01PREVfR1JJRBACKlUKCU1mYU1ldGhvZBIaChZNRkFfTUVUSE9EX1VOU1BFQ0lGSUVEEAASEwoPTUZBX01FVEhPRF9UT1RQEAESFwoTTUZBX01FVEhPRF9XRUJBVVRIThADYgZwcm90bzM", [file_fluxer_user_preferences_v1_accessibility, file_fluxer_user_preferences_v1_pickers]); + fileDesc("CixmbHV4ZXIvdXNlci9wcmVmZXJlbmNlcy92MS9wcmVmZXJlbmNlcy5wcm90bxIaZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEi+RUKEVN5bmNlZFByZWZlcmVuY2VzEkgKDWFjY2Vzc2liaWxpdHkYASABKAsyMS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5BY2Nlc3NpYmlsaXR5U2V0dGluZ3MSUwoXYWNjZXNzaWJpbGl0eV9vdmVycmlkZXMYAiABKAsyMi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5BY2Nlc3NpYmlsaXR5T3ZlcnJpZGVzEksKD3RleHR1YWxfcHJldmlldxgDIAEoCzIyLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlRleHR1YWxQcmV2aWV3U2V0dGluZ3MSQgoMZW1vamlfcGlja2VyGBQgASgLMiwuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRW1vamlQaWNrZXJTdGF0ZRJGCg5zdGlja2VyX3BpY2tlchgVIAEoCzIuLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlN0aWNrZXJQaWNrZXJTdGF0ZRJCCgxtZW1lc19waWNrZXIYFiABKAsyLC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5NZW1lc1BpY2tlclN0YXRlEjUKBWVtb2ppGBcgASgLMiYuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRW1vamlTdGF0ZRJUChRlbW9qaV9zdGlja2VyX2xheW91dBgYIAEoCzI2LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkVtb2ppU3RpY2tlckxheW91dFNldHRpbmdzEkYKDWZhdm9yaXRlX2dpZnMYGSABKAsyLy5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5GYXZvcml0ZUdpZlNldHRpbmdzEj0KCWZhdm9yaXRlcxgoIAEoCzIqLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkZhdm9yaXRlc1N0YXRlEksKD3JlY2VudF9tZW50aW9ucxgpIAEoCzIyLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlJlY2VudE1lbnRpb25zU2V0dGluZ3MSPwoHc2lkZWJhchgqIAEoCzIuLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlNpZGViYXJQcmVmZXJlbmNlcxJACgttZW1iZXJfbGlzdBgrIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk1lbWJlckxpc3RTdGF0ZRJICg91bnJlYWRfY2hhbm5lbHMYLCABKAsyLy5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5VbnJlYWRDaGFubmVsc1N0YXRlEkoKEG1lbnRpb25fZnJlY2VuY3kYLSABKAsyMC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5NZW50aW9uRnJlY2VuY3lTdGF0ZRI9CgduYWdiYXJzGDwgASgLMiwuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTmFnYmFyRGlzbWlzc2FscxJHChFkaXNtaXNzZWRfdXBzZWxscxg9IAEoCzIsLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkRpc21pc3NlZFVwc2VsbHMSTgoVZ3VpbGRfbnNmd19hZ3JlZW1lbnRzGD4gASgLMi8uZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGROc2Z3QWdyZWVtZW50cxI8Cgl3aGF0c19uZXcYPyABKAsyKS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5XaGF0c05ld1N0YXRlEj8KB3ByaXZhY3kYUCABKAsyLi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Qcml2YWN5UHJlZmVyZW5jZXMSUAoUbG9jYWxfc3BhbV9vdmVycmlkZXMYUSABKAsyMi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Mb2NhbFVzZXJTcGFtT3ZlcnJpZGVzEhUKDXNhbml0aXplX3VybHMYUiABKAgSOAoFc291bmQYZCABKAsyKS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Tb3VuZFNldHRpbmdzEkIKCnNwZWxsY2hlY2sYZSABKAsyLi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5TcGVsbGNoZWNrU2V0dGluZ3MSSAoOc2VhcmNoX2VuZ2luZXMYZiABKAsyMC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5TZWFyY2hFbmdpbmVTZXR0aW5ncxJPChFwZXJtaXNzaW9uX2xheW91dBhnIAEoCzI0LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlBlcm1pc3Npb25MYXlvdXRTZXR0aW5ncxJSChNndWlsZF9tZW1iZXJfbGF5b3V0GGggASgLMjUuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGRNZW1iZXJMYXlvdXRTZXR0aW5ncxJLCg1ndWlsZF9mb2xkZXJzGGkgASgLMjQuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuR3VpbGRGb2xkZXJFeHBhbmRlZFN0YXRlElAKFGhpZGRlbl9ndWlsZF9idXR0b25zGGogASgLMjIuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuSGlkZGVuR3VpbGRMaXN0QnV0dG9ucxJPChNrZXlib2FyZF9tb2RlX2ludHJvGGsgASgLMjIuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuS2V5Ym9hcmRNb2RlSW50cm9TdGF0ZRJRChBpbnB1dF9tb25pdG9yaW5nGGwgASgLMjcuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuSW5wdXRNb25pdG9yaW5nUHJvbXB0c1N0YXRlEkQKDXZvaWNlX3Byb21wdHMYbSABKAsyLS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Wb2ljZVByb21wdHNTdGF0ZRJACgtzdWRvX3Byb21wdBhuIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlN1ZG9Qcm9tcHRTdGF0ZRI9CghrZXliaW5kcxhvIAEoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLktleWJpbmRTZXR0aW5ncxJBCgpjaGF0X2lucHV0GHAgASgLMi0uZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuQ2hhdElucHV0U2V0dGluZ3MSKgodc2F2ZV9jYW1lcmFfdXBsb2Fkc190b19kZXZpY2UYcSABKAhIAIgBARJGChNkb3VibGVfdGFwX3JlYWN0aW9uGHIgASgLMikuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuUmVhY3Rpb25FbW9qaRJKChBjaGFubmVsX2ZyZWNlbmN5GHMgASgLMjAuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuQ2hhbm5lbEZyZWNlbmN5U3RhdGUSUgoUYW5ub3VuY2VtZW50X3Byb21wdHMYdCABKAsyNC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5Bbm5vdW5jZW1lbnRQcm9tcHRzU3RhdGVCIAoeX3NhdmVfY2FtZXJhX3VwbG9hZHNfdG9fZGV2aWNlIrABChJTcGVsbGNoZWNrU2V0dGluZ3MSFAoHZW5hYmxlZBgBIAEoCEgAiAEBEhEKCWxhbmd1YWdlcxgCIAMoCRIbChNwZXJzb25hbF9kaWN0aW9uYXJ5GAMgAygJEhgKC2F1dG9fZGV0ZWN0GAQgASgISAGIAQESEwoGZW5naW5lGAUgASgJSAKIAQFCCgoIX2VuYWJsZWRCDgoMX2F1dG9fZGV0ZWN0QgkKB19lbmdpbmUi5gEKFFNlYXJjaEVuZ2luZVNldHRpbmdzEiIKFXRleHRfc2VhcmNoX2VuZ2luZV9pZBgBIAEoCUgAiAEBEisKHnJldmVyc2VfaW1hZ2Vfc2VhcmNoX2VuZ2luZV9pZBgCIAEoCUgBiAEBEiQKF3RyYW5zbGF0aW9uX3Byb3ZpZGVyX2lkGAMgASgJSAKIAQFCGAoWX3RleHRfc2VhcmNoX2VuZ2luZV9pZEIhCh9fcmV2ZXJzZV9pbWFnZV9zZWFyY2hfZW5naW5lX2lkQhoKGF90cmFuc2xhdGlvbl9wcm92aWRlcl9pZCK1AQoSUHJpdmFjeVByZWZlcmVuY2VzEh8KF2Rpc2FibGVfc3RyZWFtX3ByZXZpZXdzGAEgASgIEhwKD3Nob3dfYWN0aXZlX25vdxgCIAEoCEgAiAEBEioKHXByZXVwbG9hZF9tZXNzYWdlX2F0dGFjaG1lbnRzGAMgASgISAGIAQFCEgoQX3Nob3dfYWN0aXZlX25vd0IgCh5fcHJldXBsb2FkX21lc3NhZ2VfYXR0YWNobWVudHMiUAoWTG9jYWxVc2VyU3BhbU92ZXJyaWRlcxIYChBzcGFtbWVyX3VzZXJfaWRzGAEgAygJEhwKFG5vdF9zcGFtbWVyX3VzZXJfaWRzGAIgAygJIisKFlRleHR1YWxQcmV2aWV3U2V0dGluZ3MSEQoJd3JhcF90ZXh0GAEgASgIItwBChJTaWRlYmFyUHJlZmVyZW5jZXMSHAoUaW5saW5lX2Rtc19jb2xsYXBzZWQYASABKAgSLAofc2hvd19jb2xsYXBzZWRfdW5yZWFkX2Rtc19iYWRnZRgCIAEoCEgAiAEBEi8KInNob3dfaW5jb21pbmdfZnJpZW5kX3JlcXVlc3RfYmFkZ2UYAyABKAhIAYgBAUIiCiBfc2hvd19jb2xsYXBzZWRfdW5yZWFkX2Rtc19iYWRnZUIlCiNfc2hvd19pbmNvbWluZ19mcmllbmRfcmVxdWVzdF9iYWRnZSI9Cg9NZW1iZXJMaXN0U3RhdGUSGQoMbWVtYmVyc19vcGVuGAEgASgISACIAQFCDwoNX21lbWJlcnNfb3BlbiI0ChNVbnJlYWRDaGFubmVsc1N0YXRlEh0KFWNvbGxhcHNlZF9jaGFubmVsX2lkcxgBIAMoCSKqAQoWUmVjZW50TWVudGlvbnNTZXR0aW5ncxIdChBpbmNsdWRlX2V2ZXJ5b25lGAEgASgISACIAQESGgoNaW5jbHVkZV9yb2xlcxgCIAEoCEgBiAEBEhsKDmluY2x1ZGVfZ3VpbGRzGAMgASgISAKIAQFCEwoRX2luY2x1ZGVfZXZlcnlvbmVCEAoOX2luY2x1ZGVfcm9sZXNCEQoPX2luY2x1ZGVfZ3VpbGRzIv8BChRNZW50aW9uRnJlY2VuY3lTdGF0ZRJGCgZzY29wZXMYASADKAsyNi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5NZW50aW9uRnJlY2VuY3lTdGF0ZS5TY29wZRo7CgVFbnRyeRIPCgd1c2VyX2lkGAEgASgJEg0KBWNvdW50GAIgASgNEhIKCmxhc3RfYXRfbXMYAyABKAMaYgoFU2NvcGUSEAoIZ3VpbGRfaWQYASABKAkSRwoHZW50cmllcxgCIAMoCzI2LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk1lbnRpb25GcmVjZW5jeVN0YXRlLkVudHJ5It0BCg5GYXZvcml0ZXNTdGF0ZRI9CghjaGFubmVscxgBIAMoCzIrLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkZhdm9yaXRlQ2hhbm5lbBJACgpjYXRlZ29yaWVzGAIgAygLMiwuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuRmF2b3JpdGVDYXRlZ29yeRIeChZjb2xsYXBzZWRfY2F0ZWdvcnlfaWRzGAMgAygJEhsKE2hpZGVfbXV0ZWRfY2hhbm5lbHMYBCABKAgSDQoFbXV0ZWQYBSABKAgikwEKD0Zhdm9yaXRlQ2hhbm5lbBISCgpjaGFubmVsX2lkGAEgASgJEhAKCGd1aWxkX2lkGAIgASgJEhYKCXBhcmVudF9pZBgDIAEoCUgAiAEBEhAKCHBvc2l0aW9uGAQgASgFEhUKCG5pY2tuYW1lGAUgASgJSAGIAQFCDAoKX3BhcmVudF9pZEILCglfbmlja25hbWUiPgoQRmF2b3JpdGVDYXRlZ29yeRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhAKCHBvc2l0aW9uGAMgASgFIuMIChBOYWdiYXJEaXNtaXNzYWxzEhMKC2lvc19pbnN0YWxsGAEgASgIEhMKC3B3YV9pbnN0YWxsGAIgASgIEhkKEXB1c2hfbm90aWZpY2F0aW9uGAMgASgIEhwKFGRlc2t0b3Bfbm90aWZpY2F0aW9uGAQgASgIEhwKFHByZW1pdW1fZ3JhY2VfcGVyaW9kGAUgASgIEhcKD3ByZW1pdW1fZXhwaXJlZBgGIAEoCBIaChJwcmVtaXVtX29uYm9hcmRpbmcYByABKAgSHgoWcHJlbWl1bV90cmlhbF9leHBpcmluZxgIIAEoCBIWCg5naWZ0X2ludmVudG9yeRgJIAEoCBIYChBkZXNrdG9wX2Rvd25sb2FkGAogASgIEhwKFGd1aWxkX21lbWJlcnNoaXBfY3RhGAsgASgIEhUKDXZpc2lvbmFyeV9tZmEYDCABKAgSZAoVcGVuZGluZ19idWxrX2RlbGV0aW9uGA8gAygLMkUuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTmFnYmFyRGlzbWlzc2Fscy5QZW5kaW5nQnVsa0RlbGV0aW9uRW50cnkSWwoQaW52aXRlc19kaXNhYmxlZBgQIAMoCzJBLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLk5hZ2JhckRpc21pc3NhbHMuSW52aXRlc0Rpc2FibGVkRW50cnkSZAoVZ3VpbGRfbWZhX3JlcXVpcmVtZW50GBEgAygLMkUuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTmFnYmFyRGlzbWlzc2Fscy5HdWlsZE1mYVJlcXVpcmVtZW50RW50cnkSXwoScHJpY2VfYW5ub3VuY2VtZW50GBIgAygLMkMuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuTmFnYmFyRGlzbWlzc2Fscy5QcmljZUFubm91bmNlbWVudEVudHJ5El8KE2xlZ2FjeV9wcmljZV9vcHRfaW4YEyADKAsyQi5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5OYWdiYXJEaXNtaXNzYWxzLkxlZ2FjeVByaWNlT3B0SW5FbnRyeRo6ChhQZW5kaW5nQnVsa0RlbGV0aW9uRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ARo2ChRJbnZpdGVzRGlzYWJsZWRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBGjoKGEd1aWxkTWZhUmVxdWlyZW1lbnRFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBGjgKFlByaWNlQW5ub3VuY2VtZW50RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4ARo3ChVMZWdhY3lQcmljZU9wdEluRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgIOgI4AUoECA4QDyIqChBEaXNtaXNzZWRVcHNlbGxzEhYKDnBpY2tlcl9wcmVtaXVtGAEgASgIImgKE0d1aWxkTnNmd0FncmVlbWVudHMSGgoSYWdyZWVkX2NoYW5uZWxfaWRzGAEgAygJEhgKEGFncmVlZF9ndWlsZF9pZHMYAiADKAkSGwoTYWdyZWVkX2NhdGVnb3J5X2lkcxgDIAMoCSJRCg1XaGF0c05ld1N0YXRlEiQKF2xhc3RfZGlzbWlzc2VkX2VudHJ5X2lkGAEgASgJSACIAQFCGgoYX2xhc3RfZGlzbWlzc2VkX2VudHJ5X2lkIpoBChhQZXJtaXNzaW9uTGF5b3V0U2V0dGluZ3MSQAoGbGF5b3V0GAEgASgOMjAuZmx1eGVyLnVzZXIucHJlZmVyZW5jZXMudjEuUGVybWlzc2lvbkxheW91dE1vZGUSPAoEZ3JpZBgCIAEoDjIuLmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLlBlcm1pc3Npb25HcmlkTW9kZSJaChlHdWlsZE1lbWJlckxheW91dFNldHRpbmdzEj0KBG1vZGUYASABKA4yLy5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5HdWlsZE1lbWJlclZpZXdNb2RlIjcKGEd1aWxkRm9sZGVyRXhwYW5kZWRTdGF0ZRIbChNleHBhbmRlZF9mb2xkZXJfaWRzGAEgAygGIkYKFkhpZGRlbkd1aWxkTGlzdEJ1dHRvbnMSFwoPZG93bmxvYWRfYnV0dG9uGAEgASgIEhMKC2hlbHBfYnV0dG9uGAIgASgIIiYKFktleWJvYXJkTW9kZUludHJvU3RhdGUSDAoEc2VlbhgBIAEoCCIvChtJbnB1dE1vbml0b3JpbmdQcm9tcHRzU3RhdGUSEAoIc2Vlbl9jdGEYASABKAgiZAoRVm9pY2VQcm9tcHRzU3RhdGUSJAocc2tpcF9oaWRlX293bl9jYW1lcmFfY29uZmlybRgBIAEoCBIpCiFza2lwX2hpZGVfb3duX3NjcmVlbnNoYXJlX2NvbmZpcm0YAiABKAgiNgoYQW5ub3VuY2VtZW50UHJvbXB0c1N0YXRlEhoKEmhpZGVfcHVibGlzaF9udWRnZRgBIAEoCCJ0Cg9TdWRvUHJvbXB0U3RhdGUSSAoUbGFzdF91c2VkX21mYV9tZXRob2QYASABKA4yJS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5NZmFNZXRob2RIAIgBAUIXChVfbGFzdF91c2VkX21mYV9tZXRob2QiugEKD0tleWJpbmRTZXR0aW5ncxJCCg9jdXN0b21fa2V5YmluZHMYASADKAsyKS5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5DdXN0b21LZXliaW5kEhUKDXRyYW5zbWl0X21vZGUYAiABKAkSKgodcHVzaF90b190YWxrX3JlbGVhc2VfZGVsYXlfbXMYAyABKA1IAIgBAUIgCh5fcHVzaF90b190YWxrX3JlbGVhc2VfZGVsYXlfbXMihQEKDUN1c3RvbUtleWJpbmQSCgoCaWQYASABKAkSEwoGYWN0aW9uGAIgASgJSACIAQESNwoFY29tYm8YAyABKAsyKC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5LZXliaW5kQ29tYm8SDwoHZW5hYmxlZBgEIAEoCEIJCgdfYWN0aW9uIs4CCgxLZXliaW5kQ29tYm8SCwoDa2V5GAEgASgJEhEKBGNvZGUYAiABKAlIAIgBARIUCgxjdHJsX29yX21ldGEYAyABKAgSDAoEY3RybBgEIAEoCBILCgNhbHQYBSABKAgSDQoFc2hpZnQYBiABKAgSDAoEbWV0YRgHIAEoCBITCgZnbG9iYWwYCCABKAhIAYgBARIUCgdlbmFibGVkGAkgASgISAKIAQESFQoNbW9kaWZpZXJfb25seRgKIAEoCBISCgpib3RoX3NpZGVzGAsgASgIEhkKDG1vdXNlX2J1dHRvbhgMIAEoDUgDiAEBEhsKDmdhbWVwYWRfYnV0dG9uGA0gASgNSASIAQFCBwoFX2NvZGVCCQoHX2dsb2JhbEIKCghfZW5hYmxlZEIPCg1fbW91c2VfYnV0dG9uQhEKD19nYW1lcGFkX2J1dHRvbiJCChRDaGFubmVsRnJlY2VuY3lFbnRyeRISCgp0b3RhbF91c2VzGAEgASgNEhYKDnJlY2VudF91c2VzX21zGAIgAygDIsIBChRDaGFubmVsRnJlY2VuY3lTdGF0ZRJKCgV1c2FnZRgBIAMoCzI7LmZsdXhlci51c2VyLnByZWZlcmVuY2VzLnYxLkNoYW5uZWxGcmVjZW5jeVN0YXRlLlVzYWdlRW50cnkaXgoKVXNhZ2VFbnRyeRILCgNrZXkYASABKAkSPwoFdmFsdWUYAiABKAsyMC5mbHV4ZXIudXNlci5wcmVmZXJlbmNlcy52MS5DaGFubmVsRnJlY2VuY3lFbnRyeToCOAEiSQoRQ2hhdElucHV0U2V0dGluZ3MSHgoRY29udmVydF9lbW90aWNvbnMYASABKAhIAIgBAUIUChJfY29udmVydF9lbW90aWNvbnMiNQoNUmVhY3Rpb25FbW9qaRIPCgJpZBgBIAEoCUgAiAEBEgwKBG5hbWUYAiABKAlCBQoDX2lkKoIBChRQZXJtaXNzaW9uTGF5b3V0TW9kZRImCiJQRVJNSVNTSU9OX0xBWU9VVF9NT0RFX1VOU1BFQ0lGSUVEEAASIAocUEVSTUlTU0lPTl9MQVlPVVRfTU9ERV9DT01GWRABEiAKHFBFUk1JU1NJT05fTEFZT1VUX01PREVfREVOU0UQAip6ChJQZXJtaXNzaW9uR3JpZE1vZGUSJAogUEVSTUlTU0lPTl9HUklEX01PREVfVU5TUEVDSUZJRUQQABIfChtQRVJNSVNTSU9OX0dSSURfTU9ERV9TSU5HTEUQARIdChlQRVJNSVNTSU9OX0dSSURfTU9ERV9HUklEEAIqgAEKE0d1aWxkTWVtYmVyVmlld01vZGUSJgoiR1VJTERfTUVNQkVSX1ZJRVdfTU9ERV9VTlNQRUNJRklFRBAAEiAKHEdVSUxEX01FTUJFUl9WSUVXX01PREVfVEFCTEUQARIfChtHVUlMRF9NRU1CRVJfVklFV19NT0RFX0dSSUQQAipVCglNZmFNZXRob2QSGgoWTUZBX01FVEhPRF9VTlNQRUNJRklFRBAAEhMKD01GQV9NRVRIT0RfVE9UUBABEhcKE01GQV9NRVRIT0RfV0VCQVVUSE4QA2IGcHJvdG8z", [file_fluxer_user_preferences_v1_accessibility, file_fluxer_user_preferences_v1_pickers]); /** * @generated from message fluxer.user.preferences.v1.SyncedPreferences @@ -668,11 +668,6 @@ export type NagbarDismissals = Message<"fluxer.user.preferences.v1.NagbarDismiss */ visionaryMfa: boolean; - /** - * @generated from field: bool legacy_phone_unlink = 14; - */ - legacyPhoneUnlink: boolean; - /** * @generated from field: map pending_bulk_deletion = 15; */ diff --git a/packages/schema/src/primitives/GuildValidators.ts b/packages/schema/src/primitives/GuildValidators.ts index 0d45ba2a0..2dc4aca62 100644 --- a/packages/schema/src/primitives/GuildValidators.ts +++ b/packages/schema/src/primitives/GuildValidators.ts @@ -11,6 +11,9 @@ import { } from '@fluxer/constants/src/GuildConstants'; import {MessageNotifications} from '@fluxer/constants/src/NotificationConstants'; import {createInt32EnumType, createNamedLiteralUnion} from '@fluxer/schema/src/primitives/SchemaPrimitives'; +import {z} from 'zod'; + +const RETIRED_GUILD_VERIFICATION_LEVEL = 4; export const GuildVerificationLevelSchema = createInt32EnumType( [ @@ -18,11 +21,14 @@ export const GuildVerificationLevelSchema = createInt32EnumType( [GuildVerificationLevel.LOW, 'LOW', 'Must have verified email'], [GuildVerificationLevel.MEDIUM, 'MEDIUM', 'Registered for more than 5 minutes'], [GuildVerificationLevel.HIGH, 'HIGH', 'Member of the server for more than 10 minutes'], - [GuildVerificationLevel.VERY_HIGH, 'VERY_HIGH', 'Must have a verified phone number'], ], 'Required verification level for members', 'GuildVerificationLevel', ); +export const GuildVerificationLevelInputSchema = z.preprocess( + (value) => (value === RETIRED_GUILD_VERIFICATION_LEVEL ? GuildVerificationLevel.HIGH : value), + GuildVerificationLevelSchema, +); export const GuildMFALevelSchema = createInt32EnumType( [ [GuildMFALevel.NONE, 'NONE', 'Guild has no MFA requirement'], diff --git a/packages/schema/src/primitives/UserValidators.ts b/packages/schema/src/primitives/UserValidators.ts index 34e3a3563..553f9ba47 100644 --- a/packages/schema/src/primitives/UserValidators.ts +++ b/packages/schema/src/primitives/UserValidators.ts @@ -16,7 +16,6 @@ import {z} from 'zod'; const EMAIL_LOCAL_REGEX = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+$/; const DISCRIMINATOR_REGEX = /^\d{1,4}$/; const FLUXER_TAG_REGEX = /^[a-zA-Z0-9_]+$/; -export const PHONE_E164_REGEX = /^\+[1-9]\d{1,14}$/; function sanitizeUsername(value: string): string { if (value.length > MAX_STRING_PROCESSING_LENGTH) { @@ -120,13 +119,6 @@ export const PasswordType = withOpenApiType( .pipe(withStringLengthRangeValidation(z.string(), 8, 256, ValidationErrorCodes.PASSWORD_LENGTH_INVALID)), 'PasswordType', ); -export const PhoneNumberType = withOpenApiType( - z - .string() - .overwrite(normalizeString) - .refine((value) => PHONE_E164_REGEX.test(value), ValidationErrorCodes.PHONE_NUMBER_INVALID_FORMAT), - 'PhoneNumberType', -); export const WebhookNameType = z .string() .overwrite(normalizeString) diff --git a/packages/schema/src/primitives/tests/GuildValidators.test.ts b/packages/schema/src/primitives/tests/GuildValidators.test.ts index ef0565e62..bd04ee403 100644 --- a/packages/schema/src/primitives/tests/GuildValidators.test.ts +++ b/packages/schema/src/primitives/tests/GuildValidators.test.ts @@ -13,6 +13,7 @@ import { DefaultMessageNotificationsSchema, GuildExplicitContentFilterSchema, GuildMFALevelSchema, + GuildVerificationLevelInputSchema, GuildVerificationLevelSchema, JoinSourceTypeSchema, NSFWLevelSchema, @@ -46,6 +47,22 @@ describe.each([ }); }); +it('rejects verification level 4 on output', () => { + expect(GuildVerificationLevelSchema.safeParse(4).success).toBe(false); +}); + +it('stores verification level 4 on input as high', () => { + expect(GuildVerificationLevelInputSchema.parse(4)).toBe(GuildVerificationLevel.HIGH); +}); + +it.each(Object.values(GuildVerificationLevel))('keeps input verification level %i', (value) => { + expect(GuildVerificationLevelInputSchema.parse(value)).toBe(value); +}); + +it.each([-1, 5, '4', null])('rejects input verification level %j', (value) => { + expect(GuildVerificationLevelInputSchema.safeParse(value).success).toBe(false); +}); + it.each([1, 2])('rejects legacy NSFW level %i', (value) => { expect(NSFWLevelSchema.safeParse(value).success).toBe(false); }); diff --git a/packages/schema/src/primitives/tests/UserValidators.test.ts b/packages/schema/src/primitives/tests/UserValidators.test.ts index b06a647c1..9ec70f847 100644 --- a/packages/schema/src/primitives/tests/UserValidators.test.ts +++ b/packages/schema/src/primitives/tests/UserValidators.test.ts @@ -6,7 +6,6 @@ import { EmailType, GlobalNameType, PasswordType, - PhoneNumberType, UsernameType, WebhookNameType, } from '@fluxer/schema/src/primitives/UserValidators'; @@ -217,40 +216,6 @@ describe('PasswordType', () => { }); }); -describe('PhoneNumberType', () => { - it('accepts valid E.164 phone numbers', () => { - const result = PhoneNumberType.parse('+14155551234'); - expect(result).toBe('+14155551234'); - }); - it('accepts international phone numbers', () => { - const result = PhoneNumberType.safeParse('+442071234567'); - expect(result.success).toBe(true); - }); - it('rejects phone numbers without plus prefix', () => { - const result = PhoneNumberType.safeParse('14155551234'); - expect(result.success).toBe(false); - if (!result.success) { - expect(result.error.issues[0].message).toBe(ValidationErrorCodes.PHONE_NUMBER_INVALID_FORMAT); - } - }); - it('rejects phone numbers starting with +0', () => { - const result = PhoneNumberType.safeParse('+04155551234'); - expect(result.success).toBe(false); - }); - it('rejects phone numbers with invalid characters', () => { - const result = PhoneNumberType.safeParse('+1-415-555-1234'); - expect(result.success).toBe(false); - }); - it('rejects phone numbers that are too short', () => { - const result = PhoneNumberType.safeParse('+1'); - expect(result.success).toBe(false); - }); - it('rejects phone numbers that are too long', () => { - const result = PhoneNumberType.safeParse('+1234567890123456'); - expect(result.success).toBe(false); - }); -}); - describe('WebhookNameType', () => { it('accepts valid webhook names', () => { const result = WebhookNameType.parse('My Webhook'); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63a03bb8e..ec36fe5ef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -264,9 +264,6 @@ catalogs: lexical: specifier: 0.50.0 version: 0.50.0 - libphonenumber-js: - specifier: 1.13.13 - version: 1.13.13 livekit-server-sdk: specifier: 2.19.0 version: 2.19.0 @@ -1495,9 +1492,6 @@ importers: lexical: specifier: 'catalog:' version: 0.50.0(typescript@7.0.2) - libphonenumber-js: - specifier: 'catalog:' - version: 1.13.13 livekit-client: specifier: workspace:* version: link:pkgs/livekit-client @@ -8576,9 +8570,6 @@ packages: engines: {node: '>=16'} hasBin: true - libphonenumber-js@1.13.13: - resolution: {integrity: sha512-hV6SmWnyQ8U1QXhhqbqYBHIStNnscG7A5XbGodgdHhf/8N5PwhYpJA5U/yHDjYwPYTd8uNGXqq416XctuvK2PA==} - lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -17702,8 +17693,6 @@ snapshots: dependencies: isomorphic.js: 0.2.5 - libphonenumber-js@1.13.13: {} - lightningcss-android-arm64@1.32.0: optional: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6ce4ede3d..4c2724b32 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -123,7 +123,6 @@ catalog: katex: 0.18.7 knip: 6.36.0 lexical: 0.50.0 - libphonenumber-js: 1.13.13 livekit-server-sdk: 2.19.0 lodash: 4.18.1 lru-cache: 11.5.2